【问题标题】:GNUPlot cannot be executed after mpirun command in PBS script在 PBS 脚本中执行 mpirun 命令后无法执行 GNUPlot
【发布时间】:2018-05-16 02:07:13
【问题描述】:

我有类似这样的 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,然后是 mpirun,则不会出现任何错误。我怀疑 mpirun 之后的一些命令需要一些特殊的配置,但我不知道该怎么做

已经在关注这个解决方案,但是没有用。

sleep command not found in torque pbs but works in shell

已编辑:

看来mpirun前后还是有错误。这就是结果:

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

【问题讨论】:

  • 如果您在which gnuplot 之前和之后mpirun 会怎样?
  • 啊,我认为这也是错误的。类似的东西: (/opt/intel/composer_xe_2011_sp1.9.293/b​​in/intel64:/opt/intel/composer_xe_2011_sp1.9.293/b​​in/intel64:/opt/pgi/linux86-64/9.0-4/bin:/ 中没有 gnuplot 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)
  • 但是当我尝试 ls 目录 /usr/local/bin 时,gnuplot 命令在那里 ls -l /usr/local/bin/gnuplot -rwxr-xr-x 1 root root 3262113 2017 年 9 月 18 日 /usr/local/bin/gnuplot
  • 是在mpirun 之前还是之后?如果您明确运行 /usr/local/bin/gnuplot 怎么办?您可能还想file /usr/local/bin/gnuplotldd /usr/local/bin/gnuplot 来检查所有内容。
  • 附带说明,日志在以 cmets 形式发布时难以阅读,您最好编辑您的问题。

标签: mpi pbs torque


【解决方案1】:

您的系统很可能有不同的“登录/头节点”和“计算节点”。这是许多超级计算集群中常用的做法。当您从头节点构建和启动应用程序时,它会在一个或多个计算节点上执行。

与头节点相比,计算节点可以具有不同的硬件和软件。在您的情况下,gnuplot 仅安装在头节点上,您可以从 which gnuplot 的不同输出中看到。要解决这个问题,您有三种方法:

  1. 请求系统管理员在计算节点上安装 gnuplot。

  2. 在可从计算节点访问的文件系统中构建并安装您自己的 gnuplot 版本。它可能是您的主目录或其他位置,具体取决于您的集群。通常,您的应用程序所在的文件系统将可用。在您的情况下,/scratch4/marcell/ 下的任何位置都可能有效。

  3. 在 MPI 作业作为后处理步骤完成后,在头节点上运行 gnuplot。 PBS/Torque 没有提供直接的方法来做到这一点。您需要编写一个单独的 bash(不是 PBS)脚本来执行此操作。

【讨论】:

  • 啊,我明白了。我明白你的意思。所以这意味着我需要将 gnuplot 添加到计算节点?我对数字 3 很感兴趣。假设我的 PBS 脚本名为simulator.sh,我的绘图是 plotting.gnu。有什么方法可以在不等待 PBS 调度程序停止的情况下连续运行 PBS 和非 PBS 脚本?由于我不能被允许分别将 gnuplot 安装到每个计算节点。
猜你喜欢
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
相关资源
最近更新 更多