Commit 49761e6f authored by Mccaskey, Alex's avatar Mccaskey, Alex
Browse files

setup qir-qrt to add pass manager exec, fixed args in qcor driver

parent 079d4c4e
Loading
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -24,6 +24,19 @@ bool verbose = false;
bool external_qreg_provided = false;

bool initialized = false;

void print_help() {
  std::cout << "QCOR QIR Runtime Help Menu\n\n";
  std::cout << "optional arguments:\n";
  std::cout << "  -qpu QPUNAME[:BACKEND] | example -qpu ibm:ibmq_vigo, -qpu aer:ibmq_vigo\n";
  std::cout << "  -qrt QRT_MODE (can be nisq or ftqc) | example -qrt nisq\n";
  std::cout << "  -shots NUMSHOTS (number of shots to use in nisq run)\n";
  std::cout << "  -opt LEVEL | example -opt 1\n";
  std::cout << "  -print-opt-stats (turn on printout of optimization statistics) \n";
  std::cout << "  -v,-verbose,--verbose (run with printouts)\n\n";
  exit(0);
}

void __quantum__rt__initialize(int argc, int8_t** argv) {
  char** casted = reinterpret_cast<char**>(argv);
  std::vector<std::string> args(casted, casted + argc);
@@ -43,6 +56,15 @@ void __quantum__rt__initialize(int argc, int8_t** argv) {
      verbose = true;
    } else if (arg == "--verbose") {
      verbose = true;
    } else if (arg == "--help") {
      print_help();
    } else if (arg == "-h") {
      print_help();
    } else if (arg == "-opt") {
      xacc::internal_compiler::__opt_level =
        std::stoi(args[i+1]);
    } else if (arg == "-print-opt-stats") {
      xacc::internal_compiler::__print_opt_stats = true;
    }
  }

@@ -232,6 +254,7 @@ void __quantum__rt__qubit_release_array(Array* q) {
void __quantum__rt__finalize() {
  if (verbose) std::cout << "[qir-qrt] Running finalization routine.\n";
  if (mode == QRT_MODE::NISQ) {
    xacc::internal_compiler::execute_pass_manager();
    ::quantum::submit(qbits.get());
    auto counts = qbits->getMeasurementCounts();
    std::cout << "Observed Counts:\n";
@@ -239,6 +262,7 @@ void __quantum__rt__finalize() {
      std::cout << bits << " : " << count << "\n";
    }
  } else if (external_qreg_provided) {
    xacc::internal_compiler::execute_pass_manager();
    ::quantum::submit(qbits.get());
  }
}
 No newline at end of file
+7 −7
Original line number Diff line number Diff line
@@ -47,16 +47,16 @@ def main(argv=None):
        parser.add_argument('-L',action='append',nargs=1,metavar=('/path/to/libs'),help='specifiy additional linker search paths.')
        parser.add_argument('-l',action='append',nargs=1,metavar=('lib_name'),help='specifiy additional libraries to link.')
        parser.add_argument('-opt', nargs=1, help='specify level of quantum circuit optimization (1 or 2).')
        parser.add_argument('-print-opt-stats', help='print circuit optimization pass statistics.')
        parser.add_argument('-print-opt-stats', metavar='', help='print circuit optimization pass statistics.')
        parser.add_argument('-set-credentials', nargs=1, help='set api key and other credential information for remote qpu.\nMust provide at least -key KEY arguments. For IBM also specify -hub HUB -group GROUP -project PROJECT.')
        parser.add_argument('-print-credentials', nargs=1, help='print remote api credentials for given qpu name.')
        parser.add_argument('-update-credentials', nargs=1, help='set a specific credential for remote qpu access. Example\nqcor -update-credentials ibm -project MYOTHERPROJECT.')
        parser.add_argument('-xacc-install', nargs=1, help='returns the install directory for xacc.')
        parser.add_argument('-qcor-install', nargs=1, help='returns the install directory for qcor.')
        parser.add_argument('-clear-jit-cache', help='delete existing QJIT cache.')
        parser.add_argument('-xacc-version', nargs=1, help='returns the current build version for underlying xacc install.')
        parser.add_argument('-version', nargs=1, help='returns the current qcor build version.')
        parser.add_argument('-pythonpath', help='print the correct PYTHONPATH to leverage qcor and xacc python API.')
        parser.add_argument('-xacc-install', metavar='', help='returns the install directory for xacc.')
        parser.add_argument('-qcor-install', metavar='', help='returns the install directory for qcor.')
        parser.add_argument('-clear-jit-cache', metavar='', help='delete existing QJIT cache.')
        parser.add_argument('-xacc-version', metavar='', help='returns the current build version for underlying xacc install.')
        parser.add_argument('-version', metavar='', help='returns the current qcor build version.')
        parser.add_argument('-pythonpath', metavar='', help='print the correct PYTHONPATH to leverage qcor and xacc python API.')
        args = parser.parse_args(sys.argv)

    if '-pythonpath' in sys.argv[1:]: