PBS 脚本中的 mpirun 命令后无法执行 GNUPlot
GNUPlot cannot be executed after mpirun command in PBS script
我有类似这样的 PBS 命令
#PBS -N marcell_single_cell
#PBS -l nodes=1:ppn=1
#PBS -l walltime=20000:00:00
#PBS -e stderr.log
#PBS -o stdout.log
# Specific the shell types
#PBS -S /bin/bash
# Specific the queue type
#PBS -q dque
#uncomment this if you want to debug the process
#set -vx
cd $PBS_O_WORKDIR
ulimit -s unlimited
NPROCS=`wc -l < $PBS_NODEFILE`
#export PATH=$PBS_O_PATH
echo This job has allocated $NPROCS nodes
echo Cleaning old files...
rm -rf *.png *.plt *.log
echo Cleaning success
/opt/Lib/openmpi-2.1.3/bin/mpirun -np $NPROCS /scratch4/marcell/CellMLSimulator/bin/CellMLSimulator -ionmodel grandi2010 -solverType CVode -irepeat 4 -dt 0.01
gnuplot -p plotting.gnu
PBS 错误日志抛出了类似这样的错误。
/var/spool/torque/mom_priv/jobs/6265.node01.SC: line 28: gnuplot: command not found
我已经确定GNUPlot的路径已经添加到PATH环境变量中了。
然而,奇怪的是,如果我交换命令的顺序,比如先gnuplot再mpi运行,没有任何错误。我怀疑 mpi运行 之后的某些命令需要一些特殊配置,但我不知道该怎么做
已经按照此解决方案,但无济于事。
sleep command not found in torque pbs but works in shell
已编辑:
mpi运行前后好像还是报错了。这是哪个结果:
which: no gnuplot in (/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64:/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64:/opt/pgi/linux86-64/9.0-4/bin:/opt/openmpi/bin:/usr/kerberos/bin:/prog/tools/grace/grace/bin:/home/prog/ansys_inc/v121/fluent/bin:/bin:/usr/bin:/opt/intel/composer_xe_2011_sp1.9.293/mpirt/bin/intel64:/opt/intel/composer_xe_2011_sp1.9.293/mpirt/bin/intel64:/scratch7/feber/jdk1.8.0_101:/scratch7/feber/code/apache-maven/bin:/usr/local/bin:/scratch7/cml/bin)
这很奇怪,因为当我试图找到 gnuplot 时,/usr/local/bin
中有一个
ls -l /usr/local/bin/gnuplot
-rwxr-xr-x 1 root root 3262113 Sep 18 2017 /usr/local/bin/gnuplot
此外,如果我 运行 那些没有 PBS 的命令,它似乎按我预期的那样执行:
/scratch4/marcell/CellMLSimulator/bin/CellMLSimulator -ionmodel grandi2010 -solverType CVode -irepeat 4 -dt 0.01
gnuplot -p plotting.gnu
很可能您的系统有不同的 "login/head nodes" 和 "compute nodes"。这是许多超级计算集群中常用的做法。当您从头节点构建和启动应用程序时,它会在一个或多个计算节点上执行。
与头节点相比,计算节点可以具有不同的硬件和软件。在您的情况下,gnuplot 仅安装在头节点上,您可以从 which gnuplot
的不同输出中看到这一点。要解决这个问题,您可以采用三种方法:
请求系统管理员在计算节点上安装gnuplot。
在可从计算节点访问的文件系统中构建并安装您自己的 gnuplot 版本。它可以是您的主目录或其他地方,具体取决于您的集群。通常,您的应用程序所在的文件系统将可用。在您的情况下,/scratch4/marcell/
以下的任何地方都可能有效。
运行 MPI 作业完成后头节点上的 gnuplot 作为 post 处理步骤。 PBS/Torque 没有提供直接的方法来做到这一点。您需要编写一个单独的 bash(不是 PBS)脚本来执行此操作。
我有类似这样的 PBS 命令
#PBS -N marcell_single_cell
#PBS -l nodes=1:ppn=1
#PBS -l walltime=20000:00:00
#PBS -e stderr.log
#PBS -o stdout.log
# Specific the shell types
#PBS -S /bin/bash
# Specific the queue type
#PBS -q dque
#uncomment this if you want to debug the process
#set -vx
cd $PBS_O_WORKDIR
ulimit -s unlimited
NPROCS=`wc -l < $PBS_NODEFILE`
#export PATH=$PBS_O_PATH
echo This job has allocated $NPROCS nodes
echo Cleaning old files...
rm -rf *.png *.plt *.log
echo Cleaning success
/opt/Lib/openmpi-2.1.3/bin/mpirun -np $NPROCS /scratch4/marcell/CellMLSimulator/bin/CellMLSimulator -ionmodel grandi2010 -solverType CVode -irepeat 4 -dt 0.01
gnuplot -p plotting.gnu
PBS 错误日志抛出了类似这样的错误。
/var/spool/torque/mom_priv/jobs/6265.node01.SC: line 28: gnuplot: command not found
我已经确定GNUPlot的路径已经添加到PATH环境变量中了。
然而,奇怪的是,如果我交换命令的顺序,比如先gnuplot再mpi运行,没有任何错误。我怀疑 mpi运行 之后的某些命令需要一些特殊配置,但我不知道该怎么做
已经按照此解决方案,但无济于事。
sleep command not found in torque pbs but works in shell
已编辑:
mpi运行前后好像还是报错了。这是哪个结果:
which: no gnuplot in (/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64:/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64:/opt/pgi/linux86-64/9.0-4/bin:/opt/openmpi/bin:/usr/kerberos/bin:/prog/tools/grace/grace/bin:/home/prog/ansys_inc/v121/fluent/bin:/bin:/usr/bin:/opt/intel/composer_xe_2011_sp1.9.293/mpirt/bin/intel64:/opt/intel/composer_xe_2011_sp1.9.293/mpirt/bin/intel64:/scratch7/feber/jdk1.8.0_101:/scratch7/feber/code/apache-maven/bin:/usr/local/bin:/scratch7/cml/bin)
这很奇怪,因为当我试图找到 gnuplot 时,/usr/local/bin
中有一个ls -l /usr/local/bin/gnuplot
-rwxr-xr-x 1 root root 3262113 Sep 18 2017 /usr/local/bin/gnuplot
此外,如果我 运行 那些没有 PBS 的命令,它似乎按我预期的那样执行:
/scratch4/marcell/CellMLSimulator/bin/CellMLSimulator -ionmodel grandi2010 -solverType CVode -irepeat 4 -dt 0.01
gnuplot -p plotting.gnu
很可能您的系统有不同的 "login/head nodes" 和 "compute nodes"。这是许多超级计算集群中常用的做法。当您从头节点构建和启动应用程序时,它会在一个或多个计算节点上执行。
与头节点相比,计算节点可以具有不同的硬件和软件。在您的情况下,gnuplot 仅安装在头节点上,您可以从 which gnuplot
的不同输出中看到这一点。要解决这个问题,您可以采用三种方法:
请求系统管理员在计算节点上安装gnuplot。
在可从计算节点访问的文件系统中构建并安装您自己的 gnuplot 版本。它可以是您的主目录或其他地方,具体取决于您的集群。通常,您的应用程序所在的文件系统将可用。在您的情况下,
/scratch4/marcell/
以下的任何地方都可能有效。运行 MPI 作业完成后头节点上的 gnuplot 作为 post 处理步骤。 PBS/Torque 没有提供直接的方法来做到这一点。您需要编写一个单独的 bash(不是 PBS)脚本来执行此操作。