使用.NET任务并行库在同一台机器内的分布式内存?

时间:2013-12-10 14:36:13

标签: .net parallel-processing task-parallel-library

我有一个令人尴尬的并行算法,它将在大约5分钟内在我的4核机器上的Parallel.ForEach块中运行。当我在8核机器上运行它时,运行时间更长(我在10分钟后放弃了,所以我不确切知道多长时间)。由于.NET使用共享内存架构来做这种事情,我猜测访问主内存会造成瓶颈。

所以我的问题是,有没有办法制作我的数据的n份(其中n是可用核心数)并为每个核心分配一份副本,从而消除瓶颈?

我基本上想要做的事情就像分布式内存,但在同一台机器中。

更新

我在8核机器上重新运行代码,而在我的4核上,CPU使用率(通过任务管理器)将在运行期间最大化,在8核机器上运行CPU使用率持续时间约为50-60%。我想知道这是否表明了什么?

更新2 在我的程序中实现了MPI.NET,现在我在所有内核上都获得了100%的CPU使用率,而且我可以访问其他机器上的内核。

0 个答案:

没有答案