# 软件资源

部分软件资源

# GNU

### GNU Compiler Collection

|Name|Path|Module|
|---|---|---|
|GNU Compiler Collection (GCC) 12.1.0 & GNU Binutils 2.38|/fs00/software/gcc/12.1.0|gcc/12.1.0|
|GNU Compiler Collection (GCC) 11.3.0 & GNU Binutils 2.36.1|/fs00/software/gcc/11.3.0|gcc/11.3.0|
|GNU Compiler Collection (GCC) 10.5.0 & GNU Binutils 2.34|/fs00/software/gcc/10.5.0|gcc/10.5.0|
|GNU Compiler Collection (GCC) 9.5.0 & GNU Binutils 2.32|/fs00/software/gcc/9.5.0|gcc/9.5.0|
|GNU Compiler Collection (GCC) 8.5.0 & GNU Binutils 2.30|/fs00/software/gcc/8.5.0|gcc/8.5.0|
|GNU Compiler Collection (GCC) 7.5.0 & GNU Binutils 2.28.1|/fs00/software/gcc/7.5.0|gcc/7.5.0|
|GNU Compiler Collection (GCC) 6.5.0 & GNU Binutils 2.26.1|/fs00/software/gcc/6.5.0|gcc/6.5.0|
|GNU Compiler Collection (GCC) 5.4.0|/fs00/software/gcc/5.4.0|gcc/5.4.0|

### GNU Make

|Name|Path|Module|
|---|---|---|
|GNU Make 4.3|/fs00/software/make/4.3|make/4.3|
|GNU Make 4.2.1|/fs00/software/make/4.2.1|make/4.2.1|
|GNU Make 4.2|/fs00/software/make/4.2|make/4.2|

### GNU Scientific Library

|Name|Compiler|Path|Module|
|---|---|---|---|
|GNU Scientific Library (GSL) 2.7.1|GCC 12.1.0|/fs00/software/gsl/2.7.1-gcc12.1.0|gsl/2.7.1-gcc12.1.0|
|GNU Scientific Library (GSL) 2.5|GCC 8.3.0|/fs00/software/gsl/2.5-gcc8.3|gsl/2.5-gcc8.3|

### GNU C Library

|Name|Compiler|Path|Module|
|---|---|---|---|
|GNU C Library (glibc) 2.36|GCC 12.1.0|/fs00/software/glibc/2.36-gcc12.1.0|glibc/2.36-gcc12.1.0|
|GNU C Library (glibc) 2.30|GCC 9.2.0|/fs00/software/glibc/2.30-gcc9.2.0|glibc/2.30-gcc9.2.0|

### GNU Binutils

|Name|Compiler|Path|Module|
|---|---|---|---|
|GNU Binutils 2.38|GCC 12.1.0|/fs00/software/binutils/2.38-gcc12.1.0|binutils/2.38-gcc12.1.0|
|GNU Binutils 2.27|GCC 5.4.0|/fs00/software/binutils/2.27-gcc5.4.0|binutils/2.27-gcc5.4.0|

# Intel

### Intel oneAPI
|Name|Path|MODULEPATH|
|---|---|---|
|Intel oneAPI Base Toolkit 2024.0.1<br>Intel HPC Toolkit 2024.0.1|/fs00/software/intel/oneapi2024.0|/fs00/software/modulefiles/oneapi/2024.0|

### Intel Parallel Studio
|Name|Path|Module|
|---|---|---|
|Intel Parallel Studio XE 2020 Update 2 Cluster Edition|/fs00/software/intel/ps2020u2|ips/2020u2|
|Intel Parallel Studio XE 2019 Update 5 Cluster Edition|/fs00/software/intel/ps2019u5|ips/2019u5|
|Intel Parallel Studio XE 2018 Update 4 Cluster Edition|/fs00/software/intel/ps2018u4|ips/2018u4|
|Intel Parallel Studio XE 2017 Update 6 Cluster Edition|/fs00/software/intel/ps2017u6|ips/2017u6|
|Intel Parallel Studio XE 2017 Update 2 Cluster Edition|/fs00/software/intel/ps2017u2|ips/2017u2|
|Intel Parallel Studio XE 2016 Update 4 Cluster Edition|/fs00/software/intel/ps2016u4|ips/2016u4|
|Intel Parallel Studio XE 2015 Update 6 Cluster Edition|/fs00/software/intel/ps2015u6|ips/2015u6|
|Intel Cluster Studio XE 2013 Service Pack 1 (SP1) Update 1|/fs00/software/intel/cs2013sp1u1|ics/2013sp1u1|
|Intel Cluster Studio XE 2013|/fs00/software/intel/cs2013|ics/2013|
|Intel Parallel Studio XE 2011 SP1 Update 3|/fs00/software/intel/ps2011sp1u3|ips/2011sp1u3|

### Intel Distribution for Python

|Name|Path|
|---|---|
|Intel Distribution for Python 2.7 2019 Update 5|/fs00/software/intel/ps2019u5/intelpython2|
|Intel Distribution for Python 3.6 2019 Update 5|/fs00/software/intel/ps2019u5/intelpython3|
|Intel Distribution for Python 2.7 2018 Update 3|/fs00/software/intel/python2018u3/intelpython2|
|Intel Distribution for Python 3.6 2018 Update 3|/fs00/software/intel/python2018u3/intelpython3|
|Intel Distribution for Python 2.7 2017 Update 3|/fs00/software/intel/python2017u3/intelpython2|
|Intel Distribution for Python 3.5 2017 Update 3|/fs00/software/intel/python2017u3/intelpython3|

# NVIDIA

### CUDA Toolkit

|Name|Path|Module|
|---|---|---|
|CUDA Toolkit 12.3.1|/fs00/software/cuda/12.3.1|cuda/12.3.1|
|CUDA Toolkit 12.0.0|/fs00/software/cuda/12.0.0|cuda/12.0.0|
|CUDA Toolkit 11.8.0|/fs00/software/cuda/11.8.0|cuda/11.8.0|
|CUDA Toolkit 11.2.0|/fs00/software/cuda/11.2.0|cuda/11.2.0|
|CUDA Toolkit 10.2.89|/fs00/software/cuda/10.2.89|cuda/10.2.89|
|CUDA Toolkit 10.1.243|/fs00/software/cuda/10.1.243|cuda/10.1.243|
|CUDA Toolkit 10.0.130|/fs00/software/cuda/10.0.130|cuda/10.0.130|
|CUDA Toolkit 9.2.148|/fs00/software/cuda/9.2.148|cuda/9.2.148|
|CUDA Toolkit 9.0.176 with Patch 3|/fs00/software/cuda/9.0.176|cuda/9.0.176|
|CUDA Toolkit 8.0 GA2 8.0.61 with Patch 2|/fs00/software/cuda/8.0.61|cuda/8.0.61|

### cuDNN

|Name|CUDA|Path|Module|
|---|---|---|---|
|cuDNN v8.9.7.29|12.x|/fs00/software/cudnn/8.9.7.29-cuda12|cudnn/8.9.7.29-cuda12|
|cuDNN v8.9.7.29|11.x|/fs00/software/cudnn/8.9.7.29-cuda11|cudnn/8.9.7.29-cuda11|
|cuDNN v8.7.0.84|11.x|/fs00/software/cudnn/8.7.0.84-cuda11|cudnn/8.7.0.84-cuda11|
|cuDNN v8.7.0.84|10.2|/fs00/software/cudnn/8.7.0.84-cuda10|cudnn/8.7.0.84-cuda10|
|cuDNN v8.1.1.33|11.2|/fs00/software/cudnn/11.2-v8.1.1.33|cudnn/11.2-v8.1.1.33|
|cuDNN v8.2.2.26|10.2|/fs00/software/cudnn/10.2-v8.2.2.26|cudnn/10.2-v8.2.2.26|
|cuDNN v7.6.5.32|10.2|/fs00/software/cudnn/10.2-v7.6.5.32|cudnn/10.2-v7.6.5.32|
|cuDNN v7.6.4.38|10.1|/fs00/software/cudnn/10.1-v7.6.4.38|cudnn/10.1-v7.6.4.38|
|cuDNN v7.6.5.32|10.0|/fs00/software/cudnn/10.0-v7.6.5.32|cudnn/10.0-v7.6.5.32|
|cuDNN v7.1.4|9.2|/fs00/software/cudnn/9.2-v7.1.4|cudnn/9.2-v7.1.4|
|cuDNN v7.1.4|9.0|/fs00/software/cudnn/9.0-v7.1.4|cudnn/9.0-v7.1.4|
|cuDNN v7.0.5|8.0|/fs00/software/cudnn/8.0-v7.0.5|cudnn/8.0-v7.0.5|
|cuDNN v6.0|8.0|/fs00/software/cudnn/8.0-v6.0|cudnn/8.0-v6.0|
|cuDNN v5.1|8.0|/fs00/software/cudnn/8.0-v5.1|cudnn/8.0-v5.1|

### HPC SDK

|Name|Path|MODULEPATH|
|---|---|---|
|HPC SDK 23.11|/fs00/software/nvhpc/23.11|/fs00/software/nvhpc/23.11/modulefiles|
|HPC SDK 22.11|/fs00/software/nvhpc/22.11|/fs00/software/nvhpc/22.11/modulefiles|
|HPC SDK 21.3|/fs00/software/nvhpc/21.3|/fs00/software/nvhpc/21.3/modulefiles|
|HPC SDK 20.9|/fs00/software/nvhpc/20.9|/fs00/software/nvhpc/20.9/modulefiles|

### HPC-X

|Name|CUDA|Path|MODULEPATH|
|---|---|---|---|
|HPC-X 2.17.1|12.x|/fs00/software/hpcx/2.17.1-cuda12|/fs00/software/hpcx/2.17.1-cuda12/modulefiles|

### NCCL

|Name|CUDA|Path|Module|
|---|---|---|---|
|NCCL 2.19.3|12.3|/fs00/software/nccl/2.19.3-cuda12.3|nccl/2.19.3-cuda12.3|
|NCCL 2.16.2|12.0|/fs00/software/nccl/2.16.2-cuda12.0|nccl/2.16.2-cuda12.0|
|NCCL 2.16.2|11.8|/fs00/software/nccl/2.16.2-cuda11.8|nccl/2.16.2-cuda11.8|
|NCCL 2.16.2|11.0|/fs00/software/nccl/2.16.2-cuda11.0|nccl/2.16.2-cuda11.0|
|NCCL v2.5.6|10.2|/fs00/software/nccl/10.2-v2.5.6|nccl/10.2-v2.5.6|
|NCCL v2.4.8|10.1|/fs00/software/nccl/10.1-v2.4.8|nccl/10.1-v2.4.8|

### TensorRT

|Name|CUDA|cuDNN|Path|Module|
|---|---|---|---|---|
|TensorRT 8.6.1.6|12.0||/fs00/software/tensorrt/8.6.1.6-cuda12.0|tensorrt/8.6.1.6-cuda12.0|
|TensorRT 8.6.1.6|11.8||/fs00/software/tensorrt/8.6.1.6-cuda11.8|tensorrt/8.6.1.6-cuda11.8|
|TensorRT 8.5.2.2|11.8|8.6|/fs00/software/tensorrt/8.5.2.2-cuda11.8-cudnn8.6|tensorrt/8.5.2.2-cuda11.8-cudnn8.6|
|TensorRT 8.5.2.2|10.2|8.6|/fs00/software/tensorrt/8.5.2.2-cuda10.2-cudnn8.6|tensorrt/8.5.2.2-cuda10.2-cudnn8.6|
|TensorRT 8.2.0.6|11.4|8.2|/fs00/software/tensorrt/8.2.0.6-cuda11.4-cudnn8.2|tensorrt/8.2.0.6-cuda11.4-cudnn8.2|
|TensorRT 8.2.0.6|10.2|8.2|/fs00/software/tensorrt/8.2.0.6-cuda11.4-cudnn8.2|tensorrt/8.2.0.6-cuda10.2-cudnn8.2|

# AMD

### AMD Optimizing C/C++ Compiler

|Name|Path|Module|
|---|---|---|
|AMD Optimizing C/C++ Compiler 2.3.0 (AOCC)|/fs00/software/aocc/2.3.0|aocc/2.3.0|
|AMD Optimizing C/C++ Compiler 2.1.0 (AOCC)|/fs00/software/aocc/2.1.0|aocc/2.1.0|
|AMD Optimizing C/C++ Compiler 2.0.0 (AOCC)|/fs00/software/aocc/2.0.0|aocc/2.0.0|

### AMD Optimizing CPU Libraries

|Name|Path|Module|
|---|---|---|
|AMD Optimizing CPU Libraries 2.2 (AOCL)|/fs00/software/aocl/2.2|aocl/2.2|
|AMD Optimizing CPU Libraries 2.0 (AOCL)|/fs00/software/aocl/2.0|aocl/2.0|

# Python

**请使用者自行解决License问题，本中心概不负责！**

### Anaconda

|Name|Path|Module|
|---|---|---|
|Anaconda 3 (Python3) Latest|/fs00/software/anaconda/3|anaconda/3|
|Anaconda 2 (Python2) Latest|/fs00/software/anaconda/2|anaconda/2|
|Anaconda 5.0.1 (Python 3.6)|/fs00/software/anaconda/3-5.0.1|anaconda/3-5.0.1|
|Anaconda 5.0.1 (Python 2.7)|/fs00/software/anaconda/2-5.0.1|anaconda/2-5.0.1|
|Anaconda 3.4.1 (Python 3.6)|/fs00/software/anaconda/3-3.4.1|anaconda/3-3.4.1|
|Anaconda 3.4.1 (Python 2.7)|/fs00/software/anaconda/2-3.4.1|anaconda/2-3.4.1|

# Golang

### Golang

|Name|Path|Module|
|---|---|---|
|Golang 1.21.6|/fs00/software/golang/1.21.6|golang/1.21.6|
|Golang 1.19.5|/fs00/software/golang/1.19.5|golang/1.19.5|
|Golang 1.18.10|/fs00/software/golang/1.18.7|golang/1.18.10|
|Golang 1.17.13|/fs00/software/golang/1.17.13|golang/1.17.13|
|Golang 1.16.15|/fs00/software/golang/1.16.15|golang/1.16.15|
|Golang 1.15.15|/fs00/software/golang/1.15.15|golang/1.15.15|

# Open MPI

### Open MPI

|Name|Compiler|Path|Module|
|---|---|---|---|
|Open MPI 4.1.2|GNU Compiler Collection (GCC) 11.2.0|/fs00/software/openmpi/4.1.2-gcc11.2.0|openmpi/4.1.2-gcc11.2.0|
|Open MPI 3.1.2|GNU Compiler Collection (GCC) 8.2.0|/fs00/software/openmpi/3.1.2-gcc8.2.0|openmpi/3.1.2-gcc8.2.0|
|Open MPI 1.10.0|Intel C++ Compiler XE 15.0 Update 3 & Fortran Compiler XE 15.0 Update 3|/fs00/software/openmpi/1.10.0-iccifort-15.0.3|openmpi/1.10.0-iccifort-15.0.3|
|Open MPI 1.10.0|GNU Compiler Collection (GCC) 5.2.0|/fs00/software/openmpi/1.10.0-gcc-5.2.0|openmpi/1.10.0-gcc-5.2.0|
|Open MPI 1.10.5|GNU Compiler Collection (GCC) 5.4.0|/fs00/software/openmpi/1.10.5-gcc5.4.0|openmpi/1.10.5-gcc5.4.0|

# Tcl/TK

### Tcl/Tk
|Name|Compiler|Path|Module|
|---|---|---|---|
|Tcl/Tk 8.6.12|GNU Compiler Collection (GCC) 11.2.0|/fs00/software/tcl/8.6.12-gcc11.2.0|tcl/8.6.12-gcc11.2.0|
|Tcl/Tk 8.6.6|Intel Parallel Studio XE 2017 Update 2|/fs00/software/tcl/8.6.6-ips2017u2|tcl/8.6.6-ips2017u2|
|Tcl/Tk 8.6.4||/fs00/software/tcl/8.6.4|tcl/8.6.4|
|Tcl/Tk 8.6.4|Intel Parallel Studio XE 2016 Update 2|/fs00/software/tcl/8.6.4-ips2016u2|tcl/8.6.4-ips2016u2|
|Tcl/Tk 8.6.4|Intel Parallel Studio XE 2016 Update 2|/fs00/software/tcl/8.6.4-ips2016u2-avx2|tcl/8.6.4-ips2016u2-avx2|

# 计算软件

**请使用者自行解决License问题，本中心概不负责！**

### FFTW 3.3.7

/fs00/software/fftw/3.3.7-iccifort-17.0.6-* 依赖iccifort/17.0.6

### FFTW 3.3.8

/fs00/software/fftw/3.3.8-ips2019u5 依赖ips/2019u5

### LAMMPS 11Aug17

/fs00/software/lammps/11Aug17

### OpenFOAM® v1806

/fs00/software/openfoam/v1806-ips2017u6

source /fs00/software/openfoam/v1806-ips2017u6/OpenFOAM-v1806/etc/bashrc

### P4vasp 0.3.29

/fs00/software/p4vasp/0.3.29

Modulefile: p4vasp/0.3.29

### Phonopy 1.11.2

/fs00/software/phonopy/1.11.2

### Quantum ESPRESSO 5.2.0 & 6.1

/fs00/software/qe/5.2.0-ips2015u3/ 依赖ips/2015u3

/fs00/software/qe/6.1-ips2017u2/ 依赖ips/2017u2

### ShengBTE

/fs00/software/shengbte 依赖 iccifort/15.0.3 openmpi/1.10.0-iccifort-15.0.3

### Siesta 3.2-pl-5

/fs00/software/siesta/3.2-pl-5 依赖ips/2017u6

### thirdorder 1.0.2 04d3f46feb78

/fs00/software/thirdorder/1.0.2

Modulefile: thirdorder/1.0.2 依赖 anaconda/2-4.3.1 spglib/1.9.9

### TBPLaS

/fs00/software/tbplas

#### MKL+MPI Version

Modulefile:
- oneapi/2024.0/compiler/2024.0.2
- oneapi/2024.0/ifort/2024.0.2
- oneapi/2024.0/mkl/2024.0
- oneapi/2024.0/mpi/2021.11

# VASP6 GPU 编译

## VASP6 GPU（N卡） 编译实例
**王勇 (孙建课题组)**

**人工微结构科学与技术协同创新中心高性能计算中心**

根据vasp官方给出的信息，以后vasp gpu版本会着重开发openacc标准的版本，之前老cuda版本会逐渐被废弃，因此我们以vasp6.2 的openacc版本结合官方指导进行编译。
官方指导链接

	https://www.vasp.at/wiki/index.php/OpenACC_GPU_port_of_VASP

## 编译器：
Openacc gpu Vasp6官方给出编译器意见为使用NVIDIA HPC-SDK或者 PGI's Compilers & Tools (version >=19.10)。在此vasp官方建议使用NVIDIA HPC-SDK且版本号最好为**20.9**，因为之后的版本可能会有一些对于vasp的bug。

关于NVIDIA HPC-SDK 20.9的安装，见

	https://developer.nvidia.com/nvidia-hpc-sdk-209-downloads 

相关主页，安装流程十分简单，使用wget下载，一键式安装，对于不连接外网的节点，可以手动下载tarball压缩包，上传后本地解压，在此不再赘述，安装前请使用nvidia-smi命令查看本地硬件驱动和兼容的cuda版本（version >=10.0），确保匹配，必要时候需升级硬件驱动。

安装HPC-SDK 20.9的过程中会询问安装路径，我们以路径为`/usr/software/nv-hpcsdk`为例，在安装过程中指定此路径为例以后，需要设定环境变量：
```
export NVARCH=`uname -s`_`uname -m`;
export NVCOMPILERS=/usr/software/nv-hpcsdk #修改此处为安装路径
export PATH=$NVCOMPILERS/$NVARCH/20.9/compilers/bin:$PATH
export MANPATH=$MANPATH:$NVCOMPILERS/$NVARCH/20.9/compilers/man
export LD_LIBRARY_PATH=$NVCOMPILERS/$NVARCH/20.9/compilers/lib/:$LD_LIBRARY_PATH
export PATH=$NVCOMPILERS/$NVARCH/20.9/comm_libs/mpi/bin/:$PATH
```
上述可以每次使用gpu vasp6时手动添加在任务脚本，也可直接写在bashrc，但是不建议直接写在bashrc，可能会和intel版本的 mpirun冲突，造成其他之前软件的运行问题。

## 依赖库：
安装完NVIDIA HPC-SDK 20.9以后，还需要将软件运行需要的依赖库整理好，主要有CUDA Toolkit, QD, NCCL, 以及FFTW, 前三项直接包含在HPC-SDK，不需要单独安装。

对于FFTW，最好不要用nvhpc-sdk的编译器进行安装，如果设置了上面安装完hpc-sdk的环境变量，请先用GNU或者intel的编译器环境变量进行覆盖，不然可能会导致计算效率问题，可以自己编译，也可以直接使用集群内已经安装好的版本，路径为`/fs00/software/fftw/3.3.8-ips2019u5`

## 编译：
准备好编译器和依赖库以后，就可以进行编译了，进入vasp6.2根目录，

	cp arch/makefile.include.linux_nv_acc makefile.include`

可以使用

	which nvfortran | awk -F /compilers/bin/nvfortran '{ print $$1 }'`

查看nvfortran是否为nv-hpc-sdk的路径，如有问题，可以重新添加一遍环境变量。

**（注：最近vasp官方又在官网添加了新的openacc+openmp混编版本的makefile.include.linux_nv_acc+omp+mkl来解决nccl库限制openacc版本只能单进程运行的问题，通过openmp来提升单进程多线程的运算效率，但目前没有太多相关测试的数据来支撑openmp混编会提升很多并行速度，所以在此我仍以旧版本的makefile.include.linux_nv_acc为例，同时官方也在积极改进这个问题，后续应该也可以多进程运行）**

makefile.include的内容需要修改几处，包括确认编译器的位置，明确依赖库的路径等。修改后的makefile.include如下（需要注意和修改的位置后面有注释）：

	#Precompiler options

	CPP_OPTIONS= -DHOST=\"LinuxPGI\" \
             -DMPI -DMPI_BLOCK=8000 -DMPI_INPLACE -Duse_collective \
             -DscaLAPACK \
             -DCACHE_SIZE=4000 \
             -Davoidalloc \
             -Dvasp6 \
             -Duse_bse_te \
             -Dtbdyn \
             -Dqd_emulate \
             -Dfock_dblbuf \
             -D_OPENACC \
             -DUSENCCL -DUSENCCLP2P

	CPP        = nvfortran -Mpreprocess -Mfree -Mextend -E $(CPP_OPTIONS) $*$(FUFFIX)  > $*$(SUFFIX)

	FC         = mpif90 -acc -gpu=cc60,cc70,cc80,cuda11.0
	FCL        = mpif90 -acc -gpu=cc60,cc70,cc80,cuda11.0 -c++libs

	FREE       = -Mfree

	FFLAGS     = -Mbackslash -Mlarge_arrays

	OFLAG      = -fast

	DEBUG      = -Mfree -O0 -traceback

	#Specify your NV HPC-SDK installation, try to set NVROOT automatically
	NVROOT     =$(shell which nvfortran | awk -F /compilers/bin/nvfortran '{ print $$1 }')
	#or set NVROOT manually
	#NVHPC      ?= /opt/nvidia/hpc_sdk
	#NVVERSION  = 20.9
	#NVROOT     = $(NVHPC)/Linux_x86_64/$(NVVERSION)

    #Use NV HPC-SDK provided BLAS and LAPACK libraries
    BLAS       = -lblas
    LAPACK     = -llapack

    BLACS      =
    SCALAPACK  = -Mscalapack

    CUDA       = -cudalib=cublas,cusolver,cufft,nccl -cuda

    LLIBS      = $(SCALAPACK) $(LAPACK) $(BLAS) $(CUDA)

    #Software emulation of quadruple precsion
    QD         = $(NVROOT)/compilers/extras/qd                    #注意并修改这里
    LLIBS      += -L$(QD)/lib -lqdmod -lqd
    INCS       += -I$(QD)/include/qd

    #Use the FFTs from fftw
    FFTW       = /fs00/software/fftw/3.3.8-ips2019u5              #修改fftw路径至本地安装路径
    LLIBS      += -L$(FFTW)/lib -lfftw3
    INCS       += -I$(FFTW)/include

    OBJECTS    = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o

    #Redefine the standard list of O1 and O2 objects
    SOURCE_O1  := pade_fit.o
    SOURCE_O2  := pead.o

    #For what used to be vasp.5.lib
    CPP_LIB    = $(CPP)
    FC_LIB     = nvfortran
    CC_LIB     = nvc
    CFLAGS_LIB = -O
    FFLAGS_LIB = -O1 -Mfixed
    FREE_LIB   = $(FREE)

    OBJECTS_LIB= linpack_double.o getshmem.o

    #For the parser library
    CXX_PARS   = nvc++ --no_warnings

    #Normally no need to change this
    SRCDIR     = ../../src
    BINDIR     = ../../bin

此外编译前和每次提交任务前请清除其他环境并重新设置一遍环境变量：
```
module load ips/2019u5  #这是为了我们使用集群安装好的fftw找到依赖的路径
export NVARCH=`uname -s`_`uname -m`;
export NVCOMPILERS=/usr/software/nv-hpcsdk
export PATH=$NVCOMPILERS/$NVARCH/20.9/compilers/bin:$PATH
export MANPATH=$MANPATH:$NVCOMPILERS/$NVARCH/20.9/compilers/man
export LD_LIBRARY_PATH=$NVCOMPILERS/$NVARCH/20.9/compilers/lib/:$LD_LIBRARY_PATH
export PATH=$NVCOMPILERS/$NVARCH/20.9/comm_libs/mpi/bin/:$PATH
```
`/usr/software/nv-hpcsdk`为nv-hpc-sdk的安装路径
确认好以上所有设置后，就可以使用
```
make std gam ncl
```
进行编译了，注意，由于openacc版本的原因，直接取消了编译make gpu的方式，编译得到的vasp_std之类的版本直接可以使用GPU进行计算。

## 其他注意事项：
**1.由于nccl库的限制，openacc的gpu版本只能单进程运行.**

**2.INCAR中NCORE在openacc版本中只能设为1.**

**3.INCAR中NSIM和KPAR参数需要对不同体系进行测试来达到效率最大化，一般来说，KPAR和所使用的GPU也就是进程数一致，NSIM需要设置的比在cpu上更大，具体请自行测试.**

更多相关问题可以见[GPU官方指导](https://www.vasp.at/wiki/index.php/OpenACC_GPU_port_of_VASP)

也可以去[VASP论坛](https://www.vasp.at/forum/)提问

# Quantum Espresso

## 使用Apptainer

例：使用qe7.1版本，输入文件为当前目录下的`FeO_test.in`，申请1个GPU提交到`723090ib`队列，使用`pw.x`

```shell
#BSUB -J FeO_test
#BSUB -q 723090ib
#BSUB -gpu num=1

export OMP_NUM_THREADS="$LSB_DJOB_NUMPROC"
QE="apptainer run --nv /fs00/software/singularity-images/ngc_quantum_espresso_qe-7.1.sif"
${QE} pw.x < FeO_test.in > FeO_test.out
```

# NAMD

### NAMD 2.12 (2016-12-22)

- /fs00/software/namd/2.12 

例：输入文件为当前目录下的in.conf，申请48个核提交到e5v3ib队列

```sh
#BSUB -n 48
#BSUB -q e5v3ib

input=in.conf
#bindir=/fs00/software/namd/2.12/verbs/
bindir=/fs00/software/namd/2.12/ibverbs/

nodefile=nodelist
echo "group main" > $nodefile
for i in `echo $LSB_HOSTS`
do
	echo "host $i" >> $nodefile
done

${bindir}charmrun ++remote-shell ssh ++nodelist $nodefile +p$LSB_DJOB_NUMPROC ${bindir}namd2 $input
```

# OOMMF

### The Object Oriented MicroMagnetic Framework (OOMMF) 1.2 alpha 6

- /fs00/software/oommf/12a6-tcl8.6.4-ips2016u2 依赖tcl/8.6.4-ips2016u2和ips/2016u2
- /fs00/software/oommf/12a6-tcl8.6.4-ips2016u2-avx2 依赖tcl/8.6.4-ips2016u2-avx2和ips/2016u2

例：输入文件为当前目录下的sample.mif，申请72个核提交到6140ib队列

```sh
#BSUB -q 6140ib
#BSUB -n 72

module load ips/2016u2
module load tcl/8.6.4-ips2016u2-avx2

oommfin=sample.mif

oommfrun=/fs00/software/oommf/12a6-tcl8.6.4-ips2016u2-avx2/oommf.tcl

OOMMF_HOSTPORT=`tclsh $oommfrun launchhost 0`
export OOMMF_HOSTPORT
tclsh $oommfrun mmArchive
tclsh $oommfrun boxsi -numanodes auto -threads $LSB_DJOB_NUMPROC $oommfin
tclsh $oommfrun killoommf all
```

# Mumax3

### mumax 3

| mumax3 版本 | 安装路径 | 建议加载的 CUDA 模块 | 可执行文件最高 GLIBC 符号 | 运行环境要求 |
  |---|---|---|---|---|
  | 3.10-cuda11.0 | `/fs00/software/mumax/3.10-cuda11.0` | `cuda/11.2.0` | `GLIBC_2.4` | 兼容老系统（CentOS 7） |
  | 3.11.1-cuda12.3| `/fs00/software/mumax/3.11.1-cuda12.3` | `cuda/12.3.1` | `GLIBC_2.3.2` | 在 **Rocky 9** 节点编译，建议在 Rocky 9 节点运行 |
  | 3.11.1-cuda12.8 | `/fs00/software/mumax/3.11.1-cuda12.8` | `cuda/12.8.1-el9` | `GLIBC_2.34` | **必须**在 Rocky 9 / RHEL 9 等较新系统运行 |

均需要对应的`module load cuda/<版本号>`。

例：输入文件为当前目录下的sample.mx3，申请1个GPU提交到723090ib队列

```sh
#BSUB -q 723090ib
#BSUB -gpu num=1

mx3in=sample.mx3

module load cuda/11.2.0
/fs00/software/mumax/3.10-cuda11.0/mumax3 $mx3in
```

特别注意：CUDA 12 以上的版本在Rocky 9节点编译，因此需要确认是否为`login9`节点。

此外对应软件目录下有对应的数据后处理软件如`mumax3-convert`和`mumax3-plot`。

# 支撑软件

**请使用者自行解决License问题，本中心概不负责！**

### AWS CLI v2
|Name|Path|Module|
|---|---|---|
|AWS CLI current|/fs00/software/aws-cli/v2/current|aws-cli/current|
|AWS CLI 2.9.6|/fs00/software/aws-cli/v2/2.9.6|aws-cli/2.9.6|

### bbcp
|Name|Path|Module|
|---|---|---|
|bbcp 14.04.14.00.1|/fs00/software/bbcp/14.04.14.00.1|bbcp/14.04.14.00.1|


### Boost
|Name|Path|Module|
|---|---|---|
|Boost 1.72.0|/fs00/software/boost/1.72.0|boost/1.72.0|
|Boost 1.58.0|/fs00/software/boost/1.58.0|boost/1.58.0|

### CMake
|Name|Path|Module|
|---|---|---|
|CMake 3.23.2|/fs00/software/cmake/3.23.2/|cmake/3.23.2|
|CMake 3.16.3|/fs00/software/cmake/3.16.3/|cmake/3.16.3|
|CMake 3.11.4|/fs00/software/cmake/3.11.4/|cmake/3.11.4|

### Git
|Name|Path|Module|
|---|---|---|
|Git 2.38.1|/fs00/software/git/2.38.1|git/2.38.1|

### Grace
|Name|Path|Module|
|---|---|---|
|Grace 5.1.25|/fs00/software/grace/5.1.25|grace/5.1.25|

### HDF5
|Name|Path|Module|
|---|---|---|
|HDF5 1.10.5|/fs00/software/hdf5/1.10.5|hdf5/1.10.5|

### libpng
|Name|Path|Module|
|---|---|---|
|libpng 1.5.26|/fs00/software/libpng/1.5.26|libpng/1.5.26|

### jq
|Name|Path|Module|
|---|---|---|
|jq 1.7|/fs00/software/jq/1.7|jq/1.7|

### Libxc
|Name|Compiler|Path|Module|
|---|---|---|---|
|Libxc 5.2.2|GNU Compiler Collection (GCC) 11.2.0|/fs00/software/libxc/5.2.2|libxc/5.2.2|

### libzip
|Name|Path|Module|
|---|---|---|
|libzip 1.6.1|/fs00/software/libzip/1.6.1|libzip/1.6.1|

### NetCDF-C
|Name|Path|Module|
|---|---|---|
|NetCDF-C 4.7.0|/fs00/software/netcdf/c-4.7.0|netcdf/c-4.7.0|

### PCRE
|Name|Path|Module|
|---|---|---|
|PCRE 8.39|/fs00/software/pcre/8.39|pcre/8.39|

### Qt
|Name|Path|Module|
|---|---|---|
|Qt 5.11.1|/fs00/software/qt/5.11.1|qt/5.11.1|

### rclone
|Name|Path|Module|
|---|---|---|
|rclone latest|/fs00/software/rclone/latest|rclone/latest|
|rclone 1.66.0|/fs00/software/rclone/1.66.0|rclone/1.66.0|

### Spglib (OpenMP)
|Name|Compiler|Path|Module|
|---|---|---|---|
|Spglib 1.9.9||/fs00/software/spglib/1.9.9|spglib/1.9.9|
|Spglib 1.9.0|GNU Compiler Collection (GCC) 5.2.0|/fs00/software/spglib/1.9.0-gcc5.2.0|spglib/1.9.0-gcc5.2.0|

### tmux
|Name|Path|Module|
|---|---|---|
|tmux 3.3a|/fs00/software/tmux/3.3a|tmux/3.3a|

### zlib
|Name|Path|Module|
|---|---|---|
|zlib 1.2.11|/fs00/software/zlib/1.2.11|zlib/1.2.11|

# Singularity Image

/fs00/software/singularity-images/

有丰富的官方容器镜像包

# gnuplot

### gnuplot

|Name|Path|Module|
|---|---|---|
|gnuplot 5.2.7|/fs00/software/gnuplot/5.2.7|gnuplot/5.2.7|
|gnuplot 5.2.2|/fs00/software/gnuplot/5.2.2|gnuplot/5.2.2|
|gnuplot 5.0.6|/fs00/software/gnuplot/5.0.6|gnuplot/5.0.6|
|gnuplot 5.0.1|/fs00/software/gnuplot/5.0.1|gnuplot/5.0.1|

# OVITO

### OVITO
|Name|Path|Module|
|---|---|---|
|OVITO 3.7.12|/fs00/software/ovito/3.7.12|ovito/3.7.12|
|OVITO 2.9.0|/fs00/software/ovito/2.9.0|ovito/2.9.0|

# Vim

### Vim
|Name|Path|Module|
|---|---|---|
|Vim 9.0.1677|/fs00/software/vim/9.0.1677|vim/9.0.1677|
|Vim 8.2.0488|/fs00/software/vim/8.2.0488|vim/8.2.0488|
|Vim 8.1|/fs00/software/vim/8.1|vim/8.1|

# Zsh

|Name|Path|Module|
|---|---|---|
|Zsh latest|/fs00/software/zsh/latest|zsh/latest|
|Zsh 5.8|/fs00/software/zsh/5.8|zsh/5.8|

或从[镜像站](https://mirror.nju.edu.cn/zsh/)下载编译安装

### Environment Modules
添加 Environment Modules 至 Zsh
```
echo "source /fs00/software/modules/latest/init/profile.sh" >> ~/.zshrc
```
### 命令行提示符

- 因登录时需判断命令行提示符是否为`$ `，因此建议保持 Bash 为默认 Shell，登录后通过下列命令切换至 Zsh
```
module load zsh/latest && exec zsh
```
- 如设置 Zsh 为默认 Shell 或登录会自动切换至 Zsh，则必须更改 Zsh 的命令行提示符（环境变量PS1）以`$ `结尾（$+空格），否则登录会失败！

### Oh My Zsh

#### 安装

在本地克隆后获取安装脚本再进行安装

```
git clone https://mirror.nju.edu.cn/git/ohmyzsh.git
cd ohmyzsh/tools
REMOTE=https://mirror.nju.edu.cn/git/ohmyzsh.git sh install.sh
```
#### 切换已有 Oh My Zsh 至镜像源

```
git -C $ZSH remote set-url origin https://mirror.nju.edu.cn/git/ohmyzsh.git
git -C $ZSH pull
```
#### 升级
```
omz update
```

### 主题

#### Powerlevel10k
##### 安装
```
git clone --depth=1 https://mirror.nju.edu.cn/git/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
```
编辑 `~/.zshrc` 的主题 `ZSH_THEME="powerlevel10k/powerlevel10k"`
##### 升级
```
cd ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k && git pull
```
##### 256色终端
开启 xterm 终端的256色以便正确显示提示颜色
```
echo "export TERM=xterm-256color" >> ~/.zshrc
```
##### 永久在左侧显示主机名
在集群中经常需要登录到各个节点，因此最好在左侧永久显示主机名防止误操作
编辑 `~/.p10k.zsh`
1. 将`POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS`中的`context`剪切到`POWERLEVEL9K_LEFT_PROMPT_ELEMENTS`的第一项
2. 注释`typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=`这一行
3. 更改`typeset -g POWERLEVEL9K_CONTEXT_PREFIX=`为`''`

### 插件

#### zsh-autosuggestions
##### 安装
```
git clone https://mirror.nju.edu.cn/git/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
```
编辑 `~/.zshrc` 在 `plugins=` 中添加 `zsh-syntax-highlighting`
```
plugins=( ... zsh-autosuggestions)
```
##### 升级
```
cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && git pull

```

#### zsh-syntax-highlighting
##### 安装
```
git clone https://mirror.nju.edu.cn/git/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
```
编辑 `~/.zshrc` 在 `plugins=` 最后添加 `zsh-syntax-highlighting`
```
plugins=( [plugins...] zsh-syntax-highlighting)
```
##### 升级
```
cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && git pull

```

# AlphaFold 2

`/fs00/software/alphafold/2.3.2/AlphaFold-v2.3.2.sif`

```sh
#BSUB -J alphafold
#BSUB -q gpu
#BSUB -n 16
#BSUB -gpu num=1

export OMP_NUM_THREADS="$LSB_DJOB_NUMPROC"
export MKL_NUM_THREADS="$LSB_DJOB_NUMPROC"

ALPHAFOLD_DATADIR=/fsb/data/alphafold/2
ALPHAFOLD_IMAGE=AlphaFold-v2.3.2.sif

ALPHAFOLD_APP=/app/alphafold

RUN_ALPHAFOLD="apptainer run --bind ${ALPHAFOLD_DATADIR}:${ALPHAFOLD_APP}/download \
                            --nv ${ALPHAFOLD_IMAGE}"

${RUN_ALPHAFOLD} python ${ALPHAFOLD_APP}/run_alphafold.py --use_gpu_relax \
    --data_dir=${ALPHAFOLD_APP}/download \
    --uniref90_database_path=${ALPHAFOLD_APP}/download/uniref90/uniref90.fasta \
    --mgnify_database_path=${ALPHAFOLD_APP}/download/mgnify/mgy_clusters_2022_05.fa \
    --bfd_database_path=${ALPHAFOLD_APP}/download/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
    --pdb70_database_path=${ALPHAFOLD_APP}/download/pdb70/pdb70 \
    --uniref30_database_path=${ALPHAFOLD_APP}/download/uniref30/UniRef30_2021_03 \
    --template_mmcif_dir=${ALPHAFOLD_APP}/download/pdb_mmcif/mmcif_files \
    --obsolete_pdbs_path=${ALPHAFOLD_APP}/download/pdb_mmcif/obsolete.dat \
    --model_preset=monomer \
    --max_template_date=2022-10-1 \
    --db_preset=full_dbs \
    --output_dir=output \
    --fasta_paths=input/input.fasta

```

# AlphaFold 3

`/fs00/software/alphafold/3.0.0/AlphaFold-v3.0.0.sif`

#### 0. 基本信息
alphafold3是Google DeepMind开发的、用于生物分子复合体结构预测的人工智能模型，该模型接受一个json形式的、用于描述生物分子体系的文件，输出预测结构与置信度打分信息。结构预测过程主要分为两步：
- data pipeline: 在一定参数控制下，基于输入的序列信息进行生物信息学搜索，得到结构预测所需的共进化信息 (multi-sequence alginment, msa) 与结构模板 (templates)，并将这些信息与输入信息整合，将整合信息作为json文件输出
- inference: 读取整合入msa和templates的json文件，转化为模型输入特征进行推理，输出mmcif格式的预测结构与confidence score

此处部署的是基于[官方github库](https://github.com/google-deepmind/alphafold3/)打包的apptainer容器。容器内包含alphafold3程序本体和依赖，不包含程序运行所需的数据库与预训练权重——这些需要在运行时以命令行参数传入。集群上部署有生信搜索所需数据库，模型权重的使用受[term of use](https://github.com/google-deepmind/alphafold3/blob/main/WEIGHTS_TERMS_OF_USE.md)控制，请自行向Google DeepMind申请。

#### 1. 使用方法
为避免冗长的路径和指令重复出现，定义变量
```shell
path_to_af3db="/fsb/data/alphafold/3"
path_to_af3container="/fs00/software/alphafold/3.0.0/AlphaFold-v3.0.0.sif "

io_dir=</path/to/your/input/and/output>
weights_dir=<path/to/directory/containing/your/af3-weights>

RUN_ALPHAFOLD="apptainer run --nv --bind ${path_to_af3db}:/databases,${io_dir}:/host_iopath,${weights_dir}:/af3_weights ${path_to_af3container} python run_alphafold.py"
```
其中``${path_to_af3db}``是集群上alphafold3数据库地址，``${io_dir}``是输入文件所在的、及希望结果输出的目录，``${weights_dir}``是自己申请的alphafold3权重文件所在目录。``run_alphafold.py``是[官方github库](https://github.com/google-deepmind/alphafold3/)提供的接口文件。本页面后续出现的指令均默认这些变量存在。

输出帮助信息 (包括参数说明)
```shell
${RUN_ALPHAFOLD} --help
```

将输入文件``input.json``放在``${io_dir}``目录下，如下指令可使用alphafold3预测此文件描述体系的结构
```shell
${RUN_ALPHAFOLD} --db_dir=/databases/ --model_dir=/af3_weights/ \
  --json_path=/host_iopath/input.json --output_dir=/host_iopath/ 
```
程序将根据``input.json``中的name字段值，在``${io_dir}``下创建同名子目录，data pipeline结束时补全的json文件、预测结构文件和confidence score都会被保存在这个子目录中。运行时log信息通过stderr输出 (这是python logging模块的行为)。关于更详细的输入输出文件说明，请参考官方[input documentation](https://github.com/google-deepmind/alphafold3/blob/main/docs/input.md)和[output documentation](https://github.com/google-deepmind/alphafold3/blob/main/docs/output.md)。

#### 2. 分步运行data pipeline与inference
如前所述，程序运行主要分为data pipeline和inference两步。其中，data pipeline只使用cpu计算且耗时很长，如果在gpu队列上运行会导致gpu资源长期空置，可能导致高额费用和gpu资源浪费。因此，**推荐先在cpu队列上运行data pipeline，得到中间结果 (也就是补全的json) 退出，然后再到gpu队列上进行结构预测**。

为满足上述需求，可以用bool型命令行参数``--run_data_pipeline``和``--run_inference``控制模型只运行其中一步，两参数默认值均为True.

分步运行指令示例:
- data pipeline (cpu job)
  ```shell
  ${RUN_ALPHAFOLD} --db_dir=/databases/ --model_dir=/af3_weights/ \
    --json_path=/host_iopath/input.json --output_dir=/host_iopath/ \
    --run_inference=False
  ```
- inference (gpu job)
  ```shell
  ${RUN_ALPHAFOLD} --db_dir=/databases/ --model_dir=/af3_weights/ \
    --json_path=/host_iopath/input.json --output_dir=/host_iopath/ \
    --run_data_pipeline=False
  ```
另外，出于研究或加速计算的目的，用户可能希望使用自行准备的msa或templates，因而需要跳过alphafold3搜索步骤，此时需要手动将msa和templates写进输入json文件，然后带``--run_data_pipeline=False``参数运行模型，进行结构预测。关于如何将msa和templates写入json文件，请自行参考[DeepMind-input documentation](https://github.com/google-deepmind/alphafold3/blob/main/docs/input.md)。注意，msa和templates会以文本形式写入json中，因此写入了msa和templates的json文件大小会达到数十到百Mb量级。

#### 3. 关于其他命令行参数
除去以上参数外，容器还可接受很多其他参数，可以用``${RUN_ALPHAFOLD} --help``查看，或是在``run_alphafold.py``中查看。我认为有3点值得注意：
- ``--input_dir``和``--json_path``都可以指定输入文件，使用时只应指定其一。当指定input_dir时，模型会从input_dir中寻找一个json格式文件，当作输入文件
- ``--jackhmmer_n_cpu``和``--nhmmer_n_cpu``指定生信搜索中使用cpu cores数目的上限
- 机器学习程序通常允许设置random seed来保证运行的可重复性，alphafold3的random seed不能以命令行参数指定，而是在input.json中

#### 4. 队列兼容性、测试中的运行耗时
data pipeline对设备要求不高，inference则可能对gpu设备有些要求。目前测试了两例：
- 2PV7，蛋白，双链homomer，单链长度298
- 1AKE，蛋白，双链homomer，单链长度214

在队列83a100ib和734090d上测试结果显示：以上体系在单张A100卡 (memory 40 G) 或单张4090d (memory 24 G) 上均可完成inference. 在队列722080tiib和72rtxib上无法成功运行. 其他GPU队列未做测试。注意，官方[performance documentation](https://github.com/google-deepmind/alphafold3/blob/main/docs/performance.md)文档指出官方仅测试过alphafold3在A100(80G), A100(40 G)和H100设备上推理的准确性，因此使用如4090等其他设备做推理时，请自行校验结果准确性。

测试中data pipeline和inference计算所需时间如下：
- 使用8 cpu cores对一条长约300的蛋白序列进行msa和templates搜索耗时为1.5-2 h；**其中**，搜出msa后，根据部分匹配片段信息挑选出templates耗时为10 s量级，相对于总时间可以忽略
- 对每个随机种子，alphafold3会预测5个结构并按置信度打分挑选最好的作为最终结果，此过程耗时100 s左右；inference步总耗时与设置随机种子数有关

更多performance信息可参考官方[performance documentation](https://github.com/google-deepmind/alphafold3/blob/main/docs/performance.md)。

#### 5. 运行结果准确性评估
比较2PV7预测结构与实验结构，全原子RMSD=4.410 (单位: Angstrom，下同)。
为衡量单链水平结构误差，计算预测A:B链-实验A:B链间RMSD，4个RMSD值分别为3.012, 2.759, 2.971, 2.740. 此单链上，alphafold3预测准确度低于alphafold2. 
为衡量2个subunits间相对位置误差，计算DockQ分数为0.499>0.23，预测结构docking成功。

1AKE双链结构预测有较大错误，预测结构与1AKE实验结构RMSD=18.176，与4AKE实验结构RMSD=26.791，该结果远不如alphafold2-multimer。subunits间DockQ=0.019<<0.23，说明结构相对位置也预测错误。尚不清楚是Alphafold3本身原因，还是部署或使用不当导致。使用4090d和A100推理的结果无明显差异。
>dockQ (Mirabello & Wallner, 2024, Bioinformatics) 打分用于衡量模型对subunits
间位置关系预测准确度。此分数取值范围是0-1，通常<0.23认为错误，>0.8认为准确。

# RoseTTAFold

`/fs00/software/rosettafold/1.1.0`

注意：`apptainer`默认会bind用户的`home`目录，如果用户本来就有`RoseTTAFold`或者`folding`的conda环境则可能会发生冲突。用户可通过添加`--no-home`选项避免此问题。

```shell
#BSUB -J RoseTTAFold
#BSUB -q gpu
#BSUB -n 8
#BSUB -gpu num=1

###### Configurie Numpy threads  ######

export OMP_NUM_THREADS="$LSB_DJOB_NUMPROC"
export MKL_NUM_THREADS="$LSB_DJOB_NUMPROC"

###### Definition ######

ROSETTAFOLD_DATADIR=/fsb/data/rosettafold      # path to RoseTTAFold data (host)
ROSETTAFOLD_IMAGE=RoseTTAFold-1.1.0.sif         # path to RoseTTAFold image (host)
ROSETTAFOLD_APPDIR=/app/RoseTTAFold             # path to RoseTTAFold working directory (container)

###### Database ######

UNIREF30_DB=$ROSETTAFOLD_DATADIR/UniRef30_2020_06
BFD_DB=$ROSETTAFOLD_DATADIR/bfd
PDB100_DB=$ROSETTAFOLD_DATADIR/pdb100_2021Mar03

###### Example ######

RUN_ROSETTAFOLD="apptainer run --bind $UNIREF30_DB:$ROSETTAFOLD_APPDIR/UniRef30_2020_06 \
                --bind $BFD_DB:$ROSETTAFOLD_APPDIR/bfd \
                --bind $PDB100_DB:$ROSETTAFOLD_APPDIR/pdb100_2021Mar03 \
                --nv $ROSETTAFOLD_IMAGE"

# For monomer structure prediction (e2e)
${RUN_ROSETTAFOLD} $ROSETTAFOLD_APPDIR/run_e2e_ver.sh $ROSETTAFOLD_APPDIR/example/input.fa output/

# For monomer structure prediction (pyrosetta)
${RUN_ROSETTAFOLD} $ROSETTAFOLD_APPDIR/run_pyrosetta_ver.sh $ROSETTAFOLD_APPDIR/example/input.fa output/

# For complex modeling
${RUN_ROSETTAFOLD} python $ROSETTAFOLD_APPDIR/network/predict_complex.py \
                -i $ROSETTAFOLD_APPDIR/example/complex_modeling/paired.a3m \
                -o output/ -Ls 218 310

# For PPI screening using faster 2-track version (example input and output are at example/complex_2track)
${RUN_ROSETTAFOLD} python $ROSETTAFOLD_APPDIR/network_2track/predict_msa.py \
                -msa $ROSETTAFOLD_APPDIR/example/complex_2track/input.a3m \
                -npz output/complex.npz -L1 218

```

# ParallelFold 2

`/fs00/software/parallelfold/2.0-2.3.1/ParallelFold-v2.0-with-AlphaFold-v2.3.1.sif`

```shell
#BSUB -J parafold
#BSUB -q gpu
#BSUB -n 16
#BSUB -gpu num=1

export OMP_NUM_THREADS="$LSB_DJOB_NUMPROC"
export MKL_NUM_THREADS="$LSB_DJOB_NUMPROC"

ALPHAFOLD_DATADIR=/fsb/data/alphafold/2
PARAFOLD_IMAGE=ParallelFold-v2.0-with-AlphaFold-v2.3.1.sif

PARAFOLD_APP=/app/ParallelFold

RUN_PARAFOLD="apptainer run --bind ${ALPHAFOLD_DATADIR}:${PARAFOLD_APP}/download \
                            --nv ${PARAFOLD_IMAGE}"

${RUN_PARAFOLD} python ${PARAFOLD_APP}/run_alphafold.py --use_gpu_relax \
    --parameter_path=${PARAFOLD_APP}/download/params \
    --uniref90_database_path=${PARAFOLD_APP}/download/uniref90/uniref90.fasta \
    --mgnify_database_path=${PARAFOLD_APP}/download/mgnify/mgy_clusters_2022_05.fa \
    --bfd_database_path=${PARAFOLD_APP}/download/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
    --pdb70_database_path=${PARAFOLD_APP}/download/pdb70/pdb70 \
    --uniref30_database_path=${PARAFOLD_APP}/download/uniref30/UniRef30_2021_03 \
    --template_mmcif_dir=${PARAFOLD_APP}/download/pdb_mmcif/mmcif_files \
    --obsolete_pdbs_path=${PARAFOLD_APP}/download/pdb_mmcif/obsolete.dat \
    --model_preset=monomer \
    --max_template_date=2022-10-1 \
    --db_preset=full_dbs \
    --output_dir=output \
    --fasta_paths=${PARAFOLD_APP}/input/input.fasta

```