建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

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

确定
我再想想
选择版块
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

jfTANG

发帖: 1粉丝: 0

发消息 + 关注

发表于2019年06月23日 20:41:53 2866 6
直达本楼层的链接
楼主
显示全部楼层
win10+anaconda3(64位) 安装带并行多线程的projectQ

OfficialInstallTip.PNG
在windows平台上,官方给的projectQ安装C++的Simulator库的办法有两个,要么是安装msvc(体积大且没多线程加速,因为msvc只支持OpenMP2.0),要么是装mingw编译器,后者可以支持正常的OpenMP,编译出来的C++库是是支持多线程的。显然装mingw更好,不过projectQ没说清楚具体怎么玩,只好自己查命令去编译C++库。下面是具体的过程(每台机器上提前装的库都有差别,不保证一定没问题):

1. 提前要装的软件

  • Anaconda3 64位

  • mingw-w64

  • vcruntime140.dll 64位

    说明:mingw-w64是最新版的mingw编译器(还有个旧版的叫mingw32,只有32位版的,早就停止更新了),安装的时候可以选装32位的还是64位的,由于要用64位的Python,肯定装64位的(如果必须要用32位的Python,那就装32位的mingw,但是坑很多,最后会说)

    mingw64.PNG

    装完之后,把安装目录下的bin文件夹比如C:\MinGW\mingw64\bin加到Path环境变量中。
    然后把下载的vcruntime140.dll放到mingw安装目录下的lib文件夹中,比如C:\MinGW\mingw64\lib

    可能需要代理才能装这个编译器,这有离线版的。

2. 开装projectQ!

  • 右键管理员身份打开Anaconda Prompt(环境变量都加好了的话直接cmd也行)

  • 输入命令:

      pip install --global-option build_ext --global-option --compiler=mingw32 projectq

    一般来说,一通各种包安装之后会开始编译C++库,然后会直接出个Error,说缺lmsvcr140 :
    error.PNG

    问题的原因是微软把这个库给移除了,导致编译程序找不着这个东西。这个时候之前下载的dll就要派上用场了,直接修改Anaconda安装目录下的C:\Application\Anaconda3\Lib\distutils\cygwinccompiler.py
    把87行改成这样(可能需要带管理员权限的编辑器)
    vc.PNG

  • 再跑一遍pip命令应该就能装好C++版的Simulator库了

    done.PNG

3. 并行效果

  • 在导入projectQ的库之前加上以下几行代码以启用多线程:

      import os
      os.environ["OMP_NUM_THREADS"] = '8'
      os.environ["OMP_PROC_BIND"] = "spread"

    线程数设置就看各自的电脑了。Linux貌似是用projectQ官方给的export命令,没用过就不多说了。

  • 运行官方示例shor算法,记得把high_level_gates里面的BasicMathGate置为False,强制模拟器去分解模幂运算对应的酉门,然后就可以开始愉快的数框框了!

    multiprocess.PNG

    实际上它不是一开始就用上多核并行,而是代码跑到途中才开始,所以可能要等一会儿才能看到CPU占用率上去。官方说的是可以用当代笔记本电脑在3分钟内分解4028033这么大的数,其中的前提是把high_level_gates里面的BasicMathGate置为True,即不分解那个最耗时的模幂运算酉门,有点作弊的感觉,我实际这么跑了一下,发现程序根本就没用多核去跑,还是单线程运行,结果大概跑了10分钟才分解完,没搞清楚为什么会这样,群里哪位大佬知道的话劳烦告知。

  • 其实开了并行感觉shor算法并没有变快多少,实实在在去分解个529(貌似只用了十几个qubit)这种数都慢得要死,有点失望QAQ。

4. 注意事项

  • 我的Anaconda是最新版64位的(2019.03),不知道低版本的会不会有问题。而且我之前电脑上就有全套Visual Studio 2017,不知道这个会不会对安装结果有影响(理论上有mingw了就不需要msvc)。

  • 32位的安装方法和以上步骤差不多(先把所有东西都换成32位的),但是更麻烦,32位的Anaconda的根目录下的include文件夹下的pyconfig.py里面如果有#define hypot _hypot这一行的话,要先注释掉再装projectQ,否则会报错。补一句,就算32位的装好了,实际跑比特数比较多的projectQ程序的时候也会有很大概率出MemoryError,所以不建议装32位的。

  • 貌似Linux或Mac上装带并行的projectQ没这么多幺蛾子。

5. 最后

一开始我是装的32位的projectQ,看到一堆报错信息一脸懵逼,折腾了好久才把这些安装问题给解决,希望能对大家有所帮助。可能大家按这个安装教程弄到最后还是会出新的Bug,到时候欢迎大家跟帖交流!


举报
分享

分享文章到朋友圈

分享文章到微博

晓东

发帖: 15粉丝: 1

发消息 + 关注

发表于2019年06月26日 10:40:15
直达本楼层的链接
沙发
显示全部楼层

感谢分享


技术文我会鼎力支持!

点赞1 评论 引用 举报

努努

发帖: 0粉丝: 0

发消息 + 关注

发表于2019年06月26日 20:16:54
直达本楼层的链接
板凳
显示全部楼层

您好,我是一个刚刚接触这方面的本科学生,按照你的方式我完成了安装,但不知道后续怎样通过这些软件去使用查看projectq,想请教一下。

点赞 评论 引用 举报

jfTANG

发帖: 1粉丝: 0

发消息 + 关注

发表于2019年06月27日 13:04:26
直达本楼层的链接
地板
显示全部楼层

projectQ有官方的文档,里面有上手示例和各个内置库函数的用法

点赞 评论 引用 举报

HiQ杨超越

发帖: 1粉丝: 0

发消息 + 关注

发表于2019年06月27日 14:20:34
直达本楼层的链接
5#
显示全部楼层

支持唐博士

点赞 评论 引用 举报

Eapslone

发帖: 0粉丝: 0

发消息 + 关注

发表于2019年06月27日 20:43:05
直达本楼层的链接
6#
显示全部楼层

这是一篇很详细的安装指南,在这里我再补充一些小细节:

  1. 如果使用的是离线版的mingw,从百度云上下载下来的有很多个版本,但在这里(64位)我们用到的是x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z 这个压缩文件,解压完成后按照指南添加环境变量。

  2. 上述指南中用到的anaconda3是最新版2019.03版本,其余版本的cygwinccomplier.py文件有可能与指南中的有区别,如果没找到指南中的87行,建议重新下载或将anaconda3更新至最新版. (改完注意保存才能生效)

完成以后应该就能成功安装!

评论
jfTANG 2019-6-27 21:01 评论

没有第87行或许更好,可能直接就没这个错误了

... 查看全部
点赞 评论 引用 举报

Cybermorphism

发帖: 0粉丝: 0

发消息 + 关注

发表于2019年06月29日 18:39:36
直达本楼层的链接
7#
显示全部楼层

cooool

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册