标签:auto table arch 文件的 png options 介绍 pack 还需
您可以通过以下途径获取QPanda2:
鼠标右键
-Git Bash Here
Enter
键,然后静待下载完成即可:git clone https://github.com/OriginQ/QPanda-2.git
2.当然了,对于一些未安装git的小伙伴来说,也可以直接通过浏览器去下载QPanda-2, 具体的操作步骤如下:
Code
看到如下界面:Download ZIP
, 就会完成QPanda2的下载。git clone https://gitee.com/OriginQ/QPanda-2.git
在浏览器中输入 https://gitee.com/OriginQ/QPanda-2?_from=gitee_search ,打开后,依次单击
克隆/下载
-下载ZIP
即可开始下载QPanda2。
在编译QPanda2之前,可以先了解一下QPanda2的可配置项:
FIND_CUDA
: 查询系统中是否有cuda库,如果有就会将其编译进去, 在做量子计算时可以选择GPU作为计算后端USE_CHEMIQ
: 化学模拟库USE_PYQPANDA
: 编译出供python使用的pyqpanda库默认情况下,上述的配置项都是关闭的,如果有需要,可以在编译时选择打开
注解
如需使用本源量子云服务,请在安装QPanda之前下载安装 curl库 。
在Windows平台下,QPanda-2支持使用Visual Studio和MinGW编译、安装。
这里以Visual Studio 2017为例,使用Visual Studio 2017 编译QPanda-2,只需要安装Visual Studio 2017, 并需要在组件中安装CMake组件。安装完成之后,用Visual Studio 2017打开QPanda-2文件夹。
首先,要选择x64-Release的模式下编译,按下面的提示选择:
然后, 选择更改cmake设置,查看有没有需要修改的配置项,如下:
进入cmake设置后可以看到,在默认情况下,FIND_CUDA
、USE_CHEMIQ
、USE_PYQPANDA
都是关闭的,如果有需要可以将对应的选项中的 OFF
修改为 ON
然后,点击 CMAKE选项中的 全部生成
可以看到:
等待一会,就会完成编译。
在QPanda-2编译完成后,用户可以安装QPanda-2,Visual Studio 2017的安装方式很简单,只需要在cmake菜单中选择安装即可。
使用MinGW编译QPanda-2,需要自行搭建CMake和MinGW环境,用户可自行在网上查询环境搭建教程。(注意: MinGW需要安装64位版本)
CMake+MinGW的编译命令如下:
Shift
+ 鼠标右键
,然后选择 在此处打开命令窗口(w)
或 在此处打开PowerShell窗口(s)
快捷打开cmd或PowerShell。cmake -G"MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=C:/QPanda2 -DFIND_CUDA=OFF -DUSE_CHEMIQ=OFF -DUSE_PYQPANDA=OFF ..
mingw32-make
也可以根据需要,将一些可配置项设置为 ON
。
警告
MinGW在支持cuda有还存在一些问题,因此使用MinGW不能将 DFIND_CUDA
设置为 ON
。
在QPanda-2编译完成后,用户可以安装QPanda-2,安装命令如下:
mingw32-make install
mkdir -p build
cd build
cmake -DFIND_CUDA=OFF -DUSE_CHEMIQ=OFF -DUSE_PYQPANDA=OFF ..
make
如果有需求,用户通过命令修改QPanda-2的安装路径,配置方法如下所示:
mkdir -p build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DFIND_CUDA=OFF -DUSE_CHEMIQ=OFF -DUSE_PYQPANDA=OFF ..
make
也可以根据需求将可配置项设置为 ON
在Linux和MacOS下安装命令QPanda-2,命令是一样的,安装命令如下:
sudo make install
注解
如果想使用pyqpanda也可以通过 pip install pyqpanda
命令直接下载我们发布的库,可以避免由于系统中的环境配置有问题导致pyqpanda编译出错的问题。
本文档中QPanda2安装目录:
C:\QPanda2\
/usr/local
/usr/local
我们接下来通过一个示例介绍QPanda-2的使用,下面的例子可以在量子计算机中构建量子纠缠态(|00>+|11>),对其进行测量,重复制备1000次。 预期的结果是约有50%的概率使测量结果分别在00或11上。
#include "QPanda.h" USING_QPANDA int main() { // 初始化量子虚拟机 init(QMachineType::CPU); // 申请量子比特以及经典寄存器 auto q = qAllocMany(2); auto c = cAllocMany(2); // 构建量子程序 QProg prog; prog << H(q[0]) << CNOT(q[0],q[1]) << MeasureAll(q, c); // 量子程序运行1000次,并返回测量结果 auto results = runWithConfiguration(prog, c, 1000); // 打印量子态在量子程序多次运行结果中出现的次数 for (auto &val: results) { std::cout << val.first << ", " << val.second << std::endl; } // 释放量子虚拟机 finalize(); return 0; }
计算结果如下所示:
00 : 493 11 : 507
示例程序的编译方式与编译QPanda库的方式基本类似。我们在QPanda-2的github库中添加了 Template 文件夹,用于展示各个平台的使用案例。
下面将简单介绍一下QPanda2在Windows、linux、MacOS下的使用教程:
visual studio 2017 下链接QPanda库需要配置QPanda的头文件地址和QPanda库的地址,下面以GateTypeValidator项目为例:
如果使用的QPanda2库是包含GPU计算部分的时候还需要添加cuda头文件的安装路径,设置的路径为:\({QPanda的安装路径}/include/qpanda2;\){QPanda的安装路径}/include/qpanda2/ThirdParty;${CUDA库的路径}/include
如果使用的QPanda2库是包含GPU计算部分的时候还需要添加cuda库的安装路径,设置的路径为:\({QPanda的安装路径}/lib;\){CUDA库的路径}/lib/x64
包含GPU计算方式还需要添加下面两个库: GPUQGates.lib;cudart.lib
注解
按照上述操作完成后,如若报错:LNK2001,可尝试以下操作:
选中C/C++- > 所有选项 -> 预处理器定义,删除 _DEBUG;
:
g++ test.cpp -std=c++14 -fopenmp -I{QPanda安装路径}/include/qpanda2/ -I{QPanda安装路径}/include/qpanda2/ThirdParty/ -L{QPanda安装路径}/lib/ -lQPanda2 -lantlr4 -o test
示例运行结果如下:
cd test
mkdir -p build
cd build
cmake -G"MinGW Makefiles" -DQPANDA_INSTALL_DIR=C:/QPanda2/ ..
mingw32-make
CMakelists配置为:
#指定 cmake 的最小版本
cmake_minimum_required(VERSION 3.1)
#设置项目名称
project(testQPanda)
# 定义自己的 cmake 模块所在的路径
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${QPANDA_INSTALL_DIR}/lib/cmake")
#指定C++版本
set(CMAKE_CXX_STANDARD 14)
#设置 C++ 编译选项
add_definitions("-w -DGTEST_USE_OWN_TR1_TUPLE=1")
set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3")
add_compile_options(-fpermissive)
#重新定义目标链接库文件的存放位置
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
#重新定义目标二进制可执行文件的存放位置
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
#引入外部依赖包
find_package(QPANDA REQUIRED)
include_directories(${QPANDA_INCLUDE_DIR})
# 生成可执行文件
add_executable(${PROJECT_NAME} test.cpp)
target_link_libraries(${PROJECT_NAME} ${QPANDA_LIBRARIES})
可以使用CMake的方式调用QPanda2库编译生成可执行文件。由于VS的版本比较多,不同的版本使用CMake会有一些差距,这里就以Virsual Studio 2017为例
上面介绍了使用cmake打开我们构建好的工程,有兴趣的也可以深入的学习使用cmake构建项目。
vs下的CMakelists配置:
cmake_minimum_required(VERSION 3.1)
project(testQPanda)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${QPANDA_INSTALL_DIR}/lib/cmake")
set(CMAKE_CXX_STANDARD 14)
if (MSVC)
list(APPEND EXTRA_LDFLAGS
-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
-D_CRT_SECURE_NO_WARNINGS
/bigobj)
if (NOT USE_MSVC_RUNTIME_LIBRARY_DLL)
foreach (flag
CMAKE_C_FLAGS
CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS_RELWITHDEBINFO)
if (${flag} MATCHES "/MDd")
string(REGEX REPLACE "/MDd" "/MT" ${flag} "${${flag}}")
endif()
if (${flag} MATCHES "/MD")
string(REGEX REPLACE "/MD" "/MT" ${flag} "${${flag}}")
endif()
if (${flag} MATCHES "/W3")
string(REGEX REPLACE "/W3" "/W0" ${flag} "${${flag}}")
endif()
endforeach()
endif()
endif()
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
find_package(QPANDA REQUIRED)
include_directories(${QPANDA_INCLUDE_DIR})
add_executable(${PROJECT_NAME} GateTypeValidator.cpp)
target_link_libraries(${PROJECT_NAME} ${QPANDA_LIBRARIES})
在Linux环境下,用户也可以使用g++编译test.cpp,编译命令如下所示:
g++ test.cpp -std=c++14 -fopenmp -I{QPanda安装路径}/include/qpanda2/ -I{QPanda安装路径}/include/qpanda2/ThirdParty/ -L{QPanda安装路径}/lib/ -lComponents -lQAlg -lQPanda2 -lantlr4 -o test
如果宿主机上安装了libcurl,则编译命令如下所示:
g++ test.cpp -std=c++14 -fopenmp -I{QPanda安装路径}/include/qpanda2/ -I{QPanda安装路径}/include/qpanda2/ThirdParty/ -L{QPanda安装路径}/lib/ -lComponents -lQAlg -lQPanda2 -lantlr4 -lcurl -o test
如果安装的是可以含有CUDA的库,则编译命令如下:
g++ test.cpp -std=c++14 -fopenmp -I{QPanda安装路径}/include/qpanda2/ -I{QPanda安装路径}/include/qpanda2/ThirdParty/ -L{QPanda安装路径}/lib/ -lComponents -lQAlg -lQPanda2 -lantlr4 -lGPUQGates -L{cuda安装目录}/lib/ -lcudart -o test
注解
如遇以下错误:
可以使用如下方法解决(样例CUDA版本为11.2):
sudo ldconfig /usr/local/cuda-11.2/lib64
在Linux环境下,用户也可以使用CMake编译test.cpp,编译命令如下所示(以QPanda-example文件夹中的GateTypeValidator示例):
cd GateTypeValidator
mkdir -p build
cd build
cmake -DQPANDA_INSTALL_DIR=/usr/local/ .. #本文档样例QPanda的路径是/usr/local/
make
运行编译后文件:
Linux下的CMakelists配置:
#指定 cmake 的最小版本 cmake_minimum_required(VERSION 3.1) #设置项目名称 project(testQPanda) # 定义自己的 cmake 模块所在的路径 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${QPANDA_INSTALL_DIR}/lib/cmake") #指定C++版本 set(CMAKE_CXX_STANDARD 14) #设置 C++ 编译选项 add_definitions("-w -DGTEST_USE_OWN_TR1_TUPLE=1") set(CMAKE_BUILD_TYPE "Release") set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -g -ggdb") set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3") add_compile_options(-fpermissive) #重新定义目标链接库文件的存放位置 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) #重新定义目标二进制可执行文件的存放位置 set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) #引入外部依赖包 find_package(QPANDA REQUIRED) include_directories(${QPANDA_INCLUDE_DIR}) # 生成可执行文件 add_executable(${PROJECT_NAME} test.cpp) target_link_libraries(${PROJECT_NAME} ${QPANDA_LIBRARIES})
在MacOS环境下,用户可以使用Clang编译test.cpp,编译命令如下所示:
clang++ test.cpp -std=c++14 -fopenmp -I{QPanda安装路径}/include/qpanda2/ -I{QPanda安装路径}/include/qpanda2/ThirdParty/ -L{QPanda安装路径}/lib/ -lQPanda2 -lComponents -lantlr4 -o test
含有CUDA的编译指令
clang++ test.cpp -std=c++14 -fopenmp -I{QPanda安装路径}/include/qpanda2/ -I{QPanda安装路径}/include/qpanda2/ThirdParty/ -L{QPanda安装路径}/lib/ -lQPanda2 -lComponents -lantlr4 -lGPUQGates -L{CUDA安装路径}/lib/ -lcudart -o test
在MacOS环境下,用户也可以使用CMake编译test.cpp,编译命令如下所示:
cd test
mkdir -p build
cd build
cmake -DQPANDA_INSTALL_DIR=/usr/local/ ..
make
本文档样例QPanda的路径是/usr/local/
运行编译后文件:
MacOS下的CMakelists配置:
#指定 cmake 的最小版本
cmake_minimum_required(VERSION 3.1)
#设置项目名称
project(testQPanda)
# 定义自己的 cmake 模块所在的路径
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${QPANDA_INSTALL_DIR}/lib/cmake")
#指定C++版本
set(CMAKE_CXX_STANDARD 14)
#设置 C++ 编译选项
add_definitions("-w -DGTEST_USE_OWN_TR1_TUPLE=1")
set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3")
add_compile_options(-fpermissive)
#重新定义目标链接库文件的存放位置
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
#重新定义目标二进制可执行文件的存放位置
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
#引入外部依赖包
find_package(QPANDA REQUIRED)
include_directories(${QPANDA_INCLUDE_DIR})
# 生成可执行文件
add_executable(${PROJECT_NAME} test.cpp)
target_link_libraries(${PROJECT_NAME} ${QPANDA_LIBRARIES})
注解
标签:auto table arch 文件的 png options 介绍 pack 还需
原文地址:https://www.cnblogs.com/Carrawayang/p/14695003.html