Loading examples/qcor_demos/pirq_workshop/qcor/demo1_pass_manager/trotter_decompose.cpp +20 −3 Original line number Diff line number Diff line // trotter_decompose.cpp: Demonstrate runtime optimization passes (acting on XACC IR) // (with runtime information -> resolved/flattened circuit -> optimization) // Simplify Trotter circuit with many iterations to a shorter form // $qcor -opt 1 -print-opt-stats -print-final-submission trotter_decompose.cpp // $qcor -opt 2 -print-opt-stats -print-final-submission trotter_decompose.cpp // Run: // ./a.out -dt xxx -steps yyy __qpu__ void trotter_evolve(qreg q, Operator hamiltonian, double dt, int nbSteps) { for (int i = 0; i < nbSteps; ++i) { exp_i_theta(q, dt, hamiltonian); } } int main() { int main(int argc, char **argv) { auto qbits = qalloc(2); auto H = X(0) * X(1); // Multi-term Hamiltonian auto H = X(0) * X(1) + Z(0) + Z(1); // Default params: double dt = 0.01; int nbSteps = 100; // Parse user-supplied params (if any) std::vector<std::string> arguments(argv + 1, argv + argc); for (int i = 0; i < arguments.size(); i++) { if (arguments[i] == "-dt") { dt = std::stod(arguments[i + 1]); } if (arguments[i] == "-steps") { nbSteps = std::stoi(arguments[i + 1]); } } std::cout << "Trotter for dt = " << dt << "; steps = " << nbSteps << "\n"; trotter_evolve(qbits, H, dt, nbSteps); } No newline at end of file Loading
examples/qcor_demos/pirq_workshop/qcor/demo1_pass_manager/trotter_decompose.cpp +20 −3 Original line number Diff line number Diff line // trotter_decompose.cpp: Demonstrate runtime optimization passes (acting on XACC IR) // (with runtime information -> resolved/flattened circuit -> optimization) // Simplify Trotter circuit with many iterations to a shorter form // $qcor -opt 1 -print-opt-stats -print-final-submission trotter_decompose.cpp // $qcor -opt 2 -print-opt-stats -print-final-submission trotter_decompose.cpp // Run: // ./a.out -dt xxx -steps yyy __qpu__ void trotter_evolve(qreg q, Operator hamiltonian, double dt, int nbSteps) { for (int i = 0; i < nbSteps; ++i) { exp_i_theta(q, dt, hamiltonian); } } int main() { int main(int argc, char **argv) { auto qbits = qalloc(2); auto H = X(0) * X(1); // Multi-term Hamiltonian auto H = X(0) * X(1) + Z(0) + Z(1); // Default params: double dt = 0.01; int nbSteps = 100; // Parse user-supplied params (if any) std::vector<std::string> arguments(argv + 1, argv + argc); for (int i = 0; i < arguments.size(); i++) { if (arguments[i] == "-dt") { dt = std::stod(arguments[i + 1]); } if (arguments[i] == "-steps") { nbSteps = std::stoi(arguments[i + 1]); } } std::cout << "Trotter for dt = " << dt << "; steps = " << nbSteps << "\n"; trotter_evolve(qbits, H, dt, nbSteps); } No newline at end of file