From e75de99a233f446d7ee1d80d5b2af24e9edf822e Mon Sep 17 00:00:00 2001 From: hachem Date: Mon, 7 Sep 2026 00:41:20 +0200 Subject: add: structure-aware kernel batch --- tester/main.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'tester/main.c') diff --git a/tester/main.c b/tester/main.c index 020b230..57fc7ca 100644 --- a/tester/main.c +++ b/tester/main.c @@ -166,5 +166,31 @@ int main(void) psi_free_vector(&state); psi_free_kernel_batch(&batch); + + struct PsiStructureAwareBatch sa = psi_new_structure_aware_batch(2); + struct PsiQuantumGate hg2 = psi_hadamard_gate(); + struct PsiQuantumGate xg2 = psi_pauli_x_gate(); + size_t q0[] = { 0 }; + size_t q1[] = { 1 }; + psi_add_structure_aware_kernel(&sa, psi_new_kernel("H", psi_clone_matrix(hg2.matrix), q0, 1)); + psi_add_structure_aware_kernel(&sa, psi_new_kernel("X", psi_clone_matrix(xg2.matrix), q1, 1)); + psi_add_structure_aware_kernel(&sa, psi_new_kernel("H", psi_clone_matrix(hg2.matrix), q0, 1)); + psi_free_quantum_gate(&hg2); + psi_free_quantum_gate(&xg2); + + psi_optimize_structure_aware_batch(&sa); + struct PsiKernelStats stats = psi_structure_aware_batch_stats(sa); + + struct PsiQuantumRegister r = psi_new_quantum_register("r", names, 2); + struct PsiVector sast = psi_clone_vector(r.state_vector); + psi_free_quantum_register(&r); + psi_execute_structure_aware_batch_layered(sa, &sast); + + printf("sa = %zu kernels, %zu layers -> [%g, %g, %g, %g]\n", + stats.total_kernels, stats.execution_layers, + sast.data[0].real, sast.data[1].real, sast.data[2].real, sast.data[3].real); + + psi_free_vector(&sast); + psi_free_structure_aware_batch(&sa); } -- cgit v1.3