Loading examples/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ add_qcor_compile_and_exe_test(qrt_bell_ctrl bell/bell_control.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_simple qpu_lambda/lambda_test.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_bell qpu_lambda/lambda_test_bell.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_grover qpu_lambda/grover_lambda_oracle.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambdas_in_loop qpu_lambda/deuteron_lambda.cpp) # Arithmetic tests add_qcor_compile_and_exe_test(qrt_qpu_arith_adder arithmetic/simple.cpp) Loading examples/qpu_lambda/deuteron_lambda.cpp 0 → 100644 +30 −0 Original line number Diff line number Diff line int main() { // Create the Deuteron Hamiltonian auto H = 5.907 - 2.1433 * X(0) * X(1) - 2.1433 * Y(0) * Y(1) + .21829 * Z(0) - 6.125 * Z(1); auto terms = H.getNonIdentitySubTerms(); // Test repeated lambda creation. for (auto term : terms) { auto pop = std::dynamic_pointer_cast<PauliOperator>(term); assert(pop && pop->nTerms() == 1); auto [zv, xv] = pop->toBinaryVectors(2); auto l = qpu_lambda( [](qreg q) { for (auto [i, x_val] : enumerate(xv)) { auto z_val = zv[i]; if (x_val == z_val) { Y(q[i]); } else if (x_val == 0) { Z(q[i]); } else { X(q[i]); } } }, xv, zv); } } No newline at end of file runtime/jit/qcor_jit.in.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -336,6 +336,13 @@ class LLVMJIT { llvm::sys::DynamicLibrary::LoadLibraryPermanently(nullptr); } ~LLVMJIT() { // End the session. if (auto Err = ES.endSession()) { ES.reportError(std::move(Err)); } } static Expected<std::unique_ptr<LLVMJIT>> Create() { auto JTMB = JITTargetMachineBuilder::detectHost(); Loading Loading
examples/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ add_qcor_compile_and_exe_test(qrt_bell_ctrl bell/bell_control.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_simple qpu_lambda/lambda_test.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_bell qpu_lambda/lambda_test_bell.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_grover qpu_lambda/grover_lambda_oracle.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambdas_in_loop qpu_lambda/deuteron_lambda.cpp) # Arithmetic tests add_qcor_compile_and_exe_test(qrt_qpu_arith_adder arithmetic/simple.cpp) Loading
examples/qpu_lambda/deuteron_lambda.cpp 0 → 100644 +30 −0 Original line number Diff line number Diff line int main() { // Create the Deuteron Hamiltonian auto H = 5.907 - 2.1433 * X(0) * X(1) - 2.1433 * Y(0) * Y(1) + .21829 * Z(0) - 6.125 * Z(1); auto terms = H.getNonIdentitySubTerms(); // Test repeated lambda creation. for (auto term : terms) { auto pop = std::dynamic_pointer_cast<PauliOperator>(term); assert(pop && pop->nTerms() == 1); auto [zv, xv] = pop->toBinaryVectors(2); auto l = qpu_lambda( [](qreg q) { for (auto [i, x_val] : enumerate(xv)) { auto z_val = zv[i]; if (x_val == z_val) { Y(q[i]); } else if (x_val == 0) { Z(q[i]); } else { X(q[i]); } } }, xv, zv); } } No newline at end of file
runtime/jit/qcor_jit.in.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -336,6 +336,13 @@ class LLVMJIT { llvm::sys::DynamicLibrary::LoadLibraryPermanently(nullptr); } ~LLVMJIT() { // End the session. if (auto Err = ES.endSession()) { ES.reportError(std::move(Err)); } } static Expected<std::unique_ptr<LLVMJIT>> Create() { auto JTMB = JITTargetMachineBuilder::detectHost(); Loading