【发布时间】:2016-01-27 02:50:51
【问题描述】:
我想向 SGE 提交一个多线程 MPI 作业,而我正在运行的集群有不同的节点,每个节点都有不同的内核数。假设每个进程的线程数是 M(对于 OpenMP,M == OMP_NUM_THREADS)我如何请求提交到 SGE 队列的作业以这样一种方式运行,即在每个节点中,M 的整数倍分配给我的工作?
假设 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),但我的问题不同,因为我必须为每个 MPI 进程运行恰好 M 个线程(想想混合 MPI+OpenMP)。
最好的方案是在同一种节点上专门运行这个作业。但是为了加快启动时间,我想让这个作业在不同类型的节点上运行,前提是每个节点都有整数*M 个内核分配给作业。
【问题讨论】:
标签: multithreading mpi openmp hpc sungridengine