我有一个在 Windows Server 2008 SE 和 64 个处理器上运行的多进程 .NET (F#) 科学模拟。模拟的每个时间步长在 1.5 秒到 2 秒之间振荡。由于每个进程都必须等待其他进程,因此整体速度是最慢进程的速度(2 秒 * 迭代次数)。因此,我需要尽可能地减少进程的振荡。
有什么方法可以强制一组进程具有完全相同的“计算时间”用于它们的计算吗?
最佳答案
您是否可以将 2 秒的系列并行化,以便并行发生模拟的多个“分支”?
例子: 假设这是具有 4 个进程的 1 个模拟。进程 1 需要 2 秒,因此在进程 1 完成之前您无法完成。
process1---------------------------------------------- (2 sec)
process2-------- (0.5 sec)
process3---- (0.25 sec)
process4---------------------------- (1 sec)
你在那里有很多空闲时间,你的大部分进程都在等待进程 1。
对于您正在尝试做的工作,同时运行超过 1 个这样的集合是否可行?如果是这样,那么您可以通过处理其他模拟来利用您的空闲核心,而这些模拟正在等待您的较长运行过程完成。
关于.net - 多个 .NET 进程的严格负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967396/