Ошибка при вызове сценария R из октавы в кластере HPC

У меня есть один сценарий octave, который вызывает сценарий R для выполнения некоторых расчетов в кластере HPC. Процедура расчета следующая:

  1. Отправьте задание в кластере, чтобы получить назначенный вычислительный узел, а затем распределите вычисления на каждый ЦП в этом узле. Часть сценария оболочки выглядит так

    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 из командной строки, он работает нормально и отлично печатает желаемый вывод. Я пробовал много решений, которые мог найти в сети, но безрезультатно.

Кто-нибудь знает, что пошло не так? Спасибо за любое предложение!


person Tung    schedule 19.12.2014    source источник
comment
Когда вы говорите, что запустили $MFILE из командной строки, это в кластере? Можете ли вы протестировать его на интерактивном узле? Похоже, ему трудно найти команду для Rscript или ваш файл hellow_world.R, любой из которых является проблемой рабочего каталога.   -  person darwin    schedule 19.12.2014
comment
Спасибо @darwin! Да, $MFILE работает нормально из командной строки в самом кластере, но возникают проблемы с запуском на отдельных процессорах назначенного вычислительного узла. Честно говоря, я довольно новичок, когда дело доходит до высокопроизводительных вычислений/кластеров. Не могли бы вы рассказать мне, как я могу протестировать его на интерактивных узлах? Я посмотрю дальше на это   -  person Tung    schedule 19.12.2014
comment
Я не мог решить проблему. В итоге я преобразовал свой код R в октаву, чтобы запустить программу. Однако, спасибо. Счастливых праздников!   -  person Tung    schedule 26.12.2014


Ответы (1)


Проблема заключалась в том, что R был загружен на узле входа в систему, но не был загружен на вычислительном узле. Таким образом, в сценарии отправки задания должна быть строка для загрузки R перед выполнением каких-либо вычислений. Например:

    module load r/3.4.3

Подробнее см. здесь и здесь

person Tung    schedule 05.03.2018