Loading examples/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ add_qcor_compile_and_exe_test(multi_ctrl_test ctrl-gates/multiple_controls.cpp) add_qcor_compile_and_exe_test(qrt_obj_func_simple simple/simple-objective-function.cpp) add_qcor_compile_and_exe_test(qrt_kernel_autograd_simple simple/gradients_optimization.cpp) add_qcor_compile_and_exe_test(qrt_bell_ctrl bell/bell_control.cpp) add_qcor_compile_and_exe_test(qrt_print_native_code simple/print_native_code.cpp) # Lambda tests add_qcor_compile_and_exe_test(qrt_qpu_lambda_simple qpu_lambda/lambda_test.cpp) Loading examples/simple/print_native_code.cpp 0 → 100644 +26 −0 Original line number Diff line number Diff line __qpu__ void bell(qreg q) { H(q[0]); CX(q[0], q[1]); Measure(q); } int main() { auto q = qalloc(2); // print_native_code for QuantumKernel bell::print_native_code(q); auto bell_lambda = qpu_lambda([](qreg q) { H(q[0]); X::ctrl(q[0], q[1]); Measure(q); }); // print_native_code for qpu_lambda bell_lambda.print_native_code(q); using BellSignature = KernelSignature<qreg>; BellSignature callable(bell); // print_native_code for KernelSignature callable.print_native_code(q); } runtime/kernel/quantum_kernel.hpp +5 −5 Original line number Diff line number Diff line Loading @@ -129,7 +129,7 @@ class QuantumKernel { static void print_native_code(std::ostream &os, Args... args) { Derived derived(args...); KernelSignature<Args...> callable(derived); return internal::print_kernel<Args...>(callable, os, {}, args...); return internal::print_native_code<Args...>(callable, os, {}, args...); } static void print_native_code(Args... args) { return print_native_code(std::cout, args...); Loading @@ -139,7 +139,7 @@ class QuantumKernel { Args... args) { Derived derived(args...); KernelSignature<Args...> callable(derived); return internal::print_kernel<Args...>(callable, os, options, args...); return internal::print_native_code<Args...>(callable, os, options, args...); } static void print_native_code(HeterogeneousMap options, Args... args) { return print_native_code(std::cout, options, args...); Loading Loading @@ -619,7 +619,7 @@ class _qpu_lambda { jit_src.insert(end, restore_string.str()); } std::cout << "JITSRC:\n" << jit_src << "\n"; // std::cout << "JITSRC:\n" << jit_src << "\n"; // JIT Compile, storing the function pointers qjit.jit_compile(jit_src); } Loading Loading @@ -755,7 +755,7 @@ class _qpu_lambda { template <typename... FunctionArgs> void print_native_code(std::ostream &os, FunctionArgs... args) { KernelSignature<FunctionArgs...> callable(*this); return internal::print_native_code<FunctionArgs...>(callable, os, args...); return internal::print_native_code<FunctionArgs...>(callable, os, {}, args...); } template <typename... FunctionArgs> void print_native_code(FunctionArgs... args) { Loading Loading @@ -901,7 +901,7 @@ class KernelSignature { void print_kernel(Args... args) { print_kernel(std::cout, args...); } void print_native_code(std::ostream &os, Args... args) { return internal::print_native_code<Args...>(*this, os, args...); return internal::print_native_code<Args...>(*this, os, {}, args...); } void print_native_code(Args... args) { return print_native_code(std::cout, args...); Loading Loading
examples/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ add_qcor_compile_and_exe_test(multi_ctrl_test ctrl-gates/multiple_controls.cpp) add_qcor_compile_and_exe_test(qrt_obj_func_simple simple/simple-objective-function.cpp) add_qcor_compile_and_exe_test(qrt_kernel_autograd_simple simple/gradients_optimization.cpp) add_qcor_compile_and_exe_test(qrt_bell_ctrl bell/bell_control.cpp) add_qcor_compile_and_exe_test(qrt_print_native_code simple/print_native_code.cpp) # Lambda tests add_qcor_compile_and_exe_test(qrt_qpu_lambda_simple qpu_lambda/lambda_test.cpp) Loading
examples/simple/print_native_code.cpp 0 → 100644 +26 −0 Original line number Diff line number Diff line __qpu__ void bell(qreg q) { H(q[0]); CX(q[0], q[1]); Measure(q); } int main() { auto q = qalloc(2); // print_native_code for QuantumKernel bell::print_native_code(q); auto bell_lambda = qpu_lambda([](qreg q) { H(q[0]); X::ctrl(q[0], q[1]); Measure(q); }); // print_native_code for qpu_lambda bell_lambda.print_native_code(q); using BellSignature = KernelSignature<qreg>; BellSignature callable(bell); // print_native_code for KernelSignature callable.print_native_code(q); }
runtime/kernel/quantum_kernel.hpp +5 −5 Original line number Diff line number Diff line Loading @@ -129,7 +129,7 @@ class QuantumKernel { static void print_native_code(std::ostream &os, Args... args) { Derived derived(args...); KernelSignature<Args...> callable(derived); return internal::print_kernel<Args...>(callable, os, {}, args...); return internal::print_native_code<Args...>(callable, os, {}, args...); } static void print_native_code(Args... args) { return print_native_code(std::cout, args...); Loading @@ -139,7 +139,7 @@ class QuantumKernel { Args... args) { Derived derived(args...); KernelSignature<Args...> callable(derived); return internal::print_kernel<Args...>(callable, os, options, args...); return internal::print_native_code<Args...>(callable, os, options, args...); } static void print_native_code(HeterogeneousMap options, Args... args) { return print_native_code(std::cout, options, args...); Loading Loading @@ -619,7 +619,7 @@ class _qpu_lambda { jit_src.insert(end, restore_string.str()); } std::cout << "JITSRC:\n" << jit_src << "\n"; // std::cout << "JITSRC:\n" << jit_src << "\n"; // JIT Compile, storing the function pointers qjit.jit_compile(jit_src); } Loading Loading @@ -755,7 +755,7 @@ class _qpu_lambda { template <typename... FunctionArgs> void print_native_code(std::ostream &os, FunctionArgs... args) { KernelSignature<FunctionArgs...> callable(*this); return internal::print_native_code<FunctionArgs...>(callable, os, args...); return internal::print_native_code<FunctionArgs...>(callable, os, {}, args...); } template <typename... FunctionArgs> void print_native_code(FunctionArgs... args) { Loading Loading @@ -901,7 +901,7 @@ class KernelSignature { void print_kernel(Args... args) { print_kernel(std::cout, args...); } void print_native_code(std::ostream &os, Args... args) { return internal::print_native_code<Args...>(*this, os, args...); return internal::print_native_code<Args...>(*this, os, {}, args...); } void print_native_code(Args... args) { return print_native_code(std::cout, args...); Loading