Я хочу отправить многопоточное задание MPI в SGE, а в кластере, в котором я запущен, есть разные узлы, каждый из которых имеет различное количество ядер. Скажем, количество потоков на процесс - это M (M == OMP_NUM_THREADS
для OpenMP). Как я могу запросить, чтобы задание, отправленное в очередь SGE, выполнялось таким образом, чтобы в каждом узле выделялось целое число, кратное M для моей работы?Запрос целочисленного кратного ядра «M» на узел в SGE
Предположим, что M = 8, а количество задач MPI равно 5 (поэтому запрошено 40 ядер). И в этом кластере есть узлы с 4, 8, 12 и 16 ядрами. Тогда эта комбинация OK:
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: nodes with different numbers of cores), но мой отличается, так как Я должен запускать ровно M потоков в процессе MPI (думаю, гибридный MPI + OpenMP).
Лучший сценарий - запустить это задание исключительно на одном и том же узле. Но чтобы ускорить время начала, я хочу, чтобы это задание выполнялось на разных типах узлов, при условии, что каждый узел имеет целые * M ядра, выделенные для задания.