aboutsummaryrefslogtreecommitdiff
path: root/include/core
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-09-07 00:41:20 +0200
committerhachem <im@hachem.wtf>2026-09-07 00:41:20 +0200
commite75de99a233f446d7ee1d80d5b2af24e9edf822e (patch)
tree24e0501eab7c73a156a777a83f52e72a2a96dc7e /include/core
parentaaea07b252f3a668d2b321765770f09759365356 (diff)
add: structure-aware kernel batch
Diffstat (limited to 'include/core')
-rw-r--r--include/core/kernel.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/core/kernel.h b/include/core/kernel.h
index f827731..1bd2d7e 100644
--- a/include/core/kernel.h
+++ b/include/core/kernel.h
@@ -44,3 +44,40 @@ void psi_free_kernel_batch(struct PsiKernelBatch *batch);
void psi_add_kernel(struct PsiKernelBatch *batch, struct PsiKernel kernel);
void psi_optimize_kernel_batch(struct PsiKernelBatch *batch);
void psi_execute_kernel_batch(struct PsiKernelBatch batch, struct PsiVector *state);
+
+struct PsiExecutionLayer
+{
+ struct PsiKernel *kernels;
+ size_t count;
+ size_t capacity;
+};
+
+struct PsiKernelStats
+{
+ size_t total_kernels;
+ size_t single_qubit;
+ size_t two_qubit;
+ size_t multi_qubit;
+ size_t diagonal;
+ size_t execution_layers;
+};
+
+struct PsiStructureAwareBatch
+{
+ struct PsiKernel *kernels;
+ size_t count;
+ size_t capacity;
+ struct PsiExecutionLayer *layers;
+ size_t layer_count;
+ size_t layer_capacity;
+ size_t num_qubits;
+ bool optimised;
+};
+
+struct PsiStructureAwareBatch psi_new_structure_aware_batch(size_t num_qubits);
+void psi_free_structure_aware_batch(struct PsiStructureAwareBatch *batch);
+void psi_add_structure_aware_kernel(struct PsiStructureAwareBatch *batch, struct PsiKernel kernel);
+void psi_optimize_structure_aware_batch(struct PsiStructureAwareBatch *batch);
+void psi_execute_structure_aware_batch(struct PsiStructureAwareBatch batch, struct PsiVector *state);
+void psi_execute_structure_aware_batch_layered(struct PsiStructureAwareBatch batch, struct PsiVector *state);
+struct PsiKernelStats psi_structure_aware_batch_stats(struct PsiStructureAwareBatch batch);