私は最初に1つのファイルを作成するいくつかのタスクを実行しているレイクファイルを作成しようとしていますが、次に並行してアウトファイルを作成するタスクが必要ですレーキが次のタスクを読み続ける前に、これらのすべてが準備されるのを待ちます。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で実行していることです。私のコマンドのようなものになるだろう。今のとおり
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"
残念なことに、私のいわゆる並列化されたタスクはそうではなく、私のアウトファイルは順番に生成されます。私が紛失しているものは何ですか?
私は、コア、タスク、ノード、CPUの概念についてちょっと混乱していることを理解しています...それが私が間違っていることを見つけるのは少し難しいです。
ありがとうございます!