【发布时间】:2012-02-05 00:05:29
【问题描述】:
我正在 C/C++ 上实现 am 算法来处理一些向量,我认为让它并行可能是一个好主意,因为我正在使用多核 CPU。我有一些使用 GPGPU 的经验,糟糕的内存访问会破坏整个性能,我是否还需要考虑 CPU 上的内核之间的任何特殊访问布局?
谢谢
【问题讨论】:
-
如果您没有将 GPGPU 用于算术密集型计算(这是它们的设计目的),那么您可能遇到了内存访问限制的问题。但是,就多线程而言,与内存访问延迟相比,您对上下文切换和同步(这通常是并发编程的最大问题)的关注要多得多。
-
@Lirik:这完全取决于所涉及工作的规模。如果向量很短并且工作量很小,则上下文切换和同步可能是一个问题。如果向量很长并且工作大量的内存组织,缓存操作和代码调整就是一切。
标签: c++ multithreading performance memory cpu