diff --git a/python/runtime/cudaq/platform/py_alt_launch_kernel.cpp b/python/runtime/cudaq/platform/py_alt_launch_kernel.cpp index 31a983ae12..070d11a0fc 100644 --- a/python/runtime/cudaq/platform/py_alt_launch_kernel.cpp +++ b/python/runtime/cudaq/platform/py_alt_launch_kernel.cpp @@ -7,9 +7,11 @@ ******************************************************************************/ #include "JITExecutionCache.h" +#include "common/ArgumentConversion.h" #include "common/ArgumentWrapper.h" #include "common/Environment.h" #include "cudaq/Optimizer/Builder/Factory.h" +#include "cudaq/Optimizer/Builder/Runtime.h" #include "cudaq/Optimizer/CAPI/Dialects.h" #include "cudaq/Optimizer/CodeGen/OpenQASMEmitter.h" #include "cudaq/Optimizer/CodeGen/Passes.h" @@ -22,7 +24,6 @@ #include "cudaq/platform/qpu.h" #include "utils/OpaqueArguments.h" #include "utils/PyTypes.h" - #include "llvm/Support/Error.h" #include "mlir/Bindings/Python/PybindAdaptors.h" #include "mlir/CAPI/ExecutionEngine.h" @@ -31,7 +32,6 @@ #include "mlir/InitAllPasses.h" #include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h" #include "mlir/Target/LLVMIR/Export.h" - #include #include #include @@ -510,8 +510,17 @@ MlirModule synthesizeKernel(const std::string &name, MlirModule module, auto enablePrintMLIREachPass = getEnvBool("CUDAQ_MLIR_PRINT_EACH_PASS", false); + cudaq::opt::ArgumentConverter argCon(name, unwrap(module)); + argCon.gen(runtimeArgs.getArgs()); + std::string kernName = cudaq::runtime::cudaqGenPrefixName + name; + SmallVector kernels = {kernName}; + std::string substBuff; + llvm::raw_string_ostream ss(substBuff); + ss << argCon.getSubstitutionModule(); + SmallVector substs = {substBuff}; PassManager pm(context); - pm.addPass(cudaq::opt::createQuakeSynthesizer(name, rawArgs, 0, true)); + pm.addNestedPass( + cudaq::opt::createArgumentSynthesisPass(kernels, substs)); pm.addPass(createCanonicalizerPass()); // Run state preparation for quantum devices only. diff --git a/python/utils/OpaqueArguments.h b/python/utils/OpaqueArguments.h index 71dd45002b..3e410a07b6 100644 --- a/python/utils/OpaqueArguments.h +++ b/python/utils/OpaqueArguments.h @@ -44,6 +44,8 @@ class OpaqueArguments { public: using OpaqueArgDeleter = std::function; + const std::vector &getArgs() const { return args; } + private: /// @brief The opaque argument pointers std::vector args;