Pku.edu.cn
新集群使用手册2019v1.10
2019年6月18日
13:33
新集群使用说明:
一、新集群介绍
生命等科学部分,目前仅有lustre3文件系统
cn_nl 核心数28,96G内存,一个任务大约3.2G内存,节点数52
gpu_2l 显卡为2个 128G内存,节点数6
gpu_4l 显卡为4个 192G内存,节点数20
gpu_8l 显卡为8个 384G内存,节点数1
工学院部分,目前仅有lustre3文件系统
cn_ne 核心数28,96G内存,一个任务大约3.2G内存,节点数160
gpu_4e 显卡为4个 192G内存,节点数20
高老师部分,目前仅有lustre3文件系统和gpfs2文件系统
cn_bio 核心数20,192G内存,一个任务大约9.6G内存,节点数8
新集群机器表一:qos以xiao_pkuhpc为例
|分区名 |CPU |核数 |内存 |每核/每卡(G |Qos |Account |
| |GPU | |(G) |) | | |
|login05 |128 |E5-2670v2 |10+10 | |投任务 | |
|login06 |64 |E5-2670v2 |10+10 | |投任务 |目前在旧集群,不能投,可以查看旧文件 |
|login07 |128 |E5-2670v2 |10+10 | |投任务 | |
| | | | | |文件传输 | |
|login10 |128 |E5-2670v2 |10+10 | |投任务 | |
| | | | | |文件传输 | |
|login12 |96 |Gold 6132 |14+14 |GV100 |投任务 |GPU卡可编译gpu程序 |
| | | | |(32G) | | |
|login13 |384 |Gold 5115 |10+10 |TeslaP4 |投任务 |2GPU卡可编译gpu程序 |
| | | | |(8G) | | |
二、新集群队列
1、新旧集群继承和出现的问题:
1)文件同步
目前旧集群只有 /home 和 /apps 保留。所以不要传送任何其他文件夹文件
可以从login06复制文件到login12,比如 rsync -arvP file login12:/home/youname 或者 scp -r file login12:/home/youname
高老师集群可以拷贝到login13上,login13上还有gpfs2
2)队列和程序问题
以前的任务脚本,以前的分区都可以运行,不用更改,可以直接投递,免费测试期间,cpu限制在800核以内
a、登陆节点为 login05 login07 login12 ,目前都可以上网。
b、大家都测试下登录login12,有不能登陆login12的请联系我们,现在方婷休假,大家可以等等,用login05/07
c、login12 新集群编译器,含gpu
d、如果跑程序出现多次段错误,请重新编译,编译时务必使用/appsnew/source 下的环境,编译的时候 用什么环境,跑的时候也用什么环境,必须一致, 可以用 ldd 程序 ,去看所用的库
e、mpi提交脚本参考附件16页以后对应的mpi,千万不要用mpiexec.hydra -bootstrap slurm 去提交
f、所有的用户都可以免费用部分新集群的gpu节点。对应的分区gpu_4e gpu_4l,GPU节点为,程序提供GPU加速用,非GPU加速任务,请务必不要提交,每个用户可以交2-3个任务
g、login06和login10为旧的系统,没有可以用的节点计算,不能提交任务。如果非常紧急,需要在旧节点计算,可以告诉我们
h、新集群cnnl/e,部分gpu_4e/l,gpu_2l,gpu_8l,目前只接受申请测试。
j、新集群已经挂载相应的lustre1 和lustre2 文件系统
k、source /appsnew/source/intel2019.sh 这在以前旧的分区会出现段错误,如果能用就用,这个会快些。不能用就用 source /apps/source/intel-2018.sh去编译。
l、Gold 6132的CPU和E5-26系统的CPU差异比较大,所以如果出现段错误的时候,或者找不到库:
使用E5-26系统的CPU请选择在 login05 -login10(login6 和login10暂时不能使用)编译, 使用Gold 6132等在login12,login13上编译,对应的分区见表新集群列表的cpu栏目
m、注意9.0版本的cudnn库的不同,10版本后cudnn库固定了,都包含了,详细见/appsnew/source下的cuda文件
n、旧集群的mpi脚本默认是intel2013 ,所以在脚本里运行程序前还得加source /apps/source/intel-2013.sh
因为旧集群,很多程序已经无法编译,所用只能更新,带来的不变敬请谅解。
现在为测试期,,为感谢大家的支持,测试期期间所用的机时免费,为感谢大家的支持,测试期期间所用的机时最高免费800cpu。
关于 cn-short,cn-large,fat4way,fat8way,分区的脚本, 如果没有mpi提交脚本就不用改,继续用旧的脚本,如果有用mpi,需要改mpiexec.hydra -bootstrap slurm $程序这行, 然后提交,具体真没改,参考前面文件amber提交的各个mpi的案例。
2、非工学院方面提交任务
sinfo或者pkuinfo是查看节点信息,其中c01b05n[02-03,07]表示c01b05n02、c01b05n03、c01b05n07三个节点,状态栏 STATE显示alloc是该节点完全被占用,mix表示部分被占用,idle空闲,drain表示节点被晾起来了。
squeue或者pkuqueue 显示全部任务,sq显示自己的任务,JOBID表示任务号,PARTITION分区,NAME任务名字,USER用户名 STST列PD表示在等待,R表示运行, TIME为运行时间11-20:42:05表示运行11天20小时,NODES运行节点,NODELIST(REASON)不能马上运行的原因。
scancel或者pkucancel +JOBID
批量删除任务:
sq-1同时显示自己的任务号和以用于删除的任务序列如下图:
[pic]
sq-1 sle #其中sle为关键词:
最后一行为任务id;
执行 scancel或者pkucancel 复制最后一行id 就可以批量删除任务
pkujob + JOBID 显示运行任务的详细信息
showqos 查看自己的账号,qos,可运行的cpu或节点数,和可提交的任务数。
[pic]
新的gpu比如gpu_2l,gpu_4l,gpu_8l,gpu_4e,是以节点和GPU卡来调度的。
1)cn-nl
a、登陆login12
b、进入所要运行的文件夹
运行pkurun-cnnl 1 28 "sleep11;pwd;hostname"
其中1为节点,28为核心数(这里应该用一个核心就够)
注意如果是脚本为pkurun-cnnl 1 28 ./run
使用法1、对于单进程的脚本直接执行pkurun-cnnl 1 1 "sleep11;pwd;hostname"
使用法2、对于需要多占内存的脚本执行pkurun-cnnl 1 2 "sleep11;pwd;hostname",
每一个可以占3.2G左右内存,这里使用2*3.2G
使用法3、在所在的文件夹里,有 job.srp的文件如下,可以修改使用
tang_pkuhpc@login12:testnew $ cat job.srp131356
#!/bin/bash
#SBATCH -J pwd131356
#SBATCH -p cn_nl
#SBATCH -N 2
#SBATCH -o pwd131356_%j.out
#SBATCH -e pwd131356_%j.err
#SBATCH --no-requeue
#SBATCH -A tang_g1
#SBATCH --qos=tangcnnl
#SBATCH -c 28
pkurun pwd;hostname;sleep 11
注意如果是非mpi的话为#SBATCH -c 28
如果是mpi的话为:
#SBATCH -n 28 表示为number of tasks to run
#SBATCH --ntasks-per-node=28 表示为 number of tasks to invoke on each node
-o 为输出文件名,-e为输出错误
-N 为节点数量
-A 为账号如tang_pkuhpc 那么这里就是 tang_g1
--qos 为分区对应的qos
-p 为分区
-J 为任务名字,
%j格式化任务号
--no-requeue 任务中断,恢复后不会重新计算
c、指定节点提交:
pkurun-cnnl -w s11b01n[01-02] 2 23 "pwd;hostname;sleep 11"
或者在前面的脚本#SBATCH -N 2后
加入#SBATCH -w s11b01n[01-02]
2)gpu_4l(其他gpu_2l,gpu_8l 类似)
a、登陆login12
b、进入所要运行的文件夹
pkurun-g4c 1 2 nvidia-smi
其中1为节点,2为Gpu核心数(这里1-3的脚本为下)
tang_pkuhpc@login12:testnew $ cat job.srp144115
#!/bin/bash
#SBATCH -J nvi144115
#SBATCH -p gpu_4l
#SBATCH -N 1
#SBATCH -o nvi144115_%j.out
#SBATCH -e nvi144115_%j.err
#SBATCH --no-requeue
#SBATCH -A tang_g1
#SBATCH --qos=tangg4c
#SBATCH --gres=gpu:3
#SBATCH --overcommit
#SBATCH --mincpus=21
pkurun nvidia-smi
其中:
--overcommit允许在申请的cpu上面开更多的tasks
--mincpus指定开几个硬件核心
使用1GPU的脚本为:
tang_pkuhpc@login12:testnew $ cat job.srp144115
#!/bin/bash
#SBATCH -J nvi144115
#SBATCH -p gpu_4l
#SBATCH -N 1
#SBATCH -o nvi144115_%j.out
#SBATCH -e nvi144115_%j.err
#SBATCH --no-requeue
#SBATCH -A tang_g1
#SBATCH --qos=tangg4c
#SBATCH --gres=gpu:1
#SBATCH --overcommit
#SBATCH --mincpus=7
pkurun nvidia-smi
使用4GPU的脚本为:
tang_pkuhpc@login12:testnew $ cat job.srp144415
#!/bin/bash
#SBATCH -J nvi144415
#SBATCH -p gpu_4l
#SBATCH -N 1
#SBATCH -o nvi144415_%j.out
#SBATCH -e nvi144415_%j.err
#SBATCH --no-requeue
#SBATCH -A tang_g1
#SBATCH --qos=tangg4c
#SBATCH --gres=gpu:4
#SBATCH --exclusive
pkurun nvidia-smi
使用2个以上gpu节点的时候默认为4个gpu都使用,
pkurun-g4c 2 4 nvidia-smi
所以pkurun-g4c 2 3 nvidia-smi的4是无效的,都会使用4去替代
gpu_2l和gpu_8l 不建议跨节点使用
3、工学院方面提交任务
1)cn-nl
a、登陆login12
b、进入所要运行的文件夹
运行coe-cnne 1 28 "sleep11;pwd;hostname"
其中1为节点,28为核心数(这里应该用一个核心就够)
注意如果是脚本为pkurun-cnnl 1 28 ./run
使用法1、对于单进程的脚本直接执行coe-cnne 1 1 "sleep11;pwd;hostname"
使用法2、对于需要多占内存的脚本执行coe-cnne 1 2 "sleep11;pwd;hostname",
每一个可以占3.2G左右内存,这里使用2*3.2G
使用法3、在所在的文件夹里,有 job.srp的文件如下,可以修改使用
[xiao_pkuhpc@login12 testnew]$ cat job.srp010629
#!/bin/bash
#SBATCH -J sle010629
#SBATCH -p cn-ne
#SBATCH -N 1
#SBATCH -o sle010629_%j.out
#SBATCH -e sle010629_%j.err
#SBATCH --no-requeue
#SBATCH -A xiao_cg2
#SBATCH --qos=xiaoq
#SBATCH -c 28
pkurun pwd;hostname;sleep 11
注意如果是非mpi的话为#SBATCH -c 28
#SBATCH -n 28 表示为number of tasks to run
#SBATCH --ntasks-per-node=28 表示为 number of tasks to invoke on each node
c、指定节点提交:
pkurun-cnnl -w s11b01n[01-02] 2 23 "pwd;hostname;sleep 11"
或者在前面的脚本#SBATCH -N 2后
加入#SBATCH -w s11b01n[01-02]
2)gpu_4e(工学院主要是4卡gpu节点)
a、登陆login12
b、进入所要运行的文件夹
coe-g4c 1 2 nvidia-smi
其中1为节点,2为Gpu核心数(这里1-3的脚本为下)
[xiao_pkuhpc@login12 testnew]$ cat job.srp015043
#!/bin/bash
#SBATCH -J nvi015043
#SBATCH -p gpu_4e
#SBATCH -N 1
#SBATCH -o nvi015043_%j.out
#SBATCH -e nvi015043_%j.err
#SBATCH --no-requeue
#SBATCH -A xiao_cgg2
#SBATCH --qos=xiaogq
#SBATCH --gres=gpu:3
#SBATCH --overcommit
#SBATCH --mincpus=9
pkurun nvidia-smi
其中:
--overcommit允许在申请的cpu上面开更多的tasks
--mincpus指定开几个硬件核心
使用4GPU的脚本为:
[xiao_pkuhpc@login12 testnew]$ cat job.srp015205
#!/bin/bash
#SBATCH -J nvi015205
#SBATCH -p gpu_4e
#SBATCH -N 1
#SBATCH -o nvi015205_%j.out
#SBATCH -e nvi015205_%j.err
#SBATCH --no-requeue
#SBATCH -A xiao_cgg2
#SBATCH --qos=xiaogq
#SBATCH --gres=gpu:4
#SBATCH --exclusive
pkurun nvidia-smi
使用2个以上gpu节点的时候默认为4个gpu都使用,
coe-g4c 2 4 nvidia-smi
所以coe-g4c 2 3 nvidia-smi的4是无效的,都会使用4去替代
4、高老师方面提交任务
pkurun-bio 1 2 sleep 11 具体参考工学院部分的“1)cn-nl”
分区中cn-short,cn-long有些开的节点为cn_nl中临时划分过来的
三、新集群软件和软件安装编译
新集群的东西都在 /appsnew/下
/appsnew/source/下为安装好的软件包,使用的时候需要source下(配置下环境)
旧的在/apps,/apps/source
新的生物信息部分app在/appsnew/bioapps/下 (编译由高歌老师组曹智杰完成)
1、使用不同版本的gcc
比如source /appsnew/source/gcc-8.3.0c99.sh
[pic]
gcc-8.3.0c99.sh和gcc-8.3.0.sh区别在于使用了c99标准进行编译
2、使用不同版本的python
如图是3.5.7
[pic]
3、使用不同版本的conda
source /appsnew/source/Miniconda2-2.7.sh
[pic]
[pic]
4、使用不同版本的深度学习框架(由来老师组徐悠俊博士后和北极星计算平台刘涛完成)
比如source /appsnew/source/Tensorflow1.13_Keras2.2_Pytorch1.1_py3.5.7_cuda10.sh
[pic]
5、使用不同版本的R
比如 source /appsnew/source/R-3.5.3.sh
[pic]
还有MRO-3.5.2.sh
6、使用不同版本的java
比如source /appsnew/source/java_jdk-11.0.3.sh 还有12版本的,i686以及openjdk12.0.1.sh
7、使用不同版本的fftw
比如:
source /appsnew/source/fftw-2.1.5gcc.sh
source /appsnew/source/fftw-2.1.5intel2019.sh
还有3.3.8版本的
fftw-3.3.8gcc.sh
fftw-3.3.8intel2019.sh
8、使用不同版本的boost
如上source下
[pic]
9、使用PGI编译器
pgi2019-llvm.sh
pgi2019.sh ---nollvm
10、使用不同版本的gsl
同上:
gsl-2.5.sh
gsl-1.16.sh
11、使用更高版本的:
cmake-3.14.3.sh
automake-1.16.sh
gnuplot-5.2.6.sh
zlib-1.2.11.sh
12、CUDA库
cuda-10.0.sh
cuda-10.1.sh
以下不支持2018,2019intel编译器,使用2015或者2013编译器编译
cuda-7.0.28.sh
cuda-7.5.sh
cuda-8.0.61.sh
cuda-9.0-cudnnv7.1.sh
cuda-9.0-cudnnv7.4.2.24.sh
cuda-9.0.sh
cuda-9.1-cudnnv7.1.sh
cuda-9.1.sh
cuda-9.2-cudnnv7.1.sh
cuda-9.2-cudnnv7.4.2.24.sh
cuda-9.2.sh
注意9.0版本的cudnn库的不同,10版本后cudnn库固定了,就包含了
四、MPI编译和任务提交(由北极星计算平台张武生(清华大学mpi教师)和陈芳进共同完成)
1、intel2019(2013和2018放在/apps/source 下)
示例在这个文件夹下/lustre3/example/newmpi/intel2019
可以将其中的/lustre3/example/newmpi/mpi-2.c 拷贝到自己的任意个文件下,进行如下操作
1)编译:
cd /lustre3/example/newmpi/intel2019
source /appsnew/source/intel2019.sh
mpiicc -o beijixing ../mpi-2.c
2)提交任务(同章节 二):
方法1;pkurun-cnnl 2 28 ./beijixing
[test_pkuhpc@login12 intel2019]$ cat job.srp235935
#!/bin/bash
#SBATCH -J bei235935
#SBATCH -p cn_nl
#SBATCH -N 2
#SBATCH -o bei235935_%j.out
#SBATCH -e bei235935_%j.err
#SBATCH --no-requeue
#SBATCH -A test_g1
#SBATCH --qos=testcnnl
#SBATCH --ntasks-per-node=28
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
. /appsnew/source/intel2019.sh
mpirun -n $SLURM_NTASKS ./beijixing
$SLURM_NTASKS为使用的cpu数,可以自己定义
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts 为显示在那个节点计算
方法2;直接修改脚本见前面(二、1-2)
2、intel2013
示例在这个文件夹下/lustre3/example/newmpi/intel2013
可以将其中的/lustre3/example/newmpi/mpi-2.c 拷贝到自己的任意个文件下,进行如下操作
1)编译:
cd /lustre3/example/newmpi/intel2013
source /apps/source/intel-2013.sh
mpiicc -o beijixing ../mpi-2.c
2)提交任务(同章节 二):
方法1;pkurun-cnnl 2 28 ./beijixing
[test_pkuhpc@login12 intel2013]$ cat job.srp000038
#!/bin/bash
#SBATCH -J bei000038
#SBATCH -p cn_nl
#SBATCH -N 2
#SBATCH -o bei000038_%j.out
#SBATCH -e bei000038_%j.err
#SBATCH --no-requeue
#SBATCH -A test_g1
#SBATCH --qos=testcnnl
#SBATCH --ntasks-per-node=28
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
. /apps/source/intel-2013.sh
mpirun -n $SLURM_NTASKS -IB ./beijixing
$SLURM_NTASKS为使用的cpu数,可以自己定义
-IB 表示选择IB的rdma网络,不加会慢些
执行上述脚本后会生产带ccc+数字的文件夹,里面会有个文件
方法2;直接修改脚本见前面(二、1-2)
3、intel2018
示例在这个文件夹下/lustre3/example/newmpi/intel2018
可以将其中的/lustre3/example/newmpi/mpi-2.c 拷贝到自己的任意个文件下,进行如下操作
1)编译:
cd /lustre3/example/newmpi/intel2018
source /apps/source/intel-2018.sh
mpiicc -o beijixing ../mpi-2.c
2)提交任务(同章节 二):
方法1;pkurun-cnnl 2 28 ./beijixing
[test_pkuhpc@login12 intel2018]$ cat job.srp000133
#!/bin/bash
#SBATCH -J bei000133
#SBATCH -p cn_nl
#SBATCH -N 2
#SBATCH -o bei000133_%j.out
#SBATCH -e bei000133_%j.err
#SBATCH --no-requeue
#SBATCH -A test_g1
#SBATCH --qos=testcnnl
#SBATCH --ntasks-per-node=28
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
. /apps/source/intel-2018.sh
mpiexec.hydra -rdma -n $SLURM_NTASKS ./beijixing
$SLURM_NTASKS为使用的cpu数,可以自己定义
-rdma表示选择IB的rdma网络,不加影响不大
方法2;直接修改脚本见前面(二、1-2)
4、mvapich2-2.3.1-gcc
示例在这个文件夹下/lustre3/example/newmpi/mvapich2-2.3.1-gcc
可以将其中的/lustre3/example/newmpi/mpi-2.c 拷贝到自己的任意个文件下,进行如下操作
1)编译:
cd /lustre3/example/newmpi/mvapich2-2.3.1-gcc
source /appsnew/source/mvapich2-2.3.1-gcc.sh
mpicc -o beijixing ../mpi-2.c
2)提交任务(同章节 二):
方法1;pkurun-cnnl 2 28 ./beijixing
[test_pkuhpc@login12 mvapich2-2.3.1-gcc]$ cat job.srp000206
#!/bin/bash
#SBATCH -J bei000206
#SBATCH -p cn_nl
#SBATCH -N 2
#SBATCH -o bei000206_%j.out
#SBATCH -e bei000206_%j.err
#SBATCH --no-requeue
#SBATCH -A test_g1
#SBATCH --qos=testcnnl
#SBATCH --ntasks-per-node=28
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
. /appsnew/source/mvapich2-2.3.1-gcc.sh
mpiexec.hydra -n $SLURM_NTASKS ./beijixing
$SLURM_NTASKS为使用的cpu数,可以自己定义
方法2;直接修改脚本见前面(二、1-2)
5、openmpi-4.0.1和其他版本的openmpi
示例在这个文件夹下 cd /lustre3/example/newmpi/openmpi-4.0.1-gcc
可以将其中的/lustre3/example/newmpi/mpi-2.c 拷贝到自己的任意个文件下,进行如下操作
1)编译:
cd /lustre3/example/newmpi/openmpi-4.0.1-gcc
source /appsnew/source/openmpi-4.0.1-gcc.sh
mpicc -o beijixing ../mpi-2.c
2)提交任务(同章节 二):
方法1;pkurun-cnnl 2 28 ./beijixing
[test_pkuhpc@login12 openmpi-4.0.1-gcc]$ cat job.srp000536
#!/bin/bash
#SBATCH -J bei000536
#SBATCH -p cn_nl
#SBATCH -N 2
#SBATCH -o bei000536_%j.out
#SBATCH -e bei000536_%j.err
#SBATCH --no-requeue
#SBATCH -A test_g1
#SBATCH --qos=testcnnl
#SBATCH --ntasks-per-node=28
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
. /appsnew/source/openmpi-4.0.1-gcc.sh
mpirun -n $SLURM_NTASKS -quiet --mca pml ob1 --mca btl_openib_allow_ib true ./beijixing
$SLURM_NTASKS为使用的cpu数,可以自己定义
方法2;直接修改脚本见前面(二、1-2)
3)其他版本的openmpi
2.1.6:
source /appsnew/source/openmpi-2.1.6-gcc.sh
3.1.4:
source /appsnew/source/openmpi-3.1.4-gcc.sh
其他步骤同前面1),2)
五、程序编译示例
(一)octopus(由北极星高性能计算平台、康维老师组学生高静丽共同完成)
cd /lustre3/example/config
这里可以进入你自己创建的文件夹,示例文件夹是没有写的权限
解压程序包
tar -xvf octopus-9.0.tar.gz
mkdir /lustre3/example/config/octopus9.0-intel2019
进入目录
cd octopus-9.0/
1、intel2019编译:
配置环境:
source /appsnew/source/intel2019.sh
source /appsnew/source/automake-1.15.sh
./configure --prefix=/lustre3/example/config/octopus9.0-intel2019 \
-enable-mpi CC=mpiicc FC=mpiifort \
--with-libxc-prefix=/appsnew/usr/libxc/libxc-4.3.4-intel2019 \
--with-blas=/appsnew/usr/blas/BLAS-3.8.0-intel2019/blas_LINUX.a \
--with-lapack=/appsnew/usr/lapack/lapack-3.8.0-intel2019/liblapack.a \
--with-gsl-prefix=/appsnew/usr/gsl/gsl-2.5-intel2019/ \
--with-fftw-prefix=/appsnew/usr/fftw/fftw-3.3.8intel2019
注意
\ 表示没有完 ,后面还有
--prefix 安装路径
-enable-mpi 为允许mpi
CC=mpiicc FC=mpiifort 选择的c和fc
--with-lapack --with-blas 选择的库 。。。
编译:
清除旧的编译内容;编译,-j18 为使用18个mcpcom fortcom去编译;安装文件
make clean ;
make -j18;
make install
安装完后在/lustre3/example/config/octopus9.0-intel2019/bin/下
库查看:使用ldd
ldd /lustre3/example/config/octopus9.0-intel2019/bin/octopus
[pic]
这里可以查看到使用intel编译器,但是少了库:
[pic]
所以要在运行的脚本里加上,如下几行,特别是
source /appsnew/source/intel2019.sh
export LD_LIBRARY_PATH=/appsnew/usr/gsl/gsl-2.5-intel2019/lib:$LD_LIBRARY_PATH
export PATH=$PATH:/lustre3/example/config/octopus9.0-intel2019/bin/
再ldd 就有了
[pic]
千万不要忘记$PATH,这里是先执行环境的,然后再执行用户设定路径的命令。后面则相反
export PATH=/lustre3/example/config/octopus9.0-intel2019/bin:/$PATH
脚本示例:
cat chenfj/intel2019/submit.sh-96-node
#!/bin/bash
#SBATCH -J k-34chenfj
#SBATCH -p cn_nl
#SBATCH -N 96
#SBATCH -o display96_%j.out
#SBATCH -e pwd131356_%j.err
#SBATCH --no-requeue
#SBATCH -A aaa_g1
#SBATCH --ntasks-per-node=28
#SBATCH --qos=aaacnnl
source /appsnew/source/intel2019.sh
export LD_LIBRARY_PATH=/appsnew/usr/gsl/gsl-2.5-intel2019/lib:$LD_LIBRARY_PATH
export PATH=$PATH:/lustre3/example/config/octopus9.0-intel2019/bin/
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
mpiexec.hydra -n $SLURM_NTASKS octopus > /etc/rc.d/rc.local
echo "nvidia-smi -c 3" >> /etc/rc.d/rc.local
As of AMBER 18, with modern 2018 or later GPUs, you are unlikely to see benefit beyond a single GPU, although the design of AMBER is such that it makes sense from a cost perspective to put 4 or 8 GPUs in a single node and run multiple independent simulations on a single node
来自
总结:amber18 最好用双卡节点跑,并且使用一个卡跑
三、relion (欧阳颀物理组博士后余大启提供,脚本和编译,测试陈芳进)
(一)编译环境
Relion是由MRC的S. Scheres主导开发的开源软件,下载的github代码库地址为:。考虑到用Intel MPI编译效果一般最佳,本集群目前提供了Intel 2018和Intel2019并行编译器编译的支持GPU计算的版本和纯CPU版本。
|编译器版本 |/appsnew/CryoEMapps/ 路径 |适用队列 |
|Intel2019+Cuda |relion3.0.7_cuda10.1_intelmkl2019u4 |gpu_4l |
|Intel2018+Cuda |relion3.0.7_cuda10.1_intelmkl2018 |gpu_4l |
|Intel2019 |relion3.0.7_cpu_intelmkl2019 |cn_nl |
|Intel2018 |relion3.0.7_cpu_intelmkl2019 |cn_nl |
推荐尽可能使用Intel2019并行编译器和Cuda10.1编译的版本在GPU节点上运行。当然一些不能用GPU加速的任务也需要不带Cuda的版本在CPU节点上运行。使用过程中,可参考这里尽可能针对自己的体系进行性能,内存限制等方面调优:
一般来说,让进程尽可能开在单独的一个物理CPU上会是比较合理的选择。
(二)提交脚本
/lustre3/qi_pkuhpc/test/relion_benchmark/EMPIAR_10253_v2_1node/4GPUs/example
这里提供了一个例子:
#!/bin/bash
#SBATCH -J relion
#SBATCH -p gpu_4l
#SBATCH -N 1
##SBATCH --nodelist=s10b00n01
#SBATCH -o relion_%j.out
#SBATCH -e relion_%j.err
#SBATCH -A xx_g1
#SBATCH --qos=qig4c
#SBATCH --gres=gpu:4
#SBATCH --exclusive
starttime=`date +"%s"`
export I_MPI_DEBUG=20
ulimit -s unlimited
source /appsnew/source/cuda-10.1.sh
source /appsnew/source/intel2019.sh
source /appsnew/opt/intel/intel2019/mkl/bin/mklvars.sh intel64
export PATH=/appsnew/CryoEMapps/relion3.0.7_cuda10.1_intelmkl2019u4/bin:$PATH
export LD_LIBRARY_PATH=/appsnew/CryoEMapps/relion3.0.7_cuda10.1_intelmkl2019u4/lib:$LD_LIBRARY_PATH
nvidia-smi
echo "MAX_TASKS_PER_NODE:" $MAX_TASKS_PER_NODE
echo $CUDA_VISIBLE_DEVICES
echo $PATH
echo $LD_LIBRARY_PATH
ngpupernodes=`echo $CUDA_VISIBLE_DEVICES | awk -F',' '{print NF}'`
nprocsnode1=`echo $ngpupernodes | awk '{print $1+1}'`
nprocs=$nprocsnode1
hosts=`scontrol show hostname $SLURM_JOB_NODELIST`
host1=`echo "$hosts" | head -n 1`
gpustring1=`echo $CUDA_VISIBLE_DEVICES | sed 's/,/:/g'`
gpustring="$gpustring1"
echo "$host1:$nprocsnode1" > machinefile_${SLURM_JOB_ID}
for host in `echo "$hosts" | awk '{if(NR>1)print $0}'`; do
echo "$host:$ngpupernodes" >> machinefile_${SLURM_JOB_ID}
nprocs=`echo $nprocs $ngpupernodes | awk '{print $1+$2}'`
gpustring="$gpustring:$gpustring1"
done
echo "CUDA_VISIBLE_DEVICES:$CUDA_VISIBLE_DEVICES"
echo "gpustring:$gpustring"
mkdir -p autorefine/round01
mpiexec.hydra -bootstrap slurm -np $nprocs -machinefile machinefile_${SLURM_JOB_ID} relion_refine_mpi --o autorefine/round01/cryosparc_exp001887_006 --auto_refine --split_random_halves --i cryosparc_exp001887_006.star --angpix 1.059 --particle_diameter 140 --ref emd_0605.mrc --firstiter_cc --ini_high 40 --dont_combine_weights_via_disc --pool 28 --ctf --ctf_corrected_ref --flatten_solvent --zero_mask --oversampling 1 --healpix_order 2 --auto_local_healpix_order 4 --offset_range 3 --offset_step 1 --sym C1 --low_resol_join_halves 40 --norm --scale --j 10 --gpu $gpustring > autorefine_round01_cryosparc_exp001887_006.log
endtime=`date +"%s"`
usedtime=`echo $starttime $endtime | awk '{print strtonum($2)-strtonum($1)}'`
echo "Used time: $usedtime" > timeused.log
提交脚本如下:
(三)测试结果
所有测试均在gpu_4l节点上运行。
因为Relion属于支持GPU加速计算的程序,用GPU的加速比可以达到很高,但是仍然有相当一部分计算需要依赖CPU。我们首先测试了同样多的GPU的情况下CPU核心数对计算效率的影响。测试使用2个GPU作为加速卡,使用Intel编译器的环境变量I_MPI_THREAD_MAX和I_MPI_PIN_DOMAIN来控制使用的CPU核心数,结果如下图所示。
[pic]
因此,在GPU加速卡一定的情况下应尽可能多地使用CPU,最好能保证每个进程使用7个核心以上。
我们还测试了不同数目的GPU加速卡对程序的加速情况。
[pic]
[pic]
可见,增加GPU数量能加速运算,对于常用的100k左右颗粒的数据,性价比比较高的方案应该是使用8块卡(gpu_4l上的2个节点),而对于更大规模的计算,则推荐使用更多(20-40卡)以获取更快计算速度。
四、gromacs,(欧阳颀物理组博士后余大启提供脚本和编译,)
(一)中小体系测试(卢海龙课题组博后邓亚骏):
Gromacs 2019.2测试报告
本次共测试了3个gromacs算例,都分别用1个gpu_4l节点和2个cn_nl节点(1个GPU节点4个卡,对应cn_nl 2个节点)进行了测试。gpu_4l节点4个gpu卡全部占用,cuda版本为10.1,intel编译器为intel 2019。cn_nl为每节点的28个核全部占用,intel编译器为intel 2019。脚本见下。
gpu加速脚本:
#!/bin/bash
#SBATCH -J dyj19.2_gpu
#SBATCH -p gpu_4l
#SBATCH -N 1
#SBATCH --gres=gpu:4
#SBATCH -o gmx_%j.out
#SBATCH -e gmx_%j.err
#SBATCH -A hlu_g1
#SBATCH --qos=hlug4c
#SBATCH --exclusive
export I_MPI_DEBUG=20
#export PATH=/appsnew/usr/gcc/gcc-8.3.0/bin:$PATH
#export LD_LIBRARY_PATH=/appsnew/usr/gcc/gcc-8.3.0/lib64:$LD_LIBRARY_PATH
#source /appsnew/source/cuda-10.1.sh
#source /appsnew/source/intel2019.sh
#source /appsnew/opt/intel/intel2019/mkl/bin/mklvars.sh intel64
source /appsnew/mdapps/gromacs2019.2_cuda10.1_intelmkl2019u4/bin/GMXRC2.bash
hosts=`scontrol show hostname $SLURM_JOB_NODELIST`
numprocs=`echo "$hosts" | wc -l | awk '{print $1*4}'`
numprocs2=$SLURM_CPUS_ON_NODE
host1=`echo "$hosts" | head -n 1`
gpustring="0123"
echo "$host1:13" > machinefile_${SLURM_JOB_ID}
for host in `echo "$hosts" | awk '{if(NR>1)print $0}'`; do
echo "$host:13" >> machinefile_${SLURM_JOB_ID}
gpustring="$gpustring0123"
numprocs2=`echo $numprocs2 $SLURM_CPUS_ON_NODE | awk '{print $1+$2}'`
done
nvidia-smi
export OMP_NUM_THREADS=7
gmx grompp -f md4.mdp -c md3.gro -t md3.cpt -p sio2_ -o md4.tpr
mpirun -np $numprocs -machinefile machinefile_${SLURM_JOB_ID} mdrun_mpi -deffnm md4 -ntomp $OMP_NUM_THREADS -gpu_id 0123 -nb gpu -pme gpu -pmefft gpu -npme 1 -v
#mpirun -np 28 -machinefile machinefile_${SLURM_JOB_ID} mdrun_mpi -deffnm md4 -ntomp 2 -gputasks 0000111122223 -nb gpu -pme gpu -pmefft gpu -npme 1 -v
cn_nl测试脚本:
#!/bin/bash
#SBATCH -J dyj19
#SBATCH -p cn_nl
#SBATCH -N 2
#SBATCH -o dyj_%j.out
#SBATCH -e dyj_%j.err
#SBATCH --no-requeue
#SBATCH -A hlu_g1
#SBATCH --qos=hlucnnl
#SBATCH --ntasks-per-node=28
source /appsnew/source/intel2019.sh
source /appsnew/mdapps/gromacs2019.2_intelmkl2019u4/bin/GMXRC2.bash
gmx grompp -f cnnl_md4.mdp -c md3.gro -t md3.cpt -p sio2_ -o cnnl_md4.tpr
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
mpirun -n $SLURM_NTASKS mdrun_mpi -deffnm cnnl_md4
测试结果:
|算例 |原子数 |gpu_4l速度 (ns/day) |cn_nl速度 (ns/day) |gpu_4l / cn_nl速度比 |
|1 |79728 |112.183 |17.795 |6.304 |
|2 |108528 |90.978 |12.086 |7.528 |
|3 |93168 |96.823 |10.518 |9.205 |
总结:
通过上表可知,1个gpu_4l节点的计算速度远大于2个cn_nl节点,速度比在6.3倍~9.2倍。对于此次测试的不同算例,加速比是不同的,这可能与算例本身、不同gpu_4l / cn_nl 节点的计算效率等因素有关。
(二)大规模,来老师组聂小玉提供体系,测试由陈芳进和聂小玉共同完成:
source /appsnew/mdapps/gromacs2019.2_intelmkl2019u4/bin/GMXRC2.bash
source /appsnew/mdapps/gromacs2019.2_intelmkl2019u4/bin/GMXRC2.bash
使用cpu计算的时候包括cn_nl 和cpu还是用:
. /appsnew/mdapps/gromacs2019.3_cpu_intelmkl2019_cnscompat/bin/GMXRC2.bash
提交脚本:
#!/bin/bash
#SBATCH -J gmx
#SBATCH -p gpu_4l
#SBATCH -N 2
#SBATCH --gres=gpu:4
#SBATCH -o gmx_%j.out
#SBATCH -e gmx_%j.err
#SBATCH -A qi_g1
#SBATCH --qos=qig4c
#SBATCH --exclusive
export I_MPI_DEBUG=20
gmx grompp -f md.mdp -c mini.gro -p sio2_ -o md.tpr
mpirun mdrun_mpi -deffnm md
对于cn-nl节点,建议还是使用原来的cpu版本,应该更快点,gromacs官网是觉得那个mdrun_mpi2对应的编译选项更快
使用gpu计算:
#!/bin/bash
#SBATCH -J gmx
#SBATCH -p gpu_4l
#SBATCH -N 2
#SBATCH --gres=gpu:4
#SBATCH -o gmx_%j.out
#SBATCH -e gmx_%j.err
#SBATCH -A qi_g1
#SBATCH --qos=qig4c
#SBATCH --exclusive
export I_MPI_DEBUG=20
#export PATH=/appsnew/usr/gcc/gcc-8.3.0/bin:$PATH
#export LD_LIBRARY_PATH=/appsnew/usr/gcc/gcc-8.3.0/lib64:$LD_LIBRARY_PATH
#source /appsnew/source/cuda-10.1.sh
#source /appsnew/source/intel2019.sh
#source /appsnew/opt/intel/intel2019/mkl/bin/mklvars.sh intel64
source /appsnew/mdapps/gromacs2019.3_cpu_intelmkl2019_cnscompat/bin/GMXRC2.bash
hosts=`scontrol show hostname $SLURM_JOB_NODELIST`
numprocs=`echo "$hosts" | wc -l | awk '{print $1*4}'`
numprocs2=$SLURM_CPUS_ON_NODE
host1=`echo "$hosts" | head -n 1`
gpustring="0123"
echo "$host1:13" > machinefile_${SLURM_JOB_ID}
for host in `echo "$hosts" | awk '{if(NR>1)print $0}'`; do
echo "$host:13" >> machinefile_${SLURM_JOB_ID}
gpustring="$gpustring0123"
numprocs2=`echo $numprocs2 $SLURM_CPUS_ON_NODE | awk '{print $1+$2}'`
done
nvidia-smi
export OMP_NUM_THREADS=7
mpirun -np $numprocs -machinefile machinefile_${SLURM_JOB_ID} mdrun_mpi -s benchRIB.tpr -ntomp $OMP_NUM_THREADS -gpu_id 0123 -nb gpu -pme gpu -pmefft gpu -npme 1 -v
#mpirun -np 26 -machinefile machinefile_${SLURM_JOB_ID} mdrun_mpi -s benchRIB.tpr -ntomp 2 -gputasks 0000111122223 -nb gpu -pme gpu -pmefft gpu -npme 1 -v
待续
.
.
.
五、深度学习(来鲁华老师化学组博士后提供脚本和编译,测试):
|Titan Xp | |Telsa P100 | | Telsa V100 | | | | | |GPU 1 |GPU 2 |GPU 1 |GPU2 |GPU 1 |GPU 2 |GPU 3 |GPU 4 | |Cuda |10.1 |10.1 |9.0 |9.0 |10.0 |10.0 |10.0 |10.0 | |Cudnn |7.6 |7.6 |7.0 |7.0 |7.4 |7.4 |7.4 |7.4 | |Mem. usage |100% |100% |100% |100% |100% |100% |100% |100% | |mem |11G |11G*2 |16G |16G*2 |32G |32G*2 |32G*3 |32G*4 | |Time |81.6s |57s |83.5s |58.9s |54.0s |43.2s |32.5s |31.1s | |
我们用MNIST数据库以及利用Keras框架进行12个循环的全内存训练测试。发现Telsa v100在单卡的情况下,比先前的Titan XP和 Tesla P100快了约33%。在双卡情况下,比先前的Titan XP和 Tesla P100快了约25%。 3卡和4卡的测试中,比双卡快了约23%。 在多次测试中发现3卡和4卡的计算速度并没有明显的区别。
但是深度学习的多GPU模式的时候,需要把需要计算的内存数据和模型分配到每一块卡上,才能真正跑起多GPU的任务。如下所示:
def to_multi_gpu(model, n_gpus=2):
if n_gpus ==1:
return model
with tf.device('/cpu:0'):
x = Input(model.input_shape[1:])
towers = []
for g in range(n_gpus):
with tf.device('/gpu:' + str(g)):
slice_g = Lambda(slice_batch, lambda shape: shape, arguments={'n_gpus':n_gpus, 'part':g})(x)
towers.append(model(slice_g))
with tf.device('/cpu:0'):
# Deprecated
#merged = merge(towers, mode='concat', concat_axis=0)
merged = Concatenate(axis=0)(towers)
return Model(inputs=[x], outputs=merged)
以下是python在login 12 GPU上面的运行脚本:
>cat template_submit.sh
#!/bin/bash
#SBATCH -J pyt013355
#SBATCH -p gpu_4l
#SBATCH -N 1
#SBATCH -o pyt013355_%j.out
#SBATCH -e pyt013355_%j.err
#SBATCH --no-requeue
#SBATCH -A lhlai_g1
#SBATCH --qos=lhlaig4c
#SBATCH --gres=gpu:4
#SBATCH --overcommit
#SBATCH --mincpus=7
#Activate Basic py-env
#source /appsnew/source/Tensorflow1.13_Keras2.2_Pytorch1.1_py3.7.3_cuda9.sh
source /appsnew/source/Tensorflow1.13_Keras2.2_Pytorch1.1_py3.5.7_cuda10.sh
#Activate user defined rc environment
#source /path/to/your_rc_env.sh
# Show running info
echo "MAX_TASKS_PER_NODE:" $MAX_TASKS_PER_NODE
echo $CUDA_VISIBLE_DEVICES
echo $PATH
echo $LD_LIBRARY_PATH
ngpupernodes=`echo $CUDA_VISIBLE_DEVICES | awk -F',' '{print NF}'`
nprocsnode1=`echo $ngpupernodes | awk '{print $1+1}'`
nprocs=$nprocsnode1
hosts=`scontrol show hostname $SLURM_JOB_NODELIST`
numprocs=`echo "$hosts" | wc -l | awk '{print int($1*strtonum('"$ngpupernodes"')+1)}'`
host1=`echo "$hosts" | head -n 1`
gpustring1=`echo $CUDA_VISIBLE_DEVICES | sed 's/,/:/g'`
gpustring="$gpustring1"
echo "$host1:$nprocsnode1" > machinefile_${SLURM_JOB_ID}
for host in `echo "$hosts" | awk '{if(NR>1)print $0}'`; do
echo "$host:$ngpupernodes" >> machinefile_${SLURM_JOB_ID}
nprocs=`echo $nprocs $ngpupernodes | awk '{print $1+$2}'`
gpustring="$gpustring:$gpustring1"
done
echo "CUDA_VISIBLE_DEVICES:$CUDA_VISIBLE_DEVICES"
#gpustring=0:1
echo "gpustring:$gpustring"
python mnist_cnn.py $nprocsnode1 50000
endtime=`date +"%s"`
usedtime=`echo $starttime $endtime | awk '{print strtonum($2)-strtonum($1)}'`
echo "Used time: $usedtime" > timeused.log
其中#SBATCH --gres=gpu:4表示需要使用的核数;
python mnist_cnn.py $nprocsnode1 50000 提交的运行脚本,50000是脚本所需要的参数。
#Activate Basic py-env 是选择自己需要激活使用的python配置环境
# Activate user defined rc environment, 以及需要加载其他自定义的文件安装环境文件,如
export PYTHONPATH=/lustre3/lhlai_pkuhpc/yjxu/software/rdkit-py37/lib/python3.7/site-packages:$PYTHONPATH
export LD_LIBRARY_PATH=/lustre3/lhlai_pkuhpc/yjxu/software/rdkit-py37/lib:$LD_LIBRARY_PATH
六、octopus测试报告(工学院康维老师学生高静丽,提供编译,脚本,测试由高静丽和陈芳进共同完成):
七、vasp测试(王洋洋老师提供模型和脚本,编译陈芳进)
vasp版本目录:
编译是注意下将arch/makefile.include.linux_intel中的-openmp 改为-qopenmp;
2019编译器还需改:MPI_INC = /appsnew/opt/intel/intel2019/compilers_and_libraries_2019.4.243/linux/mpi/intel64/include/
参考/appsnew/physapps/vasp/vasp-5.4.4/vasp-5.4.4.intel2019_cuda10.1/makefile.includecuda
/appsnew/physapps/vasp/vasp-5.4.4/vasp-5.4.4.intel2018_cuda10.1/bin
/appsnew/physapps/vasp/vasp-5.4.4/vasp-5.4.4.intel2019_cuda10.1/bin
gpu和cpu并行版本均在bin目录下,单机版本在上面目录的bin_serial文件夹下
(注意cuda9.2 以下支持不了2018intel编译器)
source /appsnew/source/vasp-5.4.4.intel2018_cuda10.1.sh
source /appsnew/source/vasp-5.4.4.intel2019_cuda10.1.sh
source /appsnew/source/vasp-5.4.4.intel2015_cuda9.2.sh
由于vasp特性要求:
1节点使用20核,余8核
2节点使用50核,余6核
3节点使用80核,余4核
4节点使用110核,余2核
5节点使用140核,余0核 2018 多次跑得很卡
6节点使用160核,余8核
7节点使用190核,余6核 2018 多次跑得很卡
8节点使用220核,余4核 跑不起来 跑几步就很卡,2019 2018 2015 均是
9节点使用250核,余2核
10节点使用280核,余0核
……………….
检查输出脚本;长时间脚本不到10000字节的
for i in `sq |grep cn_nl |awk '{print $1 }'`;do sq |grep $i;ls -l `sjob $i |grep StdOut |awk -F= '{print $2}'` |awk '{print $5,$NF}' ;done
(一)脚本
1、intel2018 CPU脚本参考
1节点脚本
#!/bin/bash
#SBATCH -J vas230054
#SBATCH -p cn_nl
#SBATCH -N 1
#SBATCH -o vas230054_%j.out
#SBATCH -e vas230054_%j.err
#SBATCH --no-requeue
#SBATCH -A wangyangy_g1
#SBATCH --qos=wangyangycnnl
#SBATCH -n 20
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
source /appsnew/source/vasp-5.4.4.intel2018_cuda10.1.sh
mpirun -n $SLURM_NTASKS vasp_std
5节点脚本:
#!/bin/bash
#SBATCH -J vas230054
#SBATCH -p cn_nl
#SBATCH -N 5
#SBATCH -o vas230054_%j.out
#SBATCH -e vas230054_%j.err
#SBATCH --no-requeue
#SBATCH -A wangyangy_g1
#SBATCH --qos=wangyangycnnl
#SBATCH --ntasks-per-node=28
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
source /appsnew/source/vasp-5.4.4.intel2018_cuda10.1.sh
mpirun -n $SLURM_NTASKS vasp_std
或者
#!/bin/bash
#SBATCH -J vas230054
#SBATCH -p cn_nl
#SBATCH -N 5
#SBATCH -o vas230054_%j.out
#SBATCH -e vas230054_%j.err
#SBATCH --no-requeue
#SBATCH -A wangyangy_g1
#SBATCH --qos=wangyangycnnl
#SBATCH --ntasks-per-node=28
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
source /appsnew/source/vasp-5.4.4.intel2018_cuda10.1.sh
mpirun -n 140 vasp_std
也可也这么写
#!/bin/bash
#SBATCH -J vas230054
#SBATCH -p cn_nl
#SBATCH -N 5
#SBATCH -o vas230054_%j.out
#SBATCH -e vas230054_%j.err
#SBATCH --no-requeue
#SBATCH -A wangyangy_g1
#SBATCH --qos=wangyangycnnl
#SBATCH -n 140
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
source /appsnew/source/vasp-5.4.4.intel2018_cuda10.1.sh
mpirun -n $SLURM_NTASKS vasp_std
2、2019intel CPU脚本参考
5节点脚本
#!/bin/bash
#SBATCH -J vas230054
#SBATCH -p cn_nl
#SBATCH -N 5
#SBATCH -o vas230054_%j.out
#SBATCH -e vas230054_%j.err
#SBATCH --no-requeue
#SBATCH -A wangyangy_g1
#SBATCH --qos=wangyangycnnl
#SBATCH -n 140
hosts=`scontrol show hostname $SLURM_JOB_NODELIST` ;echo $hosts
source /appsnew/source/vasp-5.4.4.intel2019_cuda10.1.sh
mpirun -n $SLURM_NTASKS vasp_std
尽量不用#SBATCH --ntasks-per-node=28,会报错:
/appsnew/opt/intel/intel2019/compilers_and_libraries_2019.4.243/linux/mpi/intel64/bin/mpirun:\
line 103: 316819 Segmentation fault (core dumped) mpiexec.hydra "$@" 0 ................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.