运行 同一节点上的两个脚本
Run two scripts on the same node
我有一个有 20 个内核的节点,我想知道如何让两个作业占用该节点的每 10 个内核。 (两个jobs.sh是一样的,在启动job.sh后我修改了main.R的参数然后我运行再次job.sh。)
#!/bin/bash
#SBATCH --job-name=main
#SBATCH --mail-use=abc@gmail.com
#SBATCH --mail-type=ALL
#SBATCH --nodes=1 # number of nodes
#SBATCH --ntasks-per-node=10 # number of cores
#SBATCH --time=24:00:00 # walltime
#SBATCH --output=sortie/job.out
#SBATCH --error=sortie/error.err
module load python
module load R
# module load openmpi
R CMD BATCH '--args ../../' main.R sortie/main.Rout
一种方法是请求全部 20 个核心:
#SBATCH --ntasks-per-node=20
然后在后台调用 R 脚本和 运行 它们。他们每个人都不应使用超过 10 个核心。所以不要使用 detectCores() 或类似的函数来设置 R 中的核心数,而是将核心数设置为 10:
R CMD BATCH '--args ../../' main1.R sortie/main1.Rout &
R CMD BATCH '--args ../../' main2.R sortie/main2.Rout &
wait
同时不清楚为什么需要 运行 一个批处理脚本中的 2 个脚本。一种更理想的方法是提交 2 个具有 10 个内核的作业 运行,每个作业使用一个 R 脚本。您可以将参数传递给您提交的 shell 脚本,然后使用它们传递给您的 R 脚本。例如,
如果您是 运行ning R 脚本 main.R 并且想要传递 2 个值,您可以在提交脚本中执行以下操作:
module load R
Rscript main.R
然后调用这个脚本两次:
sbatch myscript.sh 3.14 outfile1.csv
sbatch myscript.sh 1.57 outfile2.csv
那么第一份工作将 运行 为:
Rscript main.R 3.14 outfile1.csv
第二个:
Rscript main.R 1.57 outfile1.csv
如果你比 Rscript 更喜欢 R CMD BATCH 格式,你也可以使用它。只需使用 $1、$2 等作为 R 脚本的参数。
我有一个有 20 个内核的节点,我想知道如何让两个作业占用该节点的每 10 个内核。 (两个jobs.sh是一样的,在启动job.sh后我修改了main.R的参数然后我运行再次job.sh。)
#!/bin/bash
#SBATCH --job-name=main
#SBATCH --mail-use=abc@gmail.com
#SBATCH --mail-type=ALL
#SBATCH --nodes=1 # number of nodes
#SBATCH --ntasks-per-node=10 # number of cores
#SBATCH --time=24:00:00 # walltime
#SBATCH --output=sortie/job.out
#SBATCH --error=sortie/error.err
module load python
module load R
# module load openmpi
R CMD BATCH '--args ../../' main.R sortie/main.Rout
一种方法是请求全部 20 个核心:
#SBATCH --ntasks-per-node=20
然后在后台调用 R 脚本和 运行 它们。他们每个人都不应使用超过 10 个核心。所以不要使用 detectCores() 或类似的函数来设置 R 中的核心数,而是将核心数设置为 10:
R CMD BATCH '--args ../../' main1.R sortie/main1.Rout &
R CMD BATCH '--args ../../' main2.R sortie/main2.Rout &
wait
同时不清楚为什么需要 运行 一个批处理脚本中的 2 个脚本。一种更理想的方法是提交 2 个具有 10 个内核的作业 运行,每个作业使用一个 R 脚本。您可以将参数传递给您提交的 shell 脚本,然后使用它们传递给您的 R 脚本。例如,
如果您是 运行ning R 脚本 main.R 并且想要传递 2 个值,您可以在提交脚本中执行以下操作:
module load R
Rscript main.R
然后调用这个脚本两次:
sbatch myscript.sh 3.14 outfile1.csv
sbatch myscript.sh 1.57 outfile2.csv
那么第一份工作将 运行 为:
Rscript main.R 3.14 outfile1.csv
第二个: Rscript main.R 1.57 outfile1.csv
如果你比 Rscript 更喜欢 R CMD BATCH 格式,你也可以使用它。只需使用 $1、$2 等作为 R 脚本的参数。