From 7e093e9726d7017943f5b9c45470a2acd9024d70 Mon Sep 17 00:00:00 2001 From: hachem Date: Thu, 10 Sep 2026 20:20:14 +0200 Subject: feat: rt execution engine and circuit compute --- include/core/runtime.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 include/core/runtime.h (limited to 'include/core') diff --git a/include/core/runtime.h b/include/core/runtime.h new file mode 100644 index 0000000..9e7427e --- /dev/null +++ b/include/core/runtime.h @@ -0,0 +1,43 @@ +#pragma once + +#include +#include + +#include "core/circuit.h" +#include "maths/vector.h" + +#define PSI_PARALLEL_THRESHOLD 8 + +struct PsiRuntimeConfig +{ + bool parallel; + bool simd; + bool batched; + bool structure_aware; + size_t parallel_threshold; +}; + +enum PsiRuntime +{ + PSI_RUNTIME_BASIC, + PSI_RUNTIME_BASIC_MT, + PSI_RUNTIME_BATCHED, + PSI_RUNTIME_BATCHED_MT, + PSI_RUNTIME_SIMD, + PSI_RUNTIME_SIMD_MT, + PSI_RUNTIME_STRUCTURE_AWARE, + PSI_RUNTIME_STRUCTURE_AWARE_MT, +}; + +struct PsiRuntimeConfig psi_new_runtime_config(void); +struct PsiRuntimeConfig psi_optimal_runtime_config(void); +struct PsiRuntimeConfig psi_runtime_to_config(enum PsiRuntime runtime); + +struct PsiVector psi_compute_runtime_config(struct PsiRuntimeConfig config, size_t num_qubits, const struct PsiGateOp *operations, size_t op_count); +struct PsiVector psi_compute_runtime(enum PsiRuntime runtime, size_t num_qubits, const struct PsiGateOp *operations, size_t op_count); + +const struct PsiVector *psi_compute_circuit(struct PsiQuantumCircuit *circuit); +const struct PsiVector *psi_compute_circuit_with(struct PsiQuantumCircuit *circuit, enum PsiRuntime runtime); +const struct PsiVector *psi_compute_circuit_with_config(struct PsiQuantumCircuit *circuit, struct PsiRuntimeConfig config); +double psi_circuit_probability(struct PsiQuantumCircuit *circuit, size_t state_index); +void psi_circuit_probabilities(struct PsiQuantumCircuit *circuit, double *out); -- cgit v1.3