Как отправить работу на несколько узлов? - PullRequest
1 голос
/ 11 апреля 2019

У меня есть код R, который я хотел бы выполнить на нескольких узлах (SLURM). Это код:

...
res<-foreach(i = seq_len(nrow(combs))) %dopar% {
 G1 <- split[[combs[i,1]]]
 G2 <- split[[combs[i,2]]]
 bind <- cbind(data[,G1], data[,G2])
 rho.i <- cor_rho(bind)     #the function cor_rho I created  
 }
...

На самом деле, это сравнение нескольких подматриц, где я вычисляю корреляцию между каждой из них с моей функцией cor_rho. Я хочу выполнить каждое сравнение на узле кластера.

Любая помощь?

Bests

1 Ответ

1 голос
/ 11 апреля 2019

Вам необходимо вызвать свой R-скрипт из bash-скрипта, который вы затем отправите в SLURM с запросом определенного количества ядер.

Если ваш R-код находится в файле r_analysis.R, вы можете создатьsubmit_job.sh файл, подобный этому:

#! /bin/bash

Rscript r_analysis.R

Наконец, вы отправляете свою работу (например, из командной строки), запрашивая определенное количество процессоров (8 в этом примере) и память / CPU (4G в этом примере):

sbatch --mem-per-cpu=4G --cpus-per-task=8 ./submit_job.sh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...