QPanda2簡介
QPanda2是由本源量子推出的量子程序開發工具包,支持主流的量子邏輯門操作,並且支持windows、linux和MacOS多個平臺。
組成
量子編程接口
QPanda2 的宿主語言是C++,支持量子邏輯門、量子線路、量子分支線路、量子循環線路、量子程序、量子測量和概率測量等一系列的量子編程所需的接口。用戶可以通過初始化量子虛擬機、申請量子比特和寄存器、構建量子程序、加載量子程序、運行量子程序和獲取量子程序運行結果的步驟去完成量子程序的編寫和運行。
工具組件
QPanda2做了一些工具組件,豐富了QPanda2的功能,包括量子邏輯門的有效性驗證、統計量子程序中所有的量子邏輯門個數、統計量子程序的時鐘週期、量子程序存儲於二進制文件、解析量子程序存儲的二進制文件、QRunes指令集文件解析成量子程序。
量子程序轉換
QPanda2 提供了將量子程序轉換爲在量子編程研究比較知名的公司提出的量子指令集,包括Quil指令集、QASM指令集和QRunes指令集。
應用算法
QPanda2 實現了幾個應用算法:
1. 量子近似優化算法(QAOA)。
2. 變分量子特徵求解算法(VQE)。
算法組件
爲了方便量子算法的編寫,QPanda2 做了一些算法組件:
1. 泡利運算符(PauliOperator)
2. 費米子運算符(FermionOperator)
3. 優化算法(直接搜索法)
VQNet
是一套量子機器學習架構類似於TensorFlow。包含變量、運算符、表達式、可變量子邏輯門(VQG)、可變量子線路(VQC)和優化算法(梯度下降法)。
使用流程
1、在QPanda2的根目錄新建一個文件QvmTest.cpp
2、在根目錄下的CMakeLists.txt中添加如下內容:
add_executable(QvmTest QvmTest.cpp)
target_link_libraries(QvmTest QPanda2.0)
3、在QvmTest.cpp中寫量子程序
使用實例
#include <QPanda.h>
USING_QPANDA
int main(void)
{
init(); // 初始化
auto qubits = qAllocMany(4); // 申請四個量子比特
QProg prog;
// 向量子邏輯門中添加量子邏輯門
prog << H(qubits[0]) << CNOT(qubits[0], qubits[1])
<< CNOT(qubits[1], qubits[2]) << CNOT(qubits[2], qubits[3]);
load(prog); // 載入量子程序
run(); // 運行量子程序
auto result = getProbTupleList(qubits); //得到量子程序的概率測量結果
for (auto &val : result)
{
std::cout << val.first << ", " << val.second << std::endl;
}
finalize(); // 釋放資源
return 0;
}
運行結果: