.net - 多个 .NET 进程的严格负载平衡

标签 .net windows f# hpc

我有一个在 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/

相关文章:

.net - 找不到Microsoft.VisualStudio.TextTemplating程序集

windows - 当在经典模式下配置的应用程序池中调用 Response.Flush 时,IIS 10 从 HTTP/2 切换到 HTTP/1.1

f# - Trial.lift 和 Trial.bind 在 chessie 错误处理中的区别是什么?

f# - 支持成员约束的静态扩展方法

c# - c# 控制台应用程序也可以充当类库吗?

c# - C# 中的原子读-修改-写

c# - 在对子类使用 'dynamic' (C#) 时,.NET 4 如何决定调用哪个方法?

java - L 形 java 应用程序窗口

windows - Visual Studio 正在窃取焦点

f# - 生命游戏的递归函数不会在异步中运行