【发布时间】:2014-12-19 16:42:56
【问题描述】:
我有一个octave 脚本,它调用R 脚本在HPC 集群上进行一些计算。计算过程如下:
-
在集群上提交作业以分配计算节点,然后将计算分配给该节点中的每个 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" & -
为简单起见,示例
$MFILE内容为printf("Calling R script from Octave \n"); system('./hello_world.R'); -
hello_world.R#!/usr/bin/Rscript print("Hello World!") -
运行时遇到错误
sh: ./hellow_world.R: /usr/bin/Rscript: bad interpreter: No such file or directory -
我的一些环境变量(以防万一)
$ 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