Esper 发布的文章

翻车历史见这里

我胡汉三又回来了!!

编译的版本是Tensorflow 1.14。

为什么不用2?因为据说API大改,一堆坑。
像我这种改别人代码跑跑的肯定用不得

这次遇到的问题:

  1. 需要按照要求装MSYS,并且要使用MSYS2环境而不是MinGW环境(Github for Windows提供了MinGW,但是没有pacman);
  2. 记得适当修改bazel的缓存位置(真香),每次运行命令时使用选项--output_user_root,避免把缓存写在叠瓦技术(SMR)的机械硬盘上,那速度慢得爽的飞起;
  3. LLVM更新速度过快,而且现在已经更改项目名为llvm-project(之前是llvm),尽量使用和tensorflow发布时间相近的LLVM快照(时间过久会失效,但这不像Github的风格啊= =),在${PROJECT_ROOT}/tensorflow/workspace.bzl中可以找到并修改引用的LLVM版本;
  4. 截至Tensorflow 1.14和本文撰写时(2020/2/8),XLAnccl是不支持Windows平台或者支持的不是很好的(不折腾的话,几乎无法编译成功),不建议启用这两个特性;
  5. (某些特殊版本)需要修改${PROJECT_ROOT}/.bazelrc中,把build:cuda--define=using_cuda_nvcc=true注释掉,因为在Windows平台上不能使用--config=nonccl选项取消使用nccl,会报错;
  6. 有时候会遇到error C2993: 'Derived': 非类型模板参数 '__formal' 的不合法类型。在pytorch的issues里找到了类似的问题,说是由于依赖关系和多线程编译竞争带来的问题,设置为单线程编译--jobs 1可以解决问题(未测试):https://github.com/pytorch/pytorch/issues/25393

=============================================================

20200216补充

算了,放弃了,一直说是Eigen有问题,好像是关于GPU设备代码上找不到std::conj定义一类的问题。这几天网上冲浪的时候发现风评CUDA nvcc对于STL的支持很差,可能与这个有关。但是有dalao硬是编译出来了,就很不服气。在个人笔记本上编译特别浪费时间,1-2h起步,而且从来没成功过= =。等这波病情过去,借到好点的CPU资源再说吧。

我怀疑你就是想开车,但是我没有证据

看某油管上的量子计算课程时,了解到了有一种东西叫做Ket Notation,即Ket标记,说的就是量子力学中常见的量子态表达方式,比如 \lvert \psi \rangle ,这个|>外壳就是Ket标记的特征。

然后说到,Ket标记实际上是向量的一种表达方式,也就是说Ket标记可以看作一个列向量

再之后,看到QuEST的论文里写了这么个东西:

\rho=\sum_{j=0}^{2^{N}-1} \sum_{k=0}^{2^{N}-1}\alpha_{j,k}|j\rangle \langle k\rvert \rightarrow \rho'= \sum_{n=0}^{2^{2N}-1} \alpha_{n}'\lvert n\rangle

就开始纳闷这个\langle k\rvert是什么东西? 查了一下之后发现也是个向量,是通过Ket向量转置共轭操作后得到的,即行向量。

然后矩阵乘法可以这么表示:\langle j\rvert k\rangle表示列向量j和行向量k相乘。

然后还没完。|j\rangle \langle k\rvert 这个操作又是有特殊定义的,当j=k的时候,可以用于表示投影操作,被投影变量放在后面。

certbot-auto这个东西真的有毒,搞个什么选项都要用户交互,搞得我以为自己每三个月要上一次服务器。。

一些可能会用到的选项:

在为域名申请证书的时候,先会要过一个challenge(认证),以证明该域名、该服务器都是归你所有。然后是三个方法(具体是啥给忘了),要手动选择进行验证。有个参数叫--preferred-challenges可以用于在命令行选择认证方法,不用交互,后面跟的参数值就是手动填写时括号里给的缩写。

续签的时候用的是另一个参数,叫做--authenticator,用于指定续签时的认证方式,同样是三选一,参数值也是在交互时给出了。

没看文档,看别人写的时候有点懵,顺便记录一下。

add_library(<name> SHARED ${<LIBNAME>_SRC})

比如说项目顶级目录为/project,按照CMake的文件夹结构,下面应该有一个src子目录存放所有的源码,则用add_library命令调用的方法是add_library(project SHARED ${project_SRC})

其中project_SRC代指的就是/project/src这个目录,变量名不用预先定义。

又是一个自由的,变量名有特殊含义的编程语言= =

在拿绘制Julia集练手的时候,取参数为-0.8+0.156i的时候,实轴方向有效区域大小约在-2~2之间,而虚轴方向有效区域大小为-1~1。然后用ContourPlot绘制的时候,发现不论xy取值区域大小关系如何,默认都会化画成一个正方形。然后发现自己语文水平8行,不知道该搜什么。。。

想了老半天,试了intervalscale都没有什么效果。不过搜着搜着发现了ratio这一关键词,顺藤摸瓜找到了AspectRatio这一参数。经过试验,该参数至少在ContourPlot内可用。

不过自己画的效果果然还是没有内置函数好,JuliaSetPlot函数和自己根据CUDA编程书设计的Julia函数画起图来效果简直是一个天上一个地下= =