时间:2010-07-25 17:08:22

标签: pthreads openmp benchmarking

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

答案 2 :(得分:0)

您的系统管理员可能正在控制您可以同时执行的线程数或运行的核心数。我不知道是否有可能在系统管理员级别,但它确实可以告诉进程。

或者,您的算法可能使用L2缓存。当一个线程正在执行需要很长时间但另一个线程没有执行的操作时,超线程或其他任何调用它的方法效果最佳。访问不在L2缓存中的内存是SLOW,这样做的线程在等待时会停止。这只是在单个核心上运行多个线程的时间来自的一个示例。四核内存总线可能允许每个内核同时访问某些内存,但不是每个内核中的每个线程。如果两个线程都用于RAM,那么它们基本上是按顺序运行的。这可能就是你的4来自哪里。

您可能会查看是否可以更改循环,以便它们在连续的RAM上运行。如果将问题分解为适合L2缓存并迭代这些块的小块数据,则可能会获得8倍。如果你搜索他们最新处理器的英特尔机器语言程序员指南......他们会谈论这些问题。