6

我不确定。我可以在四个核心上编写一个大的 memset(例如 10 MB)来获得加速吗?

这种 ram-chip 并行化是否可能,以及触发其他线程的时间成本有多大——是超过一毫秒还是更少?

4

1 答案 1

2

你指出了一个正确的问题,同时很难给出一个简单的答案。涉及到几个方面。

  1. 启动新线程(或从某个缓存中挑选它们)的开销;
  2. 内存总线上的冲突。
  3. 上述方面有所不同,并且对于不同的平台具有非常不同的成本。

更大的 PC 有多个内存总线。较小的只有一个。在单内存总线系统上,这没有任何意义。如果您的系统有多个内存总线(通道),那么您的数据数组可能会在内存库之间任意拆分。如果整个数组都位于同一个内存库中,则并行化将毫无用处。弄清楚阵列的布局又是一项开销。换句话说,在内核之间拆分操作之前,有必要弄清楚这是否值得做。

简单的答案是,这些难以预测的开销很可能会消耗收益并使整体结果变得更糟。

同时对于某些架构上的一个非常大的内存区域来说,这是有道理的。

于 2012-10-12T05:55:28.257 回答