2014-12-19 35 views
1

我有一個octave腳本,它調用R腳本在HPC集羣上執行一些計算。計算過程如下:在HPC集羣上從八度調用R腳本時出錯

  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,它的工作確定並打印所需的輸出就好了。我已經嘗試了許多解決方案,我可以在網上找到無效

任何人都知道哪裏出了問題?感謝您的任何建議!

+0

當你說你已經在命令行中運行$ MFILE,是在集羣上?你可以在交互式節點上測試它嗎?好像是有一個很難找到任何對RSCRIPT或您hellow_world.R文件,其中任何一個的都工作目錄問題的命令吧。 – darwin

+0

謝謝@darwin!是的,$ MFILE在集羣本身的命令行上運行正常,但在分配的計算節點的分離的CPU上運行時出現問題。說實話,在HPC /集羣方面,我是新手。你能告訴我如何在交互式節點上測試它嗎?我會再看看這個 – Tung

+0

我無法解決問題。我最終將我的R代碼轉換爲八度來運行程序。謝謝你。節日快樂! – Tung

回答

0

問題爲r加載登錄節點上,但沒有被加載在計算節點上。所以在作業提交腳本中,在進行任何計算之前,必須有一行加載R。例如:

module load r/3.4.3 

查看更多herehere