diff options
Diffstat (limited to 'include/core/kernel.h')
| -rw-r--r-- | include/core/kernel.h | 37 |
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); |
