Unverified Commit aac487e0 authored by Mccaskey, Alex's avatar Mccaskey, Alex Committed by GitHub
Browse files

Merge pull request #140 from tnguyen-ornl/tnguyen/fix-jit-dtor

LLVMJIT DTor: properly ending the session
parents cbd50c88 6d6c81f6
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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)
+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
+7 −0
Original line number Diff line number Diff line
@@ -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();