代码之家  ›  专栏  ›  技术社区  ›  Aroli Marcellinus

在PBS脚本中的mpirun命令之后无法执行GNUPlot

  •  0
  • Aroli Marcellinus  · 技术社区  · 8 年前

    我让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
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Sourav    8 年前

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

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

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

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

    3. MPI作业完成后,作为后处理步骤,在head节点上运行gnuplot。PBS/Torque并不能直接做到这一点。要做到这一点,您需要编写一个单独的bash(而不是PBS)脚本。

    推荐文章