在HPC群集上从八度调用R脚本时出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在HPC群集上从八度调用R脚本时出错相关的知识,希望对你有一定的参考价值。

我有一个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 "); 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,它工作正常并打印所需的输出就好了。我尝试了很多我能在网上找到的解决方案但无济于事

谁知道出了什么问题?谢谢你的任何建议!

答案

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

    module load r/3.4.3

查看更多herehere

以上是关于在HPC群集上从八度调用R脚本时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac M1 上从 erlang 调用加载 Snowflake ODBC 驱动程序时出错:odbc.connect

微软HPC群集添加Linux计算节点

在 Windows 上从源代码构建点云库 Boost 时出错

在 OS X 上从源代码构建 PHP 5.2.10 时链接 libresolv 时出错

第二次在对话框中膨胀片段时出错

确定HPC命令行实用程序的(Azure)OAuth2授权流程