Package: quingo
Quingo Runtime SystemAlong with quingo compilers, the Quingo runtime system which provides users the capability to program and simulate Quingo programs.InstallationThe Quingo installation comprises of two main steps:Install the Runtime system and simulatorInstall Quingo runtime system with required simulators using the following command:pipinstall-e.# for simulators used:gitclonehttps://gitee.com/hpcl_quanta/tequila.git
gitcheckoutxbackend
pipinstall-e.

gitclonehttps://gitee.com/quingo/pyqcisim.git
gitcheckoutbug-fix
pipinstall-e.

gitclonehttps://gitee.com/quingo/SymQC.git
pipinstall-e.Upon success, it will automatically install the Quingo runtime system (this package), the PyQCAS simulator and the PyQCISim simulator.Install the Quingo compilerWe can install mlir-based quingo compiler in two ways:Install the mlir-based Quingo compiler using the following command:python-mquingo.install_quingocDownloadmlir-based Quingo compilerWindows: unzip .zip file, add directory which contains the quingoc executable file to system environment PATH.Linux: as the following sample usage, Quingoc will be installed to user defined directory, then add directory which contains the quingoc executable file to system environment PATH.quingo-compiler-0.1.4.sh-prefix=/home/user/.localMacos: uncompress .dmg file, copy quingoc executable file to user defined directory, then add directory which contains the quingoc executable file to system environment PATH.UsageA simple example can be found in the directorysrc/examples. You can simply run the bell_state example by running:cdsrc/examples/bell_state
pythonhost.pyIf everything runs correctly, you should see the following output:simres:(['Q1','Q2'],[[0,0],[0,0],[1,1],[1,1],[0,0],[0,0],[0,0],[1,1],[0,0],[1,1]])For different simulation backend, please refer tosrc/examples/sim_backend, which shows the use of SymQC, QuantumSim, and Tequila backend that are currently running stably.For different simulation modes, please refer tosrc/examples/sim_exemode, which displays the output of two different simulation results currently available.APIs of the Quingo runtime systemTheQuingo_interfaceclass expose the following methods:set_log_level(<log_level>):<log_level>can be one ofDEBUG,INFO,WARNING,ERROR, orCRITICAL.connect_backend(<backend>):<backend>currently can be'pyqcas_quantumsim'or'pyqcisim_quantumsim'.get_backend_name(): return the name of the backend that is being used. An empty string will be returned if no backend has been set.get_last_qasm(): get the qasm code generated by the last execution.config_execution(<mode>, <num_shots>):Configure the execution mode to'one_shot'or'state_vector'.When the execution mode is'one_shot', the number of times to run the uploaded quantum circuit can be configured using the parameternum_shotsat the same time.call_quingo(<qg_filename>, <qg_func_name>, *args):the main entry to call Quingo operation.<qg_filename (str)>:  the name of the Qingo file which contains the quantum function called by the host program.<qg_func_name (str)>: the name of the quantum function<args (dict)>: a variable length of parameters used to call the Quingo operation in the formqg_func_name(<args>).read_result(): read the computation result from the quantum kernel.For eQASM-based backend, the result is a binary block which encodes the quantum computation result.For QCIS-based backend, the result format is defined by PyQCISim. Please refer to the docstring ofquingo.if_backend.non_arch_backend.pyqcisim_quantumsim.PyQCISim_quantumsim::execute()Quingo programming tutorialAt present, Qingguo runtime system has included sample programs such asBell_state,GHZ,VQE, etc. Details can be foundhere.