我不知道是否有人不再使用 SGE(现在 HPC 的世界是什么?),但我相信,从 11 年的某个时候开始,我需要在版本 6.2u3 上工作。我在一个有 64 个节点的集群上使用它,每个节点有 12 个核心。
问题是,我不确定请求 X 内核的真正含义。是纯粹的咨询吗?我尝试过同时使用 SMP 和 OpenMPI 环境,我得到的印象是在应用程序中产生更多线程总是可以提高性能,而不管您请求多少内核。即使您使用-pe smp 1or请求单核-pe openmpi 1,从 1 到 2 到 4 个线程,您的性能几乎翻倍。
那么,调度核心的目的是什么?
另一个问题是相关的:从 1 到 2 到 4 个线程,我的性能翻了一番。然而,在大约 8 或 10 个线程(即,假设为 8 或 10 个内核)时,线性关系就失效了,事实上,在 12 个线程时,计算所需的时间比在 8 个线程时要长。即使使用-pe smp 12. 我已经用一个简单的、令人尴尬的并行问题(生成一个数字数组)尝试了这个,所以应该没有争用。而且我认为不是线程开销,因为工作量很大,需要几秒钟。
查看计划的节点/核心,系统告诉我在同一个节点上有 12 个核心(通常,但并非总是如此),但在 12 个线程时性能仍然下降。我怀疑 SGE 不会阻止第三方工作在该节点上运行,即使我已请求足够的内核以使每个线程有 1 个内核,这会导致线程干扰。
我是在正确的轨道上还是我完全错过了这一点?
谢谢。