Loading compiler/qcor-driver.in.cpp +17 −12 Original line number Diff line number Diff line Loading @@ -22,8 +22,8 @@ #include "fuzzy_parsing.hpp" #include "xacc.hpp" #include "qcor_ast_consumer.hpp" #include "xacc.hpp" #include "xacc_service.hpp" using namespace clang; Loading Loading @@ -57,7 +57,6 @@ protected: // fuzzyParser->setFileManager(&CI.getFileManager()); CI.getSema().addExternalSource(fuzzyParser.get()); // FIXME Hook this back up // auto pragmaHandlers = // xacc::getServices<qcor::compiler::QCORPragmaHandler>(); for (auto p : Loading Loading @@ -145,20 +144,26 @@ int main(int argc, char **argv) { std::vector<std::string> args{"-Wno-dangling", "-std=c++14", "-I@CMAKE_INSTALL_PREFIX@/include/qcor", "-I@CMAKE_INSTALL_PREFIX@/include/xacc"}; std::string accName = ""; std::vector<std::string> arguments(argv + 1, argv + argc); // Add incoming includes... for (int i = 0; i < arguments.size(); i++) { if (arguments[i] == "-I") { // std::cout << "Adding " << arguments[i+1] << "\n"; if (arguments[i+1] != "@CMAKE_INSTALL_PREFIX@/include/qcor" && arguments[i+1] != "@CMAKE_INSTALL_PREFIX@/include/xacc") { if (arguments[i + 1] != "@CMAKE_INSTALL_PREFIX@/include/qcor" && arguments[i + 1] != "@CMAKE_INSTALL_PREFIX@/include/xacc") { args.push_back(arguments[i] + arguments[i + 1]); } } else if (arguments[i].find("-I") != std::string::npos) { args.push_back(arguments[i]); } else if (arguments[i] == "--accelerator") { accName = arguments[i + 1]; } else if (arguments[i] == "-a") { accName = arguments[i + 1]; } } // args.insert(args.end(), arguments.begin(), arguments.end()); xacc::setAccelerator(accName); if (!tooling::runToolOnCodeWithArgs(action, src, args)) { xacc::error("Error running qcor compiler."); } Loading compiler/qcor_ast_visitor.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -104,8 +104,9 @@ bool QCORASTVisitor::VisitLambdaExpr(LambdaExpr *LE) { "installed."); } } targetAccelerator = xacc::getAccelerator(); auto acceleratorName = xacc::getAccelerator()->name(); auto acceleratorName = targetAccelerator->name(); // std::cout << "LAMBDA STR:\n" << xaccKernelLambdaStr << "\n"; auto compiler = xacc::getCompiler("xasm"); Loading Loading @@ -161,7 +162,7 @@ bool QCORASTVisitor::VisitLambdaExpr(LambdaExpr *LE) { std::stringstream ss; function->persist(ss); std::string replacement = "\n{std::istringstream iss(R\"(" + ss.str() + ")\");\n"; "{\nstd::istringstream iss(R\"(" + ss.str() + ")\");\n"; replacement += "auto function = " "xacc::getIRProvider(\"quantum\")->createComposite(\"f\");\n"; Loading @@ -176,7 +177,7 @@ bool QCORASTVisitor::VisitLambdaExpr(LambdaExpr *LE) { replacement += "function->expand({" + makePairStr + "});\n"; replacement += "if (qcor::__internal::executeKernel) {\n"; replacement += "auto acc = xacc::getAccelerator(\"" + acceleratorName + "\");\n"; "auto acc = xacc::getAccelerator(function->accelerator_signature());\n"; if (F->getNumParams() > 1) { replacement += "std::vector<double> params{" + F->getParamDecl(1)->getNameAsString(); Loading runtime/qcor.hpp +6 −6 Original line number Diff line number Diff line Loading @@ -193,7 +193,7 @@ add(QuantumKernelA &qka, QuantumKernelB &qkb, Args... args) { qcor::__internal::constructInitialParameters(tmp, args...); std::vector<double> params = tmp.get<std::vector<double>>("initial-parameters"); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function1->accelerator_signature()); auto evaled = function1->operator()(params); accelerator->execute(q, evaled); } Loading Loading @@ -237,7 +237,7 @@ public: auto function = qcor::__internal::getCompositeInstruction(kernel, args...); auto nLogicalBits = function->nLogicalBits(); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function->accelerator_signature()); if (!buffer) { buffer = xacc::qalloc(nLogicalBits); Loading Loading @@ -270,7 +270,7 @@ public: auto function = qcor::__internal::getCompositeInstruction(kernel, args...); auto nLogicalBits = function->nLogicalBits(); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function->accelerator_signature()); if (!buffer) { buffer = xacc::qalloc(nLogicalBits); Loading @@ -285,7 +285,7 @@ public: auto function = qcor::__internal::getCompositeInstruction(kernel, args...); auto nLogicalBits = function->nLogicalBits(); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function->accelerator_signature()); if (!buffer) { buffer = xacc::qalloc(nLogicalBits); } Loading Loading @@ -323,7 +323,7 @@ taskInitiate(QuantumKernel &&kernel, const std::string objectiveFunctionName, auto function = qcor::__internal::getCompositeInstruction(kernel, args...); auto nLogicalBits = function->nLogicalBits(); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function->accelerator_signature()); auto buffer = xacc::qalloc(nLogicalBits); HeterogeneousMap m{std::make_pair("observable", observable), Loading @@ -342,7 +342,7 @@ Handle taskInitiate(QuantumKernel &&kernel, return qcor::submit([&](qcor::qpu_handler &q) { auto function = qcor::__internal::getCompositeInstruction(kernel, args...); auto nLogicalBits = function->nLogicalBits(); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function->accelerator_signature()); auto buffer = xacc::qalloc(nLogicalBits); std::string allZsObsStr = ""; for (int i = 0; i < nLogicalBits; i++) { Loading runtime/tests/test_bell_state.cpp +0 −2 Original line number Diff line number Diff line Loading @@ -3,8 +3,6 @@ TEST(bell_state_tester, check_bell_state) { xacc::setAccelerator("local-ibm"); auto bell = [&](qbit q) { H(q[0]); CX(q[0],q[1]); Loading scripts/qcor.in +29 −19 Original line number Diff line number Diff line Loading @@ -21,6 +21,22 @@ def main(argv=None): if '--qcor-verbose' in sys.argv[1:]: verbose=True sys.argv.remove('--qcor-verbose') hasAcc = False accName = '' if '--accelerator' in sys.argv[1:]: hasAcc = True accidx = sys.argv.index('--accelerator') accName = sys.argv[accidx+1] sys.argv.remove(accName) sys.argv.remove('--accelerator') if '-a' in sys.argv[1:]: hasAcc = True accidx = sys.argv.index('-a') accName = sys.argv[accidx+1] sys.argv.remove(accName) sys.argv.remove('-a') filename = '' fileType = '' Loading @@ -35,17 +51,11 @@ def main(argv=None): idx = tmpFileName.find('.') expectedFile = '.'+tmpFileName[:idx]+'_out'+tmpFileName[idx:] sys.argv[0] = 'qcor-driver' if hasAcc: commands = [sys.argv[0]] + baseIncludes + ['--accelerator',accName] + sys.argv[1:] else: commands = [sys.argv[0]] + baseIncludes + sys.argv[1:] try: commands.remove('-std=gnu++14') commands.remove('-fPIE') except ValueError: pass try: commands.remove('-fPIE') except ValueError: pass #sys.argv[fileIdx+1:fileIdx+1] = baseIncludes if verbose: print('QCOR Driver: ', ' '.join([c for c in commands])) try: Loading Loading
compiler/qcor-driver.in.cpp +17 −12 Original line number Diff line number Diff line Loading @@ -22,8 +22,8 @@ #include "fuzzy_parsing.hpp" #include "xacc.hpp" #include "qcor_ast_consumer.hpp" #include "xacc.hpp" #include "xacc_service.hpp" using namespace clang; Loading Loading @@ -57,7 +57,6 @@ protected: // fuzzyParser->setFileManager(&CI.getFileManager()); CI.getSema().addExternalSource(fuzzyParser.get()); // FIXME Hook this back up // auto pragmaHandlers = // xacc::getServices<qcor::compiler::QCORPragmaHandler>(); for (auto p : Loading Loading @@ -145,20 +144,26 @@ int main(int argc, char **argv) { std::vector<std::string> args{"-Wno-dangling", "-std=c++14", "-I@CMAKE_INSTALL_PREFIX@/include/qcor", "-I@CMAKE_INSTALL_PREFIX@/include/xacc"}; std::string accName = ""; std::vector<std::string> arguments(argv + 1, argv + argc); // Add incoming includes... for (int i = 0; i < arguments.size(); i++) { if (arguments[i] == "-I") { // std::cout << "Adding " << arguments[i+1] << "\n"; if (arguments[i+1] != "@CMAKE_INSTALL_PREFIX@/include/qcor" && arguments[i+1] != "@CMAKE_INSTALL_PREFIX@/include/xacc") { if (arguments[i + 1] != "@CMAKE_INSTALL_PREFIX@/include/qcor" && arguments[i + 1] != "@CMAKE_INSTALL_PREFIX@/include/xacc") { args.push_back(arguments[i] + arguments[i + 1]); } } else if (arguments[i].find("-I") != std::string::npos) { args.push_back(arguments[i]); } else if (arguments[i] == "--accelerator") { accName = arguments[i + 1]; } else if (arguments[i] == "-a") { accName = arguments[i + 1]; } } // args.insert(args.end(), arguments.begin(), arguments.end()); xacc::setAccelerator(accName); if (!tooling::runToolOnCodeWithArgs(action, src, args)) { xacc::error("Error running qcor compiler."); } Loading
compiler/qcor_ast_visitor.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -104,8 +104,9 @@ bool QCORASTVisitor::VisitLambdaExpr(LambdaExpr *LE) { "installed."); } } targetAccelerator = xacc::getAccelerator(); auto acceleratorName = xacc::getAccelerator()->name(); auto acceleratorName = targetAccelerator->name(); // std::cout << "LAMBDA STR:\n" << xaccKernelLambdaStr << "\n"; auto compiler = xacc::getCompiler("xasm"); Loading Loading @@ -161,7 +162,7 @@ bool QCORASTVisitor::VisitLambdaExpr(LambdaExpr *LE) { std::stringstream ss; function->persist(ss); std::string replacement = "\n{std::istringstream iss(R\"(" + ss.str() + ")\");\n"; "{\nstd::istringstream iss(R\"(" + ss.str() + ")\");\n"; replacement += "auto function = " "xacc::getIRProvider(\"quantum\")->createComposite(\"f\");\n"; Loading @@ -176,7 +177,7 @@ bool QCORASTVisitor::VisitLambdaExpr(LambdaExpr *LE) { replacement += "function->expand({" + makePairStr + "});\n"; replacement += "if (qcor::__internal::executeKernel) {\n"; replacement += "auto acc = xacc::getAccelerator(\"" + acceleratorName + "\");\n"; "auto acc = xacc::getAccelerator(function->accelerator_signature());\n"; if (F->getNumParams() > 1) { replacement += "std::vector<double> params{" + F->getParamDecl(1)->getNameAsString(); Loading
runtime/qcor.hpp +6 −6 Original line number Diff line number Diff line Loading @@ -193,7 +193,7 @@ add(QuantumKernelA &qka, QuantumKernelB &qkb, Args... args) { qcor::__internal::constructInitialParameters(tmp, args...); std::vector<double> params = tmp.get<std::vector<double>>("initial-parameters"); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function1->accelerator_signature()); auto evaled = function1->operator()(params); accelerator->execute(q, evaled); } Loading Loading @@ -237,7 +237,7 @@ public: auto function = qcor::__internal::getCompositeInstruction(kernel, args...); auto nLogicalBits = function->nLogicalBits(); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function->accelerator_signature()); if (!buffer) { buffer = xacc::qalloc(nLogicalBits); Loading Loading @@ -270,7 +270,7 @@ public: auto function = qcor::__internal::getCompositeInstruction(kernel, args...); auto nLogicalBits = function->nLogicalBits(); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function->accelerator_signature()); if (!buffer) { buffer = xacc::qalloc(nLogicalBits); Loading @@ -285,7 +285,7 @@ public: auto function = qcor::__internal::getCompositeInstruction(kernel, args...); auto nLogicalBits = function->nLogicalBits(); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function->accelerator_signature()); if (!buffer) { buffer = xacc::qalloc(nLogicalBits); } Loading Loading @@ -323,7 +323,7 @@ taskInitiate(QuantumKernel &&kernel, const std::string objectiveFunctionName, auto function = qcor::__internal::getCompositeInstruction(kernel, args...); auto nLogicalBits = function->nLogicalBits(); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function->accelerator_signature()); auto buffer = xacc::qalloc(nLogicalBits); HeterogeneousMap m{std::make_pair("observable", observable), Loading @@ -342,7 +342,7 @@ Handle taskInitiate(QuantumKernel &&kernel, return qcor::submit([&](qcor::qpu_handler &q) { auto function = qcor::__internal::getCompositeInstruction(kernel, args...); auto nLogicalBits = function->nLogicalBits(); auto accelerator = xacc::getAccelerator(); auto accelerator = xacc::getAccelerator(function->accelerator_signature()); auto buffer = xacc::qalloc(nLogicalBits); std::string allZsObsStr = ""; for (int i = 0; i < nLogicalBits; i++) { Loading
runtime/tests/test_bell_state.cpp +0 −2 Original line number Diff line number Diff line Loading @@ -3,8 +3,6 @@ TEST(bell_state_tester, check_bell_state) { xacc::setAccelerator("local-ibm"); auto bell = [&](qbit q) { H(q[0]); CX(q[0],q[1]); Loading
scripts/qcor.in +29 −19 Original line number Diff line number Diff line Loading @@ -21,6 +21,22 @@ def main(argv=None): if '--qcor-verbose' in sys.argv[1:]: verbose=True sys.argv.remove('--qcor-verbose') hasAcc = False accName = '' if '--accelerator' in sys.argv[1:]: hasAcc = True accidx = sys.argv.index('--accelerator') accName = sys.argv[accidx+1] sys.argv.remove(accName) sys.argv.remove('--accelerator') if '-a' in sys.argv[1:]: hasAcc = True accidx = sys.argv.index('-a') accName = sys.argv[accidx+1] sys.argv.remove(accName) sys.argv.remove('-a') filename = '' fileType = '' Loading @@ -35,17 +51,11 @@ def main(argv=None): idx = tmpFileName.find('.') expectedFile = '.'+tmpFileName[:idx]+'_out'+tmpFileName[idx:] sys.argv[0] = 'qcor-driver' if hasAcc: commands = [sys.argv[0]] + baseIncludes + ['--accelerator',accName] + sys.argv[1:] else: commands = [sys.argv[0]] + baseIncludes + sys.argv[1:] try: commands.remove('-std=gnu++14') commands.remove('-fPIE') except ValueError: pass try: commands.remove('-fPIE') except ValueError: pass #sys.argv[fileIdx+1:fileIdx+1] = baseIncludes if verbose: print('QCOR Driver: ', ' '.join([c for c in commands])) try: Loading