1
我正在尝试编写一个rake文件,我首先要做的是创建单个文件的几个任务,然后我需要一个任务来并行创建outfiles ,在耙子继续阅读下一个任务之前,等待所有这些准备就绪。SLURM中的ruby rake:并行运行每个循环的元素
这将是这样的:
首先几个任务是这样的:
file "file.out" => [dependencies] do
sh "echo aaa"
end
desc "task description"
task :task_name => [dependencies] do
puts "bbb"
end
的并行任务是:
[X, Y, Z].transpose.each |x, y, z|
file x => [dependencies] do
sh "echo ccc"
end
end
desc "parallelized task description"
task :parallelized_task_name => [dependencies] do
puts "ddd"
end
,其中该x的每个实例,Y ,z循环并行运行。然后我需要确保所有的并行任务在我做其他事之前完成。
需要注意的重要一点是我通过SLURM运行这个rake文件。我的命令是这样的:
sbatch -p queue --mem 80000 --wrap "source ruby-2.3.1; rake -f rakefile --trace"
至于现在,我使用的桃红宝石宝石运行并行任务:
[X, Y, Z].transpose.peach |x, y, z|
file x => [dependencies] do
sh "echo ccc"
end
end
desc "parallelized task description"
task :parallelized_task_name => [dependencies] do
puts "ddd"
end
并提交到SLURM是这样的:
sbatch -p queue --ntasks=7 -c 1 --mem-per-cpu=80000 --wrap "source ruby-2.3.1; rake -f rakefile --trace"
不幸的是,我所谓的并行任务似乎不是,我的outfiles是一个接一个地产生的。我错过了什么?
我意识到我对核心,任务,节点,CPU的概念有点困惑......这就是为什么我有点难以找出我做错了什么。
任何帮助表示赞赏!
谢谢!