memset可以在4个内核上并行化吗?

gru*_*htr 6 c memory windows winapi multithreading

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

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

Kir*_*lev 2

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

  1. 启动新线程(或从某些缓存中选取它们)的开销;
  2. 内存总线上的争用。
  3. 上述方面有所不同,并且对于不同平台来说成本也有很大差异。

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

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

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