Loading runtime/qrt/impls/CMakeLists.txt +2 −1 Original line number Diff line number Diff line Loading @@ -11,3 +11,4 @@ # Alexander J. McCaskey - initial API and implementation # *******************************************************************************/ add_subdirectory(nisq) add_subdirectory(ftqc) No newline at end of file runtime/qrt/impls/ftqc/CMakeLists.txt +2 −2 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ # Contributors: # Alexander J. McCaskey - initial API and implementation # *******************************************************************************/ set(LIBRARY_NAME qcor-vqe-objective) set(LIBRARY_NAME qcor-nisq-ftqc) file(GLOB SRC *.cpp) Loading @@ -25,7 +25,7 @@ target_include_directories( target_link_libraries(${LIBRARY_NAME} PUBLIC qcor CppMicroServices::CppMicroServices) set(_bundle_name qcor_vqe_objective) set(_bundle_name qcor_ftqc_qrt) set_target_properties(${LIBRARY_NAME} PROPERTIES COMPILE_DEFINITIONS US_BUNDLE_NAME=${_bundle_name} Loading runtime/qrt/impls/ftqc/ftqc_qrt.cpp +126 −0 Original line number Diff line number Diff line #include "PauliOperator.hpp" #include "qrt.hpp" #include "xacc.hpp" #include "xacc_internal_compiler.hpp" #include "xacc_service.hpp" #include <Eigen/Dense> #include <Utils.hpp> #include "cppmicroservices/BundleActivator.h" #include "cppmicroservices/BundleContext.h" #include "cppmicroservices/ServiceProperties.h" using namespace cppmicroservices; namespace qcor { class FTQC : public quantum::QuantumRuntime { public: virtual void initialize(const std::string kernel_name) override { /* TODO */ } const std::string name() const override { return "ftqc"; } const std::string description() const override { return ""; } virtual void h(const qubit &qidx) override { /* TODO */ } virtual void x(const qubit &qidx) override { /* TODO */ } virtual void y(const qubit &qidx) override { /* TODO */ } virtual void z(const qubit &qidx) override { /* TODO */ } virtual void t(const qubit &qidx) override { /* TODO */ } virtual void tdg(const qubit &qidx) override { /* TODO */ } virtual void s(const qubit &qidx) override { /* TODO */ } virtual void sdg(const qubit &qidx) override { /* TODO */ } // Common single-qubit, parameterized instructions virtual void rx(const qubit &qidx, const double theta) override { /* TODO */ } virtual void ry(const qubit &qidx, const double theta) override { /* TODO */ } virtual void rz(const qubit &qidx, const double theta) override { /* TODO */ } // U1(theta) gate virtual void u1(const qubit &qidx, const double theta) override { /* TODO */ } virtual void u3(const qubit &qidx, const double theta, const double phi, const double lambda) override { /* TODO */ } // Measure-Z virtual void mz(const qubit &qidx) override { /* TODO */ } // Common two-qubit gates. virtual void cnot(const qubit &src_idx, const qubit &tgt_idx) override { /* TODO */ } virtual void cy(const qubit &src_idx, const qubit &tgt_idx) override { /* TODO */ } virtual void cz(const qubit &src_idx, const qubit &tgt_idx) override { /* TODO */ } virtual void ch(const qubit &src_idx, const qubit &tgt_idx) override { /* TODO */ } virtual void swap(const qubit &src_idx, const qubit &tgt_idx) override { /* TODO */ } // Common parameterized 2 qubit gates. virtual void cphase(const qubit &src_idx, const qubit &tgt_idx, const double theta) override { /* TODO */ } virtual void crz(const qubit &src_idx, const qubit &tgt_idx, const double theta) override { /* TODO */ } // exponential of i * theta * H, where H is an Observable pointer virtual void exp(qreg q, const double theta, xacc::Observable &H) override { /* TODO */ } virtual void exp(qreg q, const double theta, xacc::Observable *H) override { /* TODO */ } virtual void exp(qreg q, const double theta, std::shared_ptr<xacc::Observable> H) override { /* TODO */ } // Submission API. Submit the constructed CompositeInstruction operating // on the provided AcceleratorBuffer(s) (note qreg wraps an AcceleratorBuffer) virtual void submit(xacc::AcceleratorBuffer *buffer) override { /* TODO */ } virtual void submit(xacc::AcceleratorBuffer **buffers, const int nBuffers) override { /* TODO */ } // Some getters for the qcor runtime library. virtual void set_current_program( std::shared_ptr<xacc::CompositeInstruction> p) override { /* TODO */ } virtual std::shared_ptr<xacc::CompositeInstruction> get_current_program() override { /* TODO */ return nullptr; } }; } // namespace qcor namespace { class US_ABI_LOCAL FtqcQRTActivator : public BundleActivator { public: FtqcQRTActivator() {} void Start(BundleContext context) { auto xt = std::make_shared<qcor::FTQC>(); context.RegisterService<quantum::QuantumRuntime>(xt); } void Stop(BundleContext /*context*/) {} }; } // namespace CPPMICROSERVICES_EXPORT_BUNDLE_ACTIVATOR(FtqcQRTActivator) runtime/qrt/impls/ftqc/manifest.json +2 −2 Original line number Diff line number Diff line { "bundle.symbolic_name" : "qcor_vqe_objective", "bundle.symbolic_name" : "qcor_ftqc_qrt", "bundle.activator" : true, "bundle.name" : "VQE Objective Function", "bundle.name" : "FTQC QRT", "bundle.description" : "" } Loading
runtime/qrt/impls/CMakeLists.txt +2 −1 Original line number Diff line number Diff line Loading @@ -11,3 +11,4 @@ # Alexander J. McCaskey - initial API and implementation # *******************************************************************************/ add_subdirectory(nisq) add_subdirectory(ftqc) No newline at end of file
runtime/qrt/impls/ftqc/CMakeLists.txt +2 −2 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ # Contributors: # Alexander J. McCaskey - initial API and implementation # *******************************************************************************/ set(LIBRARY_NAME qcor-vqe-objective) set(LIBRARY_NAME qcor-nisq-ftqc) file(GLOB SRC *.cpp) Loading @@ -25,7 +25,7 @@ target_include_directories( target_link_libraries(${LIBRARY_NAME} PUBLIC qcor CppMicroServices::CppMicroServices) set(_bundle_name qcor_vqe_objective) set(_bundle_name qcor_ftqc_qrt) set_target_properties(${LIBRARY_NAME} PROPERTIES COMPILE_DEFINITIONS US_BUNDLE_NAME=${_bundle_name} Loading
runtime/qrt/impls/ftqc/ftqc_qrt.cpp +126 −0 Original line number Diff line number Diff line #include "PauliOperator.hpp" #include "qrt.hpp" #include "xacc.hpp" #include "xacc_internal_compiler.hpp" #include "xacc_service.hpp" #include <Eigen/Dense> #include <Utils.hpp> #include "cppmicroservices/BundleActivator.h" #include "cppmicroservices/BundleContext.h" #include "cppmicroservices/ServiceProperties.h" using namespace cppmicroservices; namespace qcor { class FTQC : public quantum::QuantumRuntime { public: virtual void initialize(const std::string kernel_name) override { /* TODO */ } const std::string name() const override { return "ftqc"; } const std::string description() const override { return ""; } virtual void h(const qubit &qidx) override { /* TODO */ } virtual void x(const qubit &qidx) override { /* TODO */ } virtual void y(const qubit &qidx) override { /* TODO */ } virtual void z(const qubit &qidx) override { /* TODO */ } virtual void t(const qubit &qidx) override { /* TODO */ } virtual void tdg(const qubit &qidx) override { /* TODO */ } virtual void s(const qubit &qidx) override { /* TODO */ } virtual void sdg(const qubit &qidx) override { /* TODO */ } // Common single-qubit, parameterized instructions virtual void rx(const qubit &qidx, const double theta) override { /* TODO */ } virtual void ry(const qubit &qidx, const double theta) override { /* TODO */ } virtual void rz(const qubit &qidx, const double theta) override { /* TODO */ } // U1(theta) gate virtual void u1(const qubit &qidx, const double theta) override { /* TODO */ } virtual void u3(const qubit &qidx, const double theta, const double phi, const double lambda) override { /* TODO */ } // Measure-Z virtual void mz(const qubit &qidx) override { /* TODO */ } // Common two-qubit gates. virtual void cnot(const qubit &src_idx, const qubit &tgt_idx) override { /* TODO */ } virtual void cy(const qubit &src_idx, const qubit &tgt_idx) override { /* TODO */ } virtual void cz(const qubit &src_idx, const qubit &tgt_idx) override { /* TODO */ } virtual void ch(const qubit &src_idx, const qubit &tgt_idx) override { /* TODO */ } virtual void swap(const qubit &src_idx, const qubit &tgt_idx) override { /* TODO */ } // Common parameterized 2 qubit gates. virtual void cphase(const qubit &src_idx, const qubit &tgt_idx, const double theta) override { /* TODO */ } virtual void crz(const qubit &src_idx, const qubit &tgt_idx, const double theta) override { /* TODO */ } // exponential of i * theta * H, where H is an Observable pointer virtual void exp(qreg q, const double theta, xacc::Observable &H) override { /* TODO */ } virtual void exp(qreg q, const double theta, xacc::Observable *H) override { /* TODO */ } virtual void exp(qreg q, const double theta, std::shared_ptr<xacc::Observable> H) override { /* TODO */ } // Submission API. Submit the constructed CompositeInstruction operating // on the provided AcceleratorBuffer(s) (note qreg wraps an AcceleratorBuffer) virtual void submit(xacc::AcceleratorBuffer *buffer) override { /* TODO */ } virtual void submit(xacc::AcceleratorBuffer **buffers, const int nBuffers) override { /* TODO */ } // Some getters for the qcor runtime library. virtual void set_current_program( std::shared_ptr<xacc::CompositeInstruction> p) override { /* TODO */ } virtual std::shared_ptr<xacc::CompositeInstruction> get_current_program() override { /* TODO */ return nullptr; } }; } // namespace qcor namespace { class US_ABI_LOCAL FtqcQRTActivator : public BundleActivator { public: FtqcQRTActivator() {} void Start(BundleContext context) { auto xt = std::make_shared<qcor::FTQC>(); context.RegisterService<quantum::QuantumRuntime>(xt); } void Stop(BundleContext /*context*/) {} }; } // namespace CPPMICROSERVICES_EXPORT_BUNDLE_ACTIVATOR(FtqcQRTActivator)
runtime/qrt/impls/ftqc/manifest.json +2 −2 Original line number Diff line number Diff line { "bundle.symbolic_name" : "qcor_vqe_objective", "bundle.symbolic_name" : "qcor_ftqc_qrt", "bundle.activator" : true, "bundle.name" : "VQE Objective Function", "bundle.name" : "FTQC QRT", "bundle.description" : "" }