Commit 962f4082 authored by Mccaskey, Alex's avatar Mccaskey, Alex
Browse files

Final cleanup (i think), existing tests are now passing

parent 23ce9bb1
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -28,6 +28,6 @@ add_subdirectory(tools)
add_subdirectory(lib)

if (QCOR_BUILD_TESTS)
  #add_subdirectory(examples)
  add_subdirectory(examples)
endif()

examples/circuit_opt/grover.cpp

deleted100644 → 0
+0 −36
Original line number Diff line number Diff line
// Demonstrate loading openqasm file with
// #include call, the
// qcor::measure_all API call, and programmatically
// optimizing a quantum kernel.
//
// run this with
// qcor -qrt -qpu aer grover.cpp
// ./a.out

#include "qcor.hpp"

__qpu__ void grover_5(qreg q) {
  using qcor::openqasm;

#include "grover_5.qasm"
}

int main() {

  // Allocate the qubits
  auto q = qalloc(9);

  // This kernel is unmeasured,
  // add measures to them
  auto measure_grov = qcor::measure_all(grover_5, q);

  std::cout << "Number of Gates Before: "
            << qcor::n_instructions(measure_grov, q) << "\n";

  // Apply some circuit optimizations
  auto optimized_kernel = qcor::apply_transformations(
      measure_grov, {"circuit-optimizer", "rotation-folding"}, q);

  std::cout << "Number of Gates After: "
            << qcor::n_instructions(optimized_kernel, q) << "\n";
}
 No newline at end of file
+0 −164
Original line number Diff line number Diff line
OPENQASM 2.0;
include "qelib1.inc";

qreg qubits[9];
creg c[9];
x qubits[5];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[8];
h qubits[5];
ccx qubits[4],qubits[8],qubits[5];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[4];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[4],qubits[8],qubits[5];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[4];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[4],qubits[8],qubits[5];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[4];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[4],qubits[8],qubits[5];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[4];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];

examples/circuit_opt/mod5_4.cpp

deleted100644 → 0
+0 −39
Original line number Diff line number Diff line
// Demonstrate loading openqasm file with
// #include call, the
// qcor::measure_all API call, and programmatically
// optimizing a quantum kernel.
//
// run this with
// qcor -qrt -qpu aer mod5_4.cpp
// ./a.out

#include "qcor.hpp"

__qpu__ void mod5_4(qreg q) {
  using qcor::openqasm;

#include "mod5_4.qasm"
}

int main() {

  // Allocate the qubits
  auto q = qalloc(5);

  // This kernel is unmeasured,
  // add measures to them
  auto measured = qcor::measure_all(mod5_4, q);

  std::cout << "Number of Gates Before: "
            << qcor::n_instructions(measured, q) << "\n";

  // Apply some circuit optimizations
  auto optimized_kernel = qcor::apply_transformations(
      measured, {"circuit-optimizer", "rotation-folding"}, q);

  std::cout << "Number of Gates After: "
            << qcor::n_instructions(optimized_kernel, q) << "\n";
    
  optimized_kernel(q);
  q.print();
}
 No newline at end of file

examples/circuit_opt/mod5_4.qasm

deleted100644 → 0
+0 −13
Original line number Diff line number Diff line
OPENQASM 2.0;
include "qelib1.inc";

qreg qubits[5];
x qubits[4];
ccx qubits[0],qubits[3],qubits[4];
ccx qubits[2],qubits[3],qubits[4];
cx qubits[3],qubits[4];
ccx qubits[1],qubits[2],qubits[4];
cx qubits[2],qubits[4];
ccx qubits[0],qubits[1],qubits[4];
cx qubits[1],qubits[4];
cx qubits[0],qubits[4];
Loading