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

举报
小哈里 发表于 2022/05/06 00:21:42 2022/05/06
【摘要】 文章目录 1 什么是cmake1.1 cmake的起源1.2 从makefile说起1.3 使用CMakeLists.txt生成Makefile 2 什么是QPanda23 VS2022编...

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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。