Parallel processing 高度并行化问题的最佳线程数
我将模拟引擎并行化为12个线程,在12个节点(每个节点运行一个线程)的集群上运行它。由于12个系统的可用性通常较少,我还调整了6个线程(在6个节点上运行)、4个线程(在4个节点上运行)、3个线程(在3个节点上运行)和2个线程(在2个节点上运行)。我注意到,节点/线程的数量越多,速度就越快。但是很明显,我使用的节点越多,执行就越昂贵(在成本和功耗方面) 我想在杂志上发表这些结果,所以我想知道是否有任何定律/定理可以帮助我确定运行此程序的最佳节点数 谢谢,Parallel processing 高度并行化问题的最佳线程数,parallel-processing,cluster-computing,Parallel Processing,Cluster Computing,我将模拟引擎并行化为12个线程,在12个节点(每个节点运行一个线程)的集群上运行它。由于12个系统的可用性通常较少,我还调整了6个线程(在6个节点上运行)、4个线程(在4个节点上运行)、3个线程(在3个节点上运行)和2个线程(在2个节点上运行)。我注意到,节点/线程的数量越多,速度就越快。但是很明显,我使用的节点越多,执行就越昂贵(在成本和功耗方面) 我想在杂志上发表这些结果,所以我想知道是否有任何定律/定理可以帮助我确定运行此程序的最佳节点数 谢谢, Akshey增加节点数量会导致回报减少。两
Akshey增加节点数量会导致回报减少。两个节点的速度不是一个节点的两倍;四个节点甚至少于两个节点。因此,最佳节点数始终为1;只有一个节点才能完成每个节点的大部分工作。增加节点数量会导致回报减少。两个节点的速度不是一个节点的两倍;四个节点甚至少于两个节点。因此,最佳节点数始终为1;每个节点的大部分工作都是通过单个节点完成的。您是如何并行化您的程序的,以及每个节点中都有哪些内容 例如,在我的一个集群上,我有几百个节点,每个节点包含4个双核Xeon。如果我在这个集群上运行OpenMP程序,我会在一个节点上执行一次,启动不超过8个线程,每个处理器核心一个线程。我的集群由网格引擎管理,并用于批处理作业,因此在作业运行时没有争用。一般来说,没有必要要求多个节点在其上运行OpenMP作业,因为共享内存方法在分布式内存硬件上不起作用。在一个8核节点上要求少于8个线程并没有什么好处,我有足够的硬件不必共享它 如果您使用了分布式内存编程方法,例如MPI,那么您可能正在使用许多进程(而不是线程),并且可能正在不同节点上的内核上执行这些进程,并支付通信流量方面的成本 正如@Blank已经指出的那样,运行程序的最有效方法是在一个内核上运行程序,如果从效率的角度来看,其中一种方法是“最小化cpu总小时数”。只有然而,对于我的工作来说,比如说256个核需要一周的时间,等待128周一个核才能完成工作是没有吸引力的 如果您还不熟悉以下术语,请在谷歌上搜索或前往维基百科:
- 阿姆达尔定律
- 古斯塔夫森定律
- 弱标度
- 强标度
- 并行加速
- 并行效率
- 可伸缩性
- 阿姆达尔定律
- 古斯塔夫森定律
- 弱标度
- 强标度
- 并行加速
- 并行效率
- 可伸缩性
- 完成时间与处理器数量的函数关系:T(P)
- 作为处理器数量函数的加速比:S(P)=T(1)/T(P)
- 并联效率:E(P)=S(P)/P