配置总方针:

  • 默认设置优先;
  • 软链接优化路径优先;
  • SSD以目录划分优先;

系统基础配置

通用工具软件

Git

Git在Windows下的配置

  1. 全默认安装,使用默认HOME目录(Windows用户文件夹)
  2. 在存储盘创建workspace目录,在HOME中新建软链接指向该目录

    mklink /D w "D:\workspace"
  3. 在workspace中可以存储项目文件,也可以用软链接指向网盘等其他(含中文)复杂目录,以优化显示路径,如:

    mklink /D 202309 "D:\Netdisks\OneDrive - mails.xxxxxx.cn\xxxx xxxx\xxx\项目\2023.9"

从git存储库中删除敏感数据

  1. 下载BFG-Windows,将BFG.exe和bfg-1.13.0.jar所在目录添加到环境变量
  2. 运行(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 环境

  1. CMake安装:CMake官网下载msi安装文件,安装中选中Add CMake to the system PATH for all users,安装完成后在命令行使用cmake --version查看安装结果,正确显示版本号则成功安装。
  2. 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 --versiong++ --versionmake --version查看安装结果,正确显示版本号则成功安装。
  3. 编译测试:新建一个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

  1. cmake文件存档找到合适源码下载,例如:wget https://cmake.org/files/v3.28/cmake-3.28.3.tar.gz
  2. 解压tar -zxvf cmake-3.28.3.tar.gz
  3. 进入目录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 编译安装

  1. 项目releases下载源码
  2. 解压tar -xjvf openbabel-3.1.1-source.tar.bz2
  3. mkdir build && cd build
  4. cmake -DCMAKE_INSTALL_PREFIX=/path/to/softwares/openbabel ..
  5. make
  6. make install
  7. 导入环境变量

    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;
  8. 测试obabel -L formats

Windows

下载exe文件即可

JAX-ReaxFF

CentOS 7.9.2009

v0.1-paper发布版本

  1. 新建虚拟环境,以jaxff为例:conda create -n jaxff python==3.9
  2. 激活虚拟环境后,通过conda安装cudnn和cuda环境

    conda activate jaxff
    conda search cudnn -c conda-forge   # 查看有哪些环境
    conda install cudnn==8.9.2.26 -c conda-forge   # 选择此版本安装
  3. 安装jaxlib(自动安装无法安装到合适版本,Jax-ReaxFF要求jaxlib>=0.1.70,<=0.3.0,下面以gpu版本为例,如需使用cpu版本请安装对应的nocuda版本)
    NOCUDACUDAhttps://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
  4. 安装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 ..
  5. 克隆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 .
  6. 检测安装成果:

    $ 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)
  7. 算例测试:

    执行如下命令:
    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
  8. 常见报错解决办法

    • 如果运行上述测试时出现如下报错,请检查是否正确安装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

  1. 建环境:conda create -n jaxffv02 python==3.9,进入:conda activate jaxffv02
  2. 手动安装reaxff_dev分支jax-md库,先前往https://github.com/cagrikymk/jax-md下载项目文件,解压后进入文件夹安装pip install .
  3. 手动安装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。
  4. 对CUDA11.8相关环境添加支持。首先确保环境中CUDA11.8正常,相关moudule模块已加载。
  5. 安装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
  6. 安装cudnn:conda install cudnn==8.9.2.26 -c conda-forge
  7. 安装cupti:conda install cupti
  8. 使用jaxreaxff --help验证安装,如无CUDA加载失败即安装成功

参考资料