【问题标题】:Error calling R script from octave on HPC cluster在 HPC 集群上从 octave 调用 R 脚本时出错
【发布时间】:2014-12-19 16:42:56
【问题描述】:

我有一个octave 脚本,它调用R 脚本在HPC 集群上进行一些计算。计算过程如下:

  1. 在集群上提交作业以分配计算节点,然后将计算分配给该节点中的每个 CPU。部分shell脚本如下所示

    count=0
    
    HOSTLIST=
    
    for host in `cat $PBS_NODEFILE`
    
      do
    
        HOSTLIST[$count]=$host
    
        count=$(($count+1))
    
    done
    
    ...
    ...
    ...
    
    mkdir case_$count
    
    cd case_$count
    
    export workdir=`pwd`
    
    remotehost=${HOSTLIST[$pcount]}
    
    ssh -n $remotehost "cd $workdir; export PATH=$PATH:$workdir; octave $MFILE > /dev/null" &
    
  2. 为简单起见,示例$MFILE内容为

    printf("Calling R script from Octave \n");
    
    system('./hello_world.R');
    
  3. hello_world.R

    #!/usr/bin/Rscript
    print("Hello World!")
    
  4. 运行时遇到错误

    sh: ./hellow_world.R: /usr/bin/Rscript: bad interpreter: No such file or directory
    
  5. 我的一些环境变量(以防万一)

    $ echo $PATH
    
    /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/cuda/bin:/opt/ganglia/bin:/opt/ganglia/sbin:/usr/java/latest/bin:/opt/maven/bin:/opt/maui/bin:/opt/torque/bin:/opt/torque/sbin:/opt/pvfs2/bin:/opt/rocks/bin:/opt/rocks/sbin
    
    $ which Rscript 
    
    /usr/bin/Rscript
    
    $ which R
    
    /usr/bin/R
    

如果我从命令行运行$MFILE,它可以正常工作并打印所需的输出就好了。网上找了很多解决方法,都无济于事

有人知道出了什么问题吗?感谢您的任何建议!

【问题讨论】:

  • 当你说你已经从命令行运行 $MFILE 时,是在集群上吗?你能在交互式节点上测试它吗?似乎很难找到 Rscript 的命令或你的 hello_world.R 文件,这两者都是工作目录问题。
  • 谢谢@darwin!是的,$MFILE 从集群本身的命令行运行正常,但在分配的计算节点的独立 CPU 上运行时出现问题。老实说,在 HPC/集群方面我还是个新手。你能告诉我如何在交互式节点上测试它吗?我会进一步研究这个
  • 我无法解决问题。我最终将我的 R 代码转换为 octave 以使程序运行。不过还是谢谢你。节日快乐!

标签: r ssh cluster-computing octave hpc


【解决方案1】:

问题是 R 已加载到登录节点上,但未加载到计算节点上。所以在作业提交脚本中,在进行任何计算之前,必须有一行加载R。例如:

    module load r/3.4.3

查看更多 herehere

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 2019-12-23
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多