|
|
本帖最后由 snljty 于 2022-4-4 09:44 编辑
注:2022-02-16本文做了较大更新。建议用这个版本。
现在的xtb版本(本文发文的时候是6.4.1)编译比之前的版本容易多了,不需要Meson和Ninja了。只要有cmake也完全可以。
下面给出的基于TDM-gcc-64bit 10.3.0和cmake-win64 3.22.1以及Intel MKL 2022.0.0编译Windows版xtb 6.4.1的方法。本文假设操作系统为Windows10 64位,硬件为x86_64架构。
链接:https://pan.baidu.com/s/1qMuo24WRv1VFy3ZlA6C74g
提取码:bdsb
0.如果完全对编译没兴趣只想使用,可以下载本人编译的版本
MKL库有点大,某里网盘又不让分享zip,只能传很辣鸡的某毒网盘了,见谅。下载后解压到C:\xtb-6.4.1。这时候你应该有C:\xtb-6.4.1\bin等目录,然后在本文搜索--GOTO--,直接接着读后面的内容,跳过中间的内容即可。
1. 下载cmake-win64并安装
本文使用的是3.22.1,链接在cmake-3.22.1-windows-64。安装后
假设安装目录在C:\cmake-3.22.1-win64-x64,将C:\cmake-3.22.1-win64-x64\bin添加到环境变量PATH里面
如果不明白上面这句话,可以上网搜一下,比如Windows如何设置环境变量。(推荐放在前面,覆盖掉其他可能的gnu编译器,需要的是一个比较新的版本)。
2.下载TDM-gcc-64bit 10.3.0并安装
TDM-GCC-10.3.0-64bits
这个安装没有难度,不做过多提示,注意gcc,g++,gfortran以及openmp等部分都装上了。默认安装应该就可以。
假设安装目录是C:\TDM-GCC-64,将C:\TDM-GCC-64添加到环境变量PATH里面最前面。(注:临时做这一步只要在cmd里执行C:\TDM-GCC-64\mingwvars.bat即可)
将C:\TDM-GCC-64\bin里的mingw32-make.exe复制一份到同目录下,重命名为make.exe。
3. 下载Intel OneAPI ,安装MKL近年来Intel全家桶已经无需学术账号申请Intel Parallel Studio XE(虽然MPI新版可能有问题),而是被统一整合到了Intel OneAPI。只要用普通账号注册即可。
安装Intel OneAPI前,建议先安装Microsoft Visual Studio 2019,方便一些环境整合。到目前为止虽然已经出了Microsoft Visual Studio 2022,但是不推荐使用,一个重要原因是目前最新版OneAPI并没有与其很好地整合。
Intel OneAPI Toolkits有多个子工具包,科学计算常用的只有Intel oneAPI Base Toolkit和Intel oneAPI HPC Toolkit。其中Intel C/C++编译器以及Intel MKL在前者,Intel Fortran编译器以及Intel MPI在后者。本文只需要前者,因为使用的是GNU编译器。如果对开发感兴趣,建议装完前者后把后者也装上。前者下载地址在Intel OneAPI Base Toolkit for Windows,后者在Intel OneAPI HPC Toolkit for Windows,均点击download下载即可,下载后双击运行,按照提示一步一步走就行。可以选择要装的组件,但是对于本文的目的至少Intel Math Kernel Library必须要装的。如果不装这个用refBLAS和LAPACK虽然也能编译,但是会慢很多而且可能部分功能不能并行。
将C:\Program Files (x86)\Intel\oneAPI\mkl\latest\redist\intel64和C:\Program Files (x86)\Intel\oneAPI\mkl\latest\bin\intel64添加到PATH里面最前面。
设置环境变量MKLROOT,值为C:\Program Files (x86)\Intel\oneAPI\mkl\latest
设置环境变量LIB为C:\Program Files (x86)\Intel\oneAPI\mkl\latest\lib\intel64
注:临时做这三步只要在cmd里执行"C:\Program Files (x86)\Intel\oneAPI\mkl\latest\env\vars.bat" intel64 llp64即可)
4.下载xtb并编译安装。
github库在xtb-git,可以用git clone下载也可以直接下载压缩包。目前版本源码压缩包在xtb-6.4.1-src。如果访问不了,你需要正确的上网姿势。下载后解压。
启动cmd,用
进入解压后的目录。
执行
- set CC=gcc
- set FC=gfortran
- mkdir build
- cd build
- cmake .. -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=C:\xtb-6.4.1
- make -j 8
- make install
复制代码 其中make -j 8是8核并行编译,建议改成物理核心数。这会将xtb安装在C:\xtb-6.4.1里面。
注意这个过程中会自动联网下载test-drive并编译(也在github上)。请保持网络畅通。
编译完成后
--GOTO--
将C:\xtb-6.4.1\bin添加到环境变量PATH,并新建环境变量XTBPATH,值设为C:\xtb-6.4.1\share\xtb。设置环境变量的方法上面有。
设置环境变量OMP_NUM_THREADS=8,1。这里8是你想要的并行核数,建议等于物理核心数。
设置环境变量MKL_NUM_THREADS=8。这里8同理。
设置环境变量OMP_STACKSIZE=4G代表用4GB内存。(这里有风险,这个环境变量可能导致Gaussian等软件不能正常使用。如果不设这个运行不报错,就不用考虑)。
由于本文提供的压缩包已经将必要的动态库放进xtb的bin目录下,因此如果只想用本文链接预编译好的版本,--GOTO--前面的所有设置环境变量的操作都可以跳过。不使用静态库的主要原因是Intel编译器编译的MKL静态库和GNU编译器肯定是没法兼容的。Intel编译器的Windows版只提供Fortran编译器,不提供C/C++的,还要和MSVC一起整,太麻烦就不考虑了。
设置XTBPATH是由于gfn0要从里面读参数。
这样编译出的版本,链接的gcc,gfortran和openmp等库都是动态链接,所以如果把gnu编译器的bin目录从PATH里面除掉,运行xtb的时候就会因为找不到这些库报错。因此已经将需要的gnu编译器的运行库添加到上面预编译版本的压缩包里了,使用预编译版本不需要考虑这些问题。
运行的时候在输入文件的目录启动cmd,如果不知道怎么做,看在指定目录下启动cmd的方法一。然后输入chcp 65001回车,接着输入xtb后面接参数即可。
欢迎反馈。
做了几个简单的测试,和之前版本结果一致。
下面的内容不用看,过时了。就是打半天字不想删了。
这是本文之前版本提到的在Windows下编译blas、lapack、cblas以及lapacke静态库的方法,这有助于自己在Windows下开发一些依赖这些数学库的小程序。目前来看已经没什么意义了,MKL和OpenBLAS比这个香多了。这段现在不用看了。
下载lapack并编译安装。
本文使用3.9.1版本。
地址lapack-3.9.1
下载后解压到某个目录,启动cmd,用
进入解压后的目录。
- set CC=gcc
- set FC=gfortran
- set CXX=g++
- mkdir build
- cd build
- cmake .. -G "MinGW Makefiles" -DLAPACKE=ON -DCBLAS=ON -DCMAKE_INSTALL_LIBDIR=C:\lapack-3.9.1\lib -DCMAKE_INSTALL_INCLUDEDIR=C:\lapack-3.9.1\include
- cmake --build . -j8 --target install
复制代码
就会安装到C:\lapack-3.9.1。其中-j8是8核并行编译,建议改成CU物理核心数。
将C:\lapack-3.9.1\lib加入环境变量PATH。即可
|
评分 Rate
-
查看全部评分 View all ratings
|