Commit e225f927 authored by Nguyen, Thien Minh's avatar Nguyen, Thien Minh
Browse files

Added qsim QITE test



Signed-off-by: default avatarThien Nguyen <nguyentm@ornl.gov>
parent 94c27726
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -104,10 +104,10 @@ QiteWorkflow::execute(const QuantumSimulationModel &model) {
  };
  
  // Cost function (observable) evaluator
  evaluator = getEvaluator(model.observable, config_params);
  auto calcCurrentEnergy = [&](){
    // Trotter kernel up to this point
    auto propagateKernel = constructPropagateCircuit(approxOps, model.user_defined_ansatz, stepSize);
    evaluator = getEvaluator(model.observable, config_params);
    return evaluator->evaluate(propagateKernel);
  };

+6 −1
Original line number Diff line number Diff line
@@ -9,3 +9,8 @@ add_executable(QaoaWorkflowTester QaoaWorkflowTester.cpp)
add_test(NAME QaoaWorkflowTester COMMAND QaoaWorkflowTester)
target_include_directories(QaoaWorkflowTester PRIVATE ../../ ../../../base ${XACC_ROOT}/include/gtest)
target_link_libraries(QaoaWorkflowTester ${XACC_TEST_LIBRARIES} xacc::xacc xacc::quantum_gate qcor-qsim)

add_executable(QiteWorkflowTester QiteWorkflowTester.cpp)
add_test(NAME QiteWorkflowTester COMMAND QiteWorkflowTester)
target_include_directories(QiteWorkflowTester PRIVATE ../../ ../../../base ${XACC_ROOT}/include/gtest)
target_link_libraries(QiteWorkflowTester ${XACC_TEST_LIBRARIES} xacc::xacc xacc::quantum_gate qcor-qsim)
 No newline at end of file
+33 −0
Original line number Diff line number Diff line
#include "qcor.hpp"
#include "qcor_qsim.hpp"
#include "xacc.hpp"
#include <gtest/gtest.h>

TEST(QiteWorkflowTester, checkSimple) {
  using namespace qcor;
  auto observable = 0.7071067811865475 * X(0) + 0.7071067811865475 * Z(0);
  xacc::internal_compiler::qpu = xacc::getAccelerator("qpp");
  const int nbSteps = 25;
  const double stepSize = 0.1;
  auto problemModel = qsim::ModelBuilder::createModel(&observable);
  auto workflow =
      qsim::getWorkflow("qite", {{"steps", nbSteps}, {"step-size", stepSize}});
  auto result = workflow->execute(problemModel);
  const auto energy = result.get<double>("energy");
  const auto energyAtStep = result.get<std::vector<double>>("exp-vals");
  for (const auto &val : energyAtStep) {
    std::cout << val << "\n";
  }
  // Minimal Energy = -1
  EXPECT_NEAR(energy, -1.0, 1e-2);
  auto finalCircuit = result.getPointerLike<xacc::CompositeInstruction>("circuit");
  std::cout << "HOWDY:\n" << finalCircuit->toString() << "\n";
}

int main(int argc, char **argv) {
  xacc::Initialize();
  ::testing::InitGoogleTest(&argc, argv);
  auto ret = RUN_ALL_TESTS();
  xacc::Finalize();
  return ret;
}
 No newline at end of file