1. 设置内网 VPN

Hillstone Secure Connect 下载最新版的支持 SSL VPN 功能的客户端。

输入 VPN 账号、密码和对应的 VPN 地址,登录后即可访问内网集群资源。

2. 登录集群

Mac用户首先将秘钥文件放到.ssh文件夹内,并在.ssh文件夹内的config文件中添加如下信息:

  Host SelfDefineName
  HostName 172.16.20.102
  IdentityFile Path/to/Private_key
  User Username
  

在登录内网VPN的前提下,可在终端输入命令ssh SelfDefineName测试集群连接是否成功,或直接使用vscode连接集群。注意:连接集群必须使用VPN。

3. 设置外网代理

在环境变量中配置:

  export http_proxy=http://10.20.18.21:3128
export HTTP_PROXY=http://10.20.18.21:3128
export https_proxy=http://10.20.18.21:3128
export HTTPS_PROXY=http://10.20.18.21:3128
export no_proxy="localhost,127.0.0.1"
  

在命令行配置:

  git config --global http.proxy http://10.20.18.21:3128
git config --global https.proxy http://10.20.18.21:3128
  

4. 安装 Miniconda3

Miniconda3 官方网站 下载 Miniconda3。

执行 Miniconda3-py39_23.5.2-0-Linux-x86_64.sh ,按照提示安装 Miniconda3。(我安装在software目录下)

5. 安装 Boost

Boost 官方网站 下载 Boost。

解压 boost_1_77_0.tar.gz 文件。

在 Boost 根目录下执行以下命令安装 Boost(需要将路径换成自己的安装路径):

  srun -N 1 -p gpu_v100 ./bootstrap.sh --prefix=/GPUFS/nsccgz_zgchen_2/pangshzh/software/boost/1.77.0-gcc-8.4.0 \
CC=gcc CXX=g++ FC=gfortran CFLAGS='-O3' CXXFLAGS='-O3' FCFLAGS='-O3'
  

6. 安装 GNU Scientific Library

GNU Scientific Library 镜像站 下载 GSL。

解压 gsl-latest.tar.gz。

在 GSL 根目录执行以下命令安装 GSL(需要将路径换成自己的安装路径):

  srun -N 1 -p gpu_v100 ./configure --prefix=/GPUFS/nsccgz_zgchen_2/pangshzh/software/gsl/2.7.1-gcc-8.4.0 \
CC=gcc CXX=g++ FC=gfortran CFLAGS='-O3' CXXFLAGS='-O3' FCFLAGS='-O3'

# 在同目录下执行
srun -N 1 -p gpu_v100 make install
  

7. 安装 NEST

NEST github仓库 下载 NEST 3.4。

解压 v3.4.tar.gz。

  srun -N 1 -p gpu_v100 tar -xvzf v3.4.tar.gz
  

使用 pip 安装 numpy, scipy, cython:

  pip3 install numpy scipy cython
  

在 nest-simulator-3.4 目录下执行(需要将路径换成自己的路径,先申请一个GPU节点再编译):

  cmake -DCMAKE_C_COMPILER=mpicc \
      -DCMAKE_CXX_COMPILER=mpicxx \
      -Dwith-mpi=/GPUFS/app_GPU/MPI/mvapich2/2.3.7-gcc-8.4.0/bin/mpiexec \
      -DCMAKE_C_FLAGS='-O3 -fPIC' \
      -DCMAKE_CXX_FLAGS='-O3' \
      -Dwith-boost=/GPUFS/nsccgz_zgchen_2/pangshzh/software/boost/1.77.0-gcc-8.4.0 \
      -DGSL_INCLUDE_DIR=/GPUFS/nsccgz_zgchen_2/pangshzh/software/gsl/2.7.1-gcc-8.4.0/include \
      -DGSL_LIBRARY=/GPUFS/nsccgz_zgchen_2/pangshzh/software/gsl/2.7.1-gcc-8.4.0/lib/libgsl.a \
      -DGSL_CBLAS_LIBRARY=/GPUFS/nsccgz_zgchen_2/pangshzh/software/gsl/2.7.1-gcc-8.4.0/lib/libgslcblas.a \
      -DCMAKE_INSTALL_PREFIX:PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/nest-simulator/3.0-gcc-8.4.0 .
  

运行nest前需要配置nest环境,即source /GPUFS/nsccgz_zgchen_2/zyl/tools/nest-simulator/3.4-gcc-8.4.0/bin/nest_vars.sh (需要将路径换成自己的路径)。或者直接在env.sh中增加如下语句:

  # NEST 3.4 config
NEST_BASE_PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/nest-simulator/3.4-gcc-8.4.0
source $NEST_BASE_PATH/bin/nest_vars.sh
  

8. 运行 hpc_benchmark.py

在您安装的 NEST 目标路径中,hpc_benchmark.py 位于<NEST安装目标路径>/share/doc/nest/examples/pynest/hpc_benchmark.py ,您需要修改其中的 params 以并行运行更大的模型。

  1. 修改 nvp 为所需 MPI进程数 × 每进程线程数,如 2 MPI进程 × 14线程 = 28
  2. 设置合适的scale,如10。更大的需要更多nvp。
  params = {
    'nvp': 28,               # total number of virtual processes
    'scale': 10.,            # scaling factor of the network size
    # others...
}
  

设置环境变量以指示每个 MPI 进程启用线程数量,然后使用 mpiexec 运行

  export OMP_NUM_THREADS=14
mpiexec -N 1 -n 2 -p gpu_v100 --export=all python3 hpc_benchmark.py
  

其中 -N 指定节点个数, -n 指定所有节点总共的MPI进程数,-p 指定 slurm 从该分区分配节点(sinfo查看各节点),–export 导出所有环境变量。 这将耗费大抵一分钟,随后您将在终端看到 NEST 来自两个MPI 进程的双份输出;同时,会在运行启动指令的目录下得到输出文件。 #TODO: 定向输出文件

9. 环境变量文件示例

  #!/bin/bash

export CONDA_PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/miniconda3
export PATH=$CONDA_PATH/bin:$PATH

export http_proxy=http://10.20.18.21:3128
export HTTP_PROXY=http://10.20.18.21:3128
export https_proxy=http://10.20.18.21:3128
export HTTPS_PROXY=http://10.20.18.21:3128
git config --global http.proxy http://10.20.18.21:3128
git config --global https.proxy http://10.20.18.21:3128

export no_proxy="localhost,127.0.0.1"

module load gcc/8.4.0
module load mvapich2/2.3.7-gcc-8.4.0
module load cmake

# BOOST
export CMAKE_PREFIX_PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/boost/1.77.0-gcc-8.4.0/lib/cmake:$CMAKE_PREFIX_PATH
export CPATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/boost/1.77.0-gcc-8.4.0/include:$CPATH
export LIBRARY_PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/boost/1.77.0-gcc-8.4.0/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/boost/1.77.0-gcc-8.4.0/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/boost/1.77.0-gcc-8.4.0/lib:$LD_RUN_PATH

# GSL
export PKG_CONFIG_PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/gsl/2.7.1-gcc-8.4.0/lib/pkgconfig:$PKG_CONFIG_PATH
export PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/gsl/2.7.1-gcc-8.4.0/bin:$PATH
export CPATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/gsl/2.7.1-gcc-8.4.0/include:$CPATH
export LIBRARY_PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/gsl/2.7.1-gcc-8.4.0/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/gsl/2.7.1-gcc-8.4.0/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=/GPUFS/nsccgz_zgchen_2/pangshzh/software/gsl/2.7.1-gcc-8.4.0/lib:$LD_RUN_PATH

# NEST
export LIBRARY_PATH="/GPUFS/nsccgz_zgchen_2/pangshzh/software/nest-simulator/3.4-gcc-8.4.0/lib64/nest:${LIBRARY_PATH}"
export LD_LIBRARY_PATH="/GPUFS/nsccgz_zgchen_2/pangshzh/software/nest-simulator/3.4-gcc-8.4.0/lib64/nest:${LD_LIBRARY_PATH}"
source /GPUFS/nsccgz_zgchen_2/pangshzh/software/nest-simulator/3.4-gcc-8.4.0/bin/nest_vars.sh

# MiniConda
source activate
  

每次登录集群时(包括salloc申请计算节点登录后),记得执行以下命令:

  source set-env.sh
  

Last updated 22 Nov 2023, 17:40 +0800 . history