VS2022使用cmake配置QPanda2量子计算框架库

Posted 小哈里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

但是按照程序员的惯例,凡是要一次次重新执行的命令,都应该写成脚本,变成“一个动作”。所以,简单来说,你会把上面这个命令序列写成一个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;

CmakeLists.txt 文件内容:

cmake_minimum_required(VERSION 3.9)
project(HelloWorld)

set(CMAKE_CXX_STANDARD 11)

add_executable(HelloWorld main.cpp)

所有的文件创建完成后,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;

计算结果如下所示:

00 : 493
11 : 507

运行成功截图

更多例子可以在下面的链接下载:
https://github.com/OriginQ/QPanda-Example

以上是关于VS2022使用cmake配置QPanda2量子计算框架库的主要内容,如果未能解决你的问题,请参考以下文章

cmake编译后能给vs使用吗

vs2022 编译遇见编译器堆空间不足,解决办法(针对CMAKE工程)

vs2022 编译遇见编译器堆空间不足,解决办法(针对CMAKE工程)

使用cmake为vs2013配置cuda项目出现“invalid device function”错误

使用 WSL 和 VS2019 进行 Cmake

VS2017 CMake配置