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

Added a CLI option to print out the final CompositeInstruction for backend execution



Signed-off-by: default avatarThien Nguyen <nguyentm@ornl.gov>
parent d1c68fb1
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -55,7 +55,9 @@ public:
#ifdef __internal__qcor__compile__decorator__list
  xacc::internal_compiler::apply_decorators(__internal__qcor__compile__decorator__list);
#endif

#ifdef __internal__qcor__print__final__submission
    xacc::internal_compiler::__print_final_submission = true;
#endif
  }
};
internal_startup startup;
+6 −0
Original line number Diff line number Diff line
@@ -312,6 +312,9 @@ class NISQ : public ::quantum::QuantumRuntime,

  void submit(xacc::AcceleratorBuffer *buffer) override {
    // xacc::internal_compiler::execute_pass_manager();
    if (__print_final_submission) {
      std::cout << "SUBMIT:\n" << program->toString() << "\n";
    }
    xacc::internal_compiler::execute(buffer, program);
    clearProgram();
  }
@@ -330,6 +333,9 @@ class NISQ : public ::quantum::QuantumRuntime,
      return;
    }
    
    if (__print_final_submission) {
      std::cout << "SUBMIT:\n" << program->toString() << "\n";
    }
    xacc::internal_compiler::execute(buffers, nBuffers, program);
  }

+1 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ std::string __user_opt_passes = "";
std::string __placement_name = "";
std::vector<int> __qubit_map = {};
std::string __qrt_env = "nisq";
bool __print_final_submission = false;

void execute_pass_manager(
    std::shared_ptr<CompositeInstruction> optional_composite) {
+2 −0
Original line number Diff line number Diff line
@@ -219,6 +219,8 @@ extern std::vector<int> __qubit_map;
extern std::vector<int> parse_qubit_map(const char *qubit_map_str);
extern void apply_decorators(const std::string &decorator_cmdline_string);
extern std::string __qrt_env;
// Print final CompositeInstruction for backend submission
extern bool __print_final_submission;
// Execute the pass manager on the provided kernel.
// If none provided, execute the pass manager on the current QRT kernel.
void execute_pass_manager(
+6 −0
Original line number Diff line number Diff line
@@ -61,6 +61,8 @@ def main(argv=None):
        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.')
        parser.add_argument('-keep-llvm-file', metavar='', help='keep intermediate LLVM files.')
        parser.add_argument('-print-final-submission', metavar='', help='print the final quantum circuit for backend submission (ignored in FTQC).')

        args = parser.parse_args(sys.argv)

    if '-pythonpath' in sys.argv[1:]:
@@ -304,6 +306,10 @@ def main(argv=None):
    if '@QCOR_APPEND_PLUGIN_PATH@':
        sys.argv += ['-D__internal__qcor__compile__plugin__path=\"@QCOR_APPEND_PLUGIN_PATH@\"']
    
    if '-print-final-submission' in sys.argv[1:]:
        sys.argv.remove('-print-final-submission')
        sys.argv += ['-D__internal__qcor__print__final__submission']

    # Get the filename we are compiling or the object file
    filename = ''
    fileType = ''