【环境配置】常用计算机软件环境在Windows和Linux操作系统下的配置和操作
配置总方针:
- 默认设置优先;
- 软链接优化路径优先;
SSD以目录划分优先;
系统基础配置
- 参考本站文章:
通用工具软件
Git
Git在Windows下的配置
- 全默认安装,使用默认HOME目录(Windows用户文件夹)
在存储盘创建workspace目录,在HOME中新建软链接指向该目录
mklink /D w "D:\workspace"
在workspace中可以存储项目文件,也可以用软链接指向网盘等其他(含中文)复杂目录,以优化显示路径,如:
mklink /D 202309 "D:\Netdisks\OneDrive - mails.xxxxxx.cn\xxxx xxxx\xxx\项目\2023.9"
从git存储库中删除敏感数据
- 下载BFG-Windows,将BFG.exe和bfg-1.13.0.jar所在目录添加到环境变量
运行(passwords.txt记录了敏感字符串):
bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA or bfg --replace-text passwords.txt git push --force
参考
小节附注
- 更改Git Bash打开的起始路径:去掉Git Bash快捷方式目标的
--cd-to-home
项,并将起始位置%HOMEDRIVE%%HOMEPATH%
改为需要的路径。 - mklink命令中/D相当于软链接,类似于指针,/J相当于硬链接,类似于实时cp。
C/C++ 编译环境
Windows下 CMake+MinGW64 环境
- CMake安装:CMake官网下载msi安装文件,安装中选中Add CMake to the system PATH for all users,安装完成后在命令行使用
cmake --version
查看安装结果,正确显示版本号则成功安装。 - MinGW安装:MinGW官网下载页面有许多预编译好的工具包,这里选择MingW-W64-builds下载。进入MingW-W64-builds release页面,选择x86_64-win32-seh-ucrt版本文件下载。下载完成后解压,将mingw64文件夹其中bin文件夹中的mingw32-make.exe创建一个名为make.exe的副本。将mingw64移动到C盘根目录下,添加“C:/mingw64/bin”到系统环境变量中。在命令行使用
gcc --version
、g++ --version
、make --version
查看安装结果,正确显示版本号则成功安装。 编译测试:新建一个test目录,新建hello.cpp,内容如下:
#include <iostream> int main() { std::cout << "hello world" << std::endl; system("pause"); return 0; }
新建CMakeLists.txt文件,内容如下:
cmake_minimum_required(VERSION 3.5) project(hello) file(GLOB sources "./*.cpp") add_executable(main ${sources}) SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR})
新建build空文件夹,在命令行进入build目录,使用cmake生成mingw类型的编译文件:
cmake .. -G "MinGW Makefiles"
完成后使用make
编译,结束后即可在test文件夹中看到main.exe文件。
CentOS 7.9 编译安装CMake
- cmake文件存档找到合适源码下载,例如:
wget https://cmake.org/files/v3.28/cmake-3.28.3.tar.gz
- 解压
tar -zxvf cmake-3.28.3.tar.gz
- 进入目录
cd cmake-3.28.3
,安装./bootstrap && make -j4 && sudo make install
计算化学
OpenBabel
简介
Open Babel是一个开源的化学数据转换软件库,支持多种化学数据格式之间的互相转换。它旨在成为化学、生物化学、分子生物学等领域数据交换的通用工具。Open Babel支持超过100种化学文件格式,包括常见的分子结构文件格式(如SMILES、SDF/MOL、PDB等),晶体学文件格式(如CIF),以及许多其他专业化或较少见的格式。Python用户可以通过Open Babel的Python绑定直接在脚本中使用其功能。
OpenBabel官方文档
Python包安装
pip install openbabel
- or
conda install -c conda-forge openbabel
Linux 编译安装
- 项目releases下载源码
- 解压
tar -xjvf openbabel-3.1.1-source.tar.bz2
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/softwares/openbabel ..
make
make install
导入环境变量
export PATH=/path/to//softwares/openbabel/bin:$PATH export LD_LIBRARY_PATH=/path/to//softwares/openbabel/lib:$LD_LIBRARY_PATH export BABEL_LIBDIR=/path/to//softwares/openbabel/lib/openbabel/3.1.0; export BABEL_DATADIR=/path/to/softwares/openbabel/share/openbabel/3.1.0;
- 测试
obabel -L formats
Windows
下载exe文件即可
JAX-ReaxFF
CentOS 7.9.2009
v0.1-paper发布版本
- 新建虚拟环境,以jaxff为例:
conda create -n jaxff python==3.9
激活虚拟环境后,通过conda安装cudnn和cuda环境
conda activate jaxff conda search cudnn -c conda-forge # 查看有哪些环境 conda install cudnn==8.9.2.26 -c conda-forge # 选择此版本安装
安装jaxlib(自动安装无法安装到合适版本,Jax-ReaxFF要求jaxlib>=0.1.70,<=0.3.0,下面以gpu版本为例,如需使用cpu版本请安装对应的nocuda版本)
在NOCUDA、CUDA和https://whls.blob.core.windows.net/unstable/index.html可以下载到linux和windows系统下相应的jaxlib whl安装文件。CentOS 7.9安装需要下载cp39-none-manylinux2010_x86_64
类型的whl文件(按照github说明使用Python 3.8似乎并不可行,推荐选择3.9及以上版本对应安装)。这里选择jaxlib-0.3.0+cuda11.cudnn82-cp39-none-manylinux2010_x86_64.whl
下载并安装:wget https://storage.googleapis.com/jax-releases/cuda11/jaxlib-0.3.0+cuda11.cudnn82-cp39-none-manylinux2010_x86_64.whl pip install jaxlib-0.3.0+cuda11.cudnn82-cp39-none-manylinux2010_x86_64.whl
安装jax(自动安装无法安装到合适版本,Jax-ReaxFF要求jax>=0.2.16,<=0.3.1),在https://storage.googleapis.com/jax-releases/jax_releases.html选择jax-0.3.0.tar.gz,下载并安装:
wget https://storage.googleapis.com/jax-releases/jax/jax-0.3.0.tar.gz tar -zxvf jax-0.3.0.tar.gz cd jax-0.3.0 pip install . cd ..
克隆Jax-ReaxFF项目,文件中的版本需求有些过时,会导致直接安装出现版本冲突,修改其中的setup.py文件,将
numpy>=1.18.0,<=1.22.0
改为numpy==1.22.0
,再进行安装:git clone https://github.com/cagrikymk/Jax-ReaxFF cd Jax-ReaxFF vim setup.py pip install .
检测安装成果:
$ jaxreaxff --help usage: jaxreaxff [-h] [--init_FF filename] [--params filename] [--geo filename] [--train_file filename] [--opt_method method] [--num_trials number] [--num_steps number] [--rest_search_start number] [--init_FF_type init_type] [--random_sample_count number] [--num_e_minim_steps number] [--e_minim_LR init_LR] [--end_RMSG end_RMSG] [--out_folder folder] [--save_opt option] [--cutoff2 cutoff] [--max_num_clusters max # clusters] [--num_threads # threads] [--backend backend] [--seed seed] JAX-ReaxFF driver optional arguments: -h, --help show this help message and exit --init_FF filename Initial force field file (default: ffield) --params filename Parameters file (default: params) --geo filename Geometry file (default: geo) --train_file filename Training set file (default: trainset.in) --opt_method method Optimization method - "L-BFGS-B" or "SLSQP" (default: L-BFGS-B) --num_trials number Number of trials (default: 1) --num_steps number Number of optimization steps per trial (default: 20) --rest_search_start number Restrict the search space after epoch > rest_search_start. -1 means to restricted search (default: -1) --init_FF_type init_type How to start the trials from the given initial force field. "random": Sample the parameters from uniform distribution between given ranges. "educated": Sample the parameters from a narrow uniform distribution centered at given values. "fixed": Start from the parameters given in "init_FF" file (default: fixed) --random_sample_count number Number of samples for the random parameter search before the gradient step. Only applicable to the "random" initial start, ignored otherwise. (default: 0) --num_e_minim_steps number Number of energy minimization steps (default: 0) --e_minim_LR init_LR Initial learning rate for energy minimization (default: 0.0005) --end_RMSG end_RMSG Stopping condition for E. minimization (default: 1.0) --out_folder folder Folder to store the output files (default: outputs) --save_opt option "all" or "best" "all": save all of the trained force fields "best": save only the best force field (default: best) --cutoff2 cutoff BO-cutoff for valency angles and torsion angles (default: 0.001) --max_num_clusters max # clusters Max number of clusters that can be used High number of clusters lowers the memory cost However, it increases compilation time,especially for cpus (default: 10) --num_threads # threads Number of threads to use to preprocess the data -1: # threads = # available cpu cores * 2 (default: -1) --backend backend Backend for JAX (default: gpu) --seed seed Seed value (default: 0)
算例测试:
执行如下命令: jaxreaxff --init_FF Datasets/cobalt/ffield_lit \ --params Datasets/cobalt/params \ --geo Datasets/cobalt/geo \ --train_file Datasets/cobalt/trainset.in \ --num_e_minim_steps 200 \ --e_minim_LR 1e-3 \ --out_folder ffields \ --save_opt all \ --num_trials 1 \ --num_steps 20 \ --init_FF_type fixed \ --backend gpu
常见报错解决办法
如果运行上述测试时出现如下报错,请检查是否正确安装CUDA11.8,使用
nvcc -V
是否正常。W external/org_tensorflow/tensorflow/stream_executor/gpu/asm_compiler.cc:80] Couldn't get ptxas version string: INTERNAL: Running ptxas --version returned 32512 F external/org_tensorflow/tensorflow/compiler/xla/service/gpu/ nvptx_compiler.cc:435] ptxas returned an error during compilation of ptx to sass: 'INTERNAL: ptxas exited with non-zero error code 32512, output: ' If the error message indicates that a file could not be written, please verify that sufficient filesystem space is provided.
在计算集群或一些机器中,CUDA可能不是安装在默认位置/usr/local/cuda-xx.x中,因此可能遇到上述相关错误。我们可以用module载入CUDA,或使用XLA_FLAGS引入正确的CUDA安装位置:
# To see where cuda is installed which nvcc # will print /opt/software/CUDAcore/11.1.1/bin/nvcc export XLA_FLAGS="$XLA_FLAGS --xla_gpu_cuda_data_dir=/opt/software/CUDAcore/11.1.1"
Another potential issue related XLA compilation on clusters is RuntimeError:
Unknown: no kernel image is available for execution on the device
(potentially related to singularity) and it can be solved by changing XLA_FLAGS to:export XLA_FLAGS="$XLA_FLAGS --xla_gpu_force_compilation_parallelism=1"
This flag can increase the compilation time drastically.
v0.2-2024.4update
- 建环境:
conda create -n jaxffv02 python==3.9
,进入:conda activate jaxffv02
- 手动安装reaxff_dev分支jax-md库,先前往https://github.com/cagrikymk/jax-md下载项目文件,解压后进入文件夹安装
pip install .
- 手动安装JAX-ReaxFF,先前往https://github.com/cagrikymk/JAX-ReaxFF下载v0.2分支文件或最新分支文件并解压。然后修改其中setup.py文件,主要修改INSTALL_REQUIRES依赖部分,删除
'jax_md @ git+https://github.com/cagrikymk/jax-md.git@reaxff_dev#egg=jax_md',
,如果是v0.2分支,还需要将scipy相关版本修改为'scipy>=1.2.1,<=1.12.0',
,因为scipy.linalg.tril missing from >1.12.0
。最后在文件夹中安装pip install .
。至此成功安装CPU版本jaxreaxff。 - 对CUDA11.8相关环境添加支持。首先确保环境中CUDA11.8正常,相关moudule模块已加载。
- 安装cuda11/jaxlib-0.4.22+cuda11.cudnn86-cp39-cp39-manylinux2014_x86_64.whl,下载后,执行
pip install jaxlib-0.4.22+cuda11.cudnn86-cp39-cp39-manylinux2014_x86_64.whl
。 - 安装cudnn:
conda install cudnn==8.9.2.26 -c conda-forge
- 安装cupti:
conda install cupti
- 使用
jaxreaxff --help
验证安装,如无CUDA加载失败即安装成功
参考资料
本站所有原创文章版权所有,禁止转载,欢迎转发文章链接,参考请标明出处并连接到本站相应页面。所有注明的转载内容版权归原作者所有,如不慎侵权请原作者联系本站删除。