Loading examples/CMakeLists.txt +5 −4 Original line number Diff line number Diff line Loading @@ -6,11 +6,12 @@ add_test(NAME qrt_deuteron_exp_inst COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_ add_test(NAME qrt_deuteron_task_initiate COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/deuteron/deuteron_task_initiate.cpp) add_test(NAME qrt_qaoa_example COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/qaoa/qaoa_example.cpp) add_test(NAME qrt_simple-objective-function COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/simple/simple-objective-function.cpp) add_test(NAME qrt_qpe_example COMMAND ${CMAKE_BINARY_DIR}/qcor -c -I${CMAKE_CURRENT_SOURCE_DIR}/shared ${CMAKE_CURRENT_SOURCE_DIR}/qpe/qpe_example_qrt.cpp) add_test(NAME qrt_kernel_include COMMAND ${CMAKE_BINARY_DIR}/qcor -c -I${CMAKE_CURRENT_SOURCE_DIR}/shared ${CMAKE_CURRENT_SOURCE_DIR}/simple/multiple_kernels.cpp) add_test(NAME qrt_period_finding COMMAND ${CMAKE_BINARY_DIR}/qcor -c -I${CMAKE_CURRENT_SOURCE_DIR}/shared ${CMAKE_CURRENT_SOURCE_DIR}/simple/period_finding.cpp) add_test(NAME qrt_qpe_example COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/qpe/qpe_example_qrt.cpp) add_test(NAME qrt_kernel_include COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/simple/multiple_kernels.cpp) add_test(NAME qrt_period_finding COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/simple/period_finding.cpp) add_test(NAME qrt_grover COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/grover/grover.cpp) add_test(NAME qrt_adapt COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/hybrid/adapt_h2.cpp) add_test(NAME qrt_ftqc_simple COMMAND ${CMAKE_BINARY_DIR}/qcor -c -qrt ftqc ${CMAKE_CURRENT_SOURCE_DIR}/ftqc_qrt/simple-demo.cpp) add_test(NAME qrt_ftqc_rus COMMAND ${CMAKE_BINARY_DIR}/qcor -c -qrt ftqc ${CMAKE_CURRENT_SOURCE_DIR}/ftqc_qrt/repeat-until-success.cpp) add_test(NAME qrt_ftqc_qec COMMAND ${CMAKE_BINARY_DIR}/qcor -c -qrt ftqc ${CMAKE_CURRENT_SOURCE_DIR}/ftqc_qrt/bit-flip-code.cpp) add_test(NAME qrt_ftqc_deuteron COMMAND ${CMAKE_BINARY_DIR}/qcor -c -qrt ftqc ${CMAKE_CURRENT_SOURCE_DIR}/ftqc_qrt/deuteron.cpp) No newline at end of file examples/ftqc_qrt/deuteron.cpp 0 → 100644 +33 −0 Original line number Diff line number Diff line #include <qcor_vqe> // Compile with: // qcor -qpu qpp -qrt ftqc deuteron.cpp __qpu__ void ansatz(qreg q, double theta) { X(q[0]); Ry(q[1], theta); CX(q[1], q[0]); } int main(int argc, char **argv) { // Allocate 2 qubits auto q = qalloc(2); // 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 optimizer = createOptimizer("nlopt"); OptFunction f( [&](const std::vector<double> &x, std::vector<double> &dx) { const double angle = x[0]; auto statePrep = std::function<void(qreg)>{[angle](qreg q) { ansatz(q, angle); }}; double energy = 0.0; ftqc::estimate_energy(q, statePrep, H, 1024, energy); std::cout << "Energy(" << angle << ") = " << energy << "\n"; return energy; }, 1); auto result = optimizer->optimize(f); std::cout << "Min Energy = " << result.first << "\n"; } examples/ftqc_qrt/run-with-shots.cpp 0 → 100644 +29 −0 Original line number Diff line number Diff line // Compile with: qcor -qpu qpp -qrt ftqc -shots 1024 run-with-shots.cpp // Define sub-kernel to print out FTQC execution __qpu__ void h_gate(qreg q) { std::cout << "Run H\n"; H(q[0]); } __qpu__ void cx_gate(qreg q) { std::cout << "Run CNOT\n"; CX(q[0], q[1]); } __qpu__ void bell(qreg q) { h_gate(q); cx_gate(q); const bool q0Result = Measure(q[0]); const bool q1Result = Measure(q[1]); if (q0Result == q1Result) { std::cout << " Matched!\n"; } else { std::cout << "NOT Matched!\n"; } } int main() { auto q = qalloc(2); bell(q); q.print(); } examples/qpe/qpe_example_qrt.cpp +1 −1 Original line number Diff line number Diff line // Use the pre-defined IQFT kernel #include "qft.hpp" #include <qcor_qft> // using namespace qcor; Loading examples/simple/multiple_kernels.cpp +1 −1 Original line number Diff line number Diff line // The header file which contains QFT kernel def #include "qft.hpp" #include <qcor_qft> // Entry point kernel __qpu__ void f(qreg q) { Loading Loading
examples/CMakeLists.txt +5 −4 Original line number Diff line number Diff line Loading @@ -6,11 +6,12 @@ add_test(NAME qrt_deuteron_exp_inst COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_ add_test(NAME qrt_deuteron_task_initiate COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/deuteron/deuteron_task_initiate.cpp) add_test(NAME qrt_qaoa_example COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/qaoa/qaoa_example.cpp) add_test(NAME qrt_simple-objective-function COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/simple/simple-objective-function.cpp) add_test(NAME qrt_qpe_example COMMAND ${CMAKE_BINARY_DIR}/qcor -c -I${CMAKE_CURRENT_SOURCE_DIR}/shared ${CMAKE_CURRENT_SOURCE_DIR}/qpe/qpe_example_qrt.cpp) add_test(NAME qrt_kernel_include COMMAND ${CMAKE_BINARY_DIR}/qcor -c -I${CMAKE_CURRENT_SOURCE_DIR}/shared ${CMAKE_CURRENT_SOURCE_DIR}/simple/multiple_kernels.cpp) add_test(NAME qrt_period_finding COMMAND ${CMAKE_BINARY_DIR}/qcor -c -I${CMAKE_CURRENT_SOURCE_DIR}/shared ${CMAKE_CURRENT_SOURCE_DIR}/simple/period_finding.cpp) add_test(NAME qrt_qpe_example COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/qpe/qpe_example_qrt.cpp) add_test(NAME qrt_kernel_include COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/simple/multiple_kernels.cpp) add_test(NAME qrt_period_finding COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/simple/period_finding.cpp) add_test(NAME qrt_grover COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/grover/grover.cpp) add_test(NAME qrt_adapt COMMAND ${CMAKE_BINARY_DIR}/qcor -c ${CMAKE_CURRENT_SOURCE_DIR}/hybrid/adapt_h2.cpp) add_test(NAME qrt_ftqc_simple COMMAND ${CMAKE_BINARY_DIR}/qcor -c -qrt ftqc ${CMAKE_CURRENT_SOURCE_DIR}/ftqc_qrt/simple-demo.cpp) add_test(NAME qrt_ftqc_rus COMMAND ${CMAKE_BINARY_DIR}/qcor -c -qrt ftqc ${CMAKE_CURRENT_SOURCE_DIR}/ftqc_qrt/repeat-until-success.cpp) add_test(NAME qrt_ftqc_qec COMMAND ${CMAKE_BINARY_DIR}/qcor -c -qrt ftqc ${CMAKE_CURRENT_SOURCE_DIR}/ftqc_qrt/bit-flip-code.cpp) add_test(NAME qrt_ftqc_deuteron COMMAND ${CMAKE_BINARY_DIR}/qcor -c -qrt ftqc ${CMAKE_CURRENT_SOURCE_DIR}/ftqc_qrt/deuteron.cpp) No newline at end of file
examples/ftqc_qrt/deuteron.cpp 0 → 100644 +33 −0 Original line number Diff line number Diff line #include <qcor_vqe> // Compile with: // qcor -qpu qpp -qrt ftqc deuteron.cpp __qpu__ void ansatz(qreg q, double theta) { X(q[0]); Ry(q[1], theta); CX(q[1], q[0]); } int main(int argc, char **argv) { // Allocate 2 qubits auto q = qalloc(2); // 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 optimizer = createOptimizer("nlopt"); OptFunction f( [&](const std::vector<double> &x, std::vector<double> &dx) { const double angle = x[0]; auto statePrep = std::function<void(qreg)>{[angle](qreg q) { ansatz(q, angle); }}; double energy = 0.0; ftqc::estimate_energy(q, statePrep, H, 1024, energy); std::cout << "Energy(" << angle << ") = " << energy << "\n"; return energy; }, 1); auto result = optimizer->optimize(f); std::cout << "Min Energy = " << result.first << "\n"; }
examples/ftqc_qrt/run-with-shots.cpp 0 → 100644 +29 −0 Original line number Diff line number Diff line // Compile with: qcor -qpu qpp -qrt ftqc -shots 1024 run-with-shots.cpp // Define sub-kernel to print out FTQC execution __qpu__ void h_gate(qreg q) { std::cout << "Run H\n"; H(q[0]); } __qpu__ void cx_gate(qreg q) { std::cout << "Run CNOT\n"; CX(q[0], q[1]); } __qpu__ void bell(qreg q) { h_gate(q); cx_gate(q); const bool q0Result = Measure(q[0]); const bool q1Result = Measure(q[1]); if (q0Result == q1Result) { std::cout << " Matched!\n"; } else { std::cout << "NOT Matched!\n"; } } int main() { auto q = qalloc(2); bell(q); q.print(); }
examples/qpe/qpe_example_qrt.cpp +1 −1 Original line number Diff line number Diff line // Use the pre-defined IQFT kernel #include "qft.hpp" #include <qcor_qft> // using namespace qcor; Loading
examples/simple/multiple_kernels.cpp +1 −1 Original line number Diff line number Diff line // The header file which contains QFT kernel def #include "qft.hpp" #include <qcor_qft> // Entry point kernel __qpu__ void f(qreg q) { Loading