在搞定libdeepmd 的构建后,我们终于来到了最后一关:LAMMPS。
这里以今年 3 月发布的 LAMMPS stable_3Mar2020 为例。在寻常的安装中,我们需要把 文件夹拷进 目录下,这次也不例外,我们在 的最开头便做了这件事:
这里的 来自于我们上次构建的 libdeepmd,我们自然需要在 添加这一依赖。
可以看到,除了 libdeepmd 和 cudatoolkit 外,我们还添加了其它 LAMMPS 需要的外部依赖,如 mpich 和 zlib 等。
值得注意的是,我们拷到 目录下的 本质上是一个第三方的 package,并没有得到 LAMMPS 的官方支持。因此,我们要给 LAMMPS 的 cmake 文件打上补丁,加上这个 package:
现在,我们可以继续编写 了。首先配置 plumed:
接着,我们用 cmake 编译 LAMMPS,把能开启的包全部开启,尽可能地覆盖大多数用户:
我们通过 cmake 的参数开启了一坨 LAMMPS 的 package,同时通过配置 加入了对 libdeepmd 的链接。同时,我们通过环境变量配置了两类变体(variant):CPU 和 GPU、单精度和双精度。最后,编译,成功。
值得一提的是,如果使用者想开启更多的 package,最简单的方法是修改配方中 ,在 注释掉不想要的 variant,然后自己用 重新编译一遍。
我们用 和 开启了 shared libs 模式,这样,LAMMPS 会产生三类文件:LAMMPS 的 library、LAMMPS 的执行程序、Python package。如何将它们生成不同的库?这时我们需要用到 里的 选项:
在 中,我们把生成的文件分到了 、 和 三个子包内,同时利用 让后两个包依赖第一个包。这样,使用者便可以按需安装自己想要的功能了。
至此,、、 和 已经全部构建完成!下一篇文章中,我们将用 将这几个 package 打包成离线安装包。
领取专属 10元无门槛券
私享最新 技术干货