VS2022使用cmake配置QPanda2量子计算框架库
1 什么是cmake
1.1 cmake的起源
- 定义:cmake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译)过程。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性。
- 通俗的说:cmake就是一个在不同平台,使项目能够用同一种方式进行编译的标准化工具。
1.2 从makefile说起
Makefile 可以简单的认为是一个工程文件的编译规则,描述了整个工程的编译和链接等规则。其中包含了那些文件需要编译,那些文件不需要编译,那些文件需要先编译,那些文件需要后编译,那些文件需要重建等等。
比如说,你有foo.c, bar.c, main.c三个C文件,你要编译成一个app.executable,你会怎么做呢?你会执行这样的命令
gcc -Wall -c foo.c -o foo.o
gcc -Wall -c bar.c -o bar.o
gcc -Wall -c main.c -o main.o
gcc main.o foo.o bar.o -lpthread -o app.executable
- 1
- 2
- 3
- 4
但是按照程序员的惯例,凡是要一次次重新执行的命令,都应该写成脚本,变成“一个动作”。所以,简单来说,你会把上面这个命令序列写成一个build.sh,每次编译你只要执行这个脚本问题就解决了。
因此makefile是所有程序(尤其大型工程)都有的,不是cmake,也不限于C++,java等等
参考资料:
http://c.biancheng.net/view/7097.html
https://zhuanlan.zhihu.com/p/29910215
https://seisman.github.io/how-to-write-makefile/introduction.html
https://blog.csdn.net/Torres_10/article/details/80371425
1.3 使用CMakeLists.txt生成Makefile
Cmake是用来makefile的一个工具:读入所有源文件之后,自动生成makefile
main.cpp文件内容
//main.cpp
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
CmakeLists.txt 文件内容:
cmake_minimum_required(VERSION 3.9)
project(HelloWorld)
set(CMAKE_CXX_STANDARD 11)
add_executable(HelloWorld main.cpp)
- 1
- 2
- 3
- 4
- 5
- 6
所有的文件创建完成后,HelloWorld目录中应该存在 main.cpp 和 CMakeLists.txt 两个文件,
然后运行cmake .
。
系统会自动生成:CMakeFiles, CMakeCache.txt, cmake_install.cmake 等文件
这是一个Clion的cmake项目,这是生成的cmakefile文件
参考资料:https://blog.csdn.net/xierhacker/article/details/79445339
2 什么是QPanda2
QPanda 2是什么
- 一种功能齐全,运行高效的量子软件开发工具包
- QPanda 2是由本源量子开发的开源量子计算框架,它可以用于构建、运行和优化量子算法。QPanda 2作为本源量子计算系列软件的基础库,为OriginIR、Qurator、量子计算服务提供核心部件。
本源量子云:https://qcloud.originqc.com.cn/documentCenter
下载链接:https://qpanda-tutorial.readthedocs.io/zh/latest/Tutorial.html
开源地址:https://github.com/OriginQ/QPanda-2
3 VS2022编译与安装过程
-
首先,打开项目文件夹,要选择x64-Release的模式下编译
-
然后, 选择更改cmake设置,查看有没有需要修改的配置项
在默认情况下,FIND_CUDA、USE_CHEMIQ、USE_PYQPANDA 都是关闭的,如果有需要可以将对应的选项中的 OFF 修改为 ON
-
然后,点击 生成选项中的 全部生成和安装
4 VS2022配置运行程序过程
-
首先新建一个空的C++控制台应用程序
-
设置附加包含目录,选中C/C++ -> 所有选项 -> 附加包含目录,设置两个路径
·${QPanda的安装路径}/include/qpanda2;${QPanda的安装路径}/include/qpanda2/ThirdParty
-
设置运行库, 选中C/C++ -> 所有选项 -> 运行库,设置为MT
-
设置库目录 ,选中链接器 -> 常规 -> 附加库目录,只需要设置lib路径为:${QPanda的安装路径}/lib
-
设置附加依赖项,选中链接器 -> 输入 -> 附加依赖项,设置以下依赖库:antlr4.lib;Components.lib;QAlg.lib;QPanda2.lib
-
设置符合模式,选中C/C+± > 语言 -> 符合模式,设置为否
-
选中C/C+± > 所有选项 -> 预处理器定义,删除 _DEBUG; :
5 一个运行程序的例子
代码:
下面的例子可以在量子计算机中构建量子纠缠态(|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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
计算结果如下所示:
00 : 493
11 : 507
- 1
- 2
运行成功截图
更多例子可以在下面的链接下载:
https://github.com/OriginQ/QPanda-Example
文章来源: gwj1314.blog.csdn.net,作者:小哈里,版权归原作者所有,如需转载,请联系作者。
原文链接:gwj1314.blog.csdn.net/article/details/124541507
- 点赞
- 收藏
- 关注作者
评论(0)