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

时间:2012-10-12 05:43:13

标签: c windows multithreading winapi memory

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

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

1 个答案:

答案 0 :(得分:2)

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

  1. 启动新线程的开销(或从某些缓存中选择它们);
  2. 关于内存总线的争论。
  3. 上述各方面因不同平台的成本不同而有所不同。
  4. 较大的PC有几个内存总线。较小的只有一个。在一个内存总线系统上,这没有任何意义。如果您的系统有多个内存总线(通道),则您的数据阵列可能会在内存条之间进行任意分割。如果整个阵列都位于同一个存储库中,那么parralelisation将毫无用处。弄清楚你的阵列的布局是一个开销。换句话说,在分割核心之间的操作之前,有必要弄清楚这是否值得做。

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

    同时,对于某些架构上真正庞大的内存区域而言,这是有意义的。