Я хочу отправить многопоточное задание MPI в SGE, а кластер, в котором я работаю, имеет разные узлы, каждый из которых имеет разное количество ядер. Допустим, количество потоков на процесс равно M (M == OMP_NUM_THREADS
для OpenMP). Как я могу запросить, чтобы задание, отправленное в очередь SGE, выполнялось таким образом, чтобы в каждом узле было выделено целое число, кратное M для моей работы?
Допустим, M=8, а количество задач MPI равно 5 (всего требуется 40 ядер). И в этом кластере есть узлы с 4, 8, 12 и 16 ядрами. Тогда эта комбинация в порядке:
2*(8-core nodes) + 1*(16-core nodes) + 0.5*(16-core nodes)
но, конечно, не любой из этих:
2*(4-core nodes) + 2*(8-core nodes) + 1*(16-core node)
2*(12-core nodes) + 1*(16-core node)
(3/8)*(8-core nodes) + (5/8)*(8-core nodes) + 2*(16-core node)
PS: был еще один похожий вопрос, например этот: ( MPI & pthreads : узлы с разным количеством ядер ), но мой отличается, так как мне нужно запускать ровно M потоков на процесс MPI (подумайте о гибридном MPI + OpenMP).
Лучший сценарий — запускать это задание исключительно на узлах одного типа. Но чтобы ускорить время запуска, я хочу, чтобы это задание выполнялось на разных типах узлов, при условии, что каждый узел имеет целое число * M ядер, выделенных для задания.