我在带有Xeon处理器的Mac Pro上运行完全并行的矩阵乘法程序。我创建了8个线程(与内核一样多的线程),并且没有共享写入问题(不写入相同的位置)。出于某种原因,我使用pthread_create
和pthread_join
大约是使用#pragma openmp
的两倍。为什么POSIX线程比OpenMP慢
有什么都没有其他的区别...相同的编译选项,在这两种情况下相同数目的线程,相同的代码(除了编译/ pthread
部分明显)等
而且环路非常大 - 我不是并行化小循环。
(我真的不能张贴代码,因为它是学校工作。)
为什么会这样发生?不OpenMP使用POSIX线程本身?它怎么会更快?
它们是否都使用相同数量的累积CPU时间? – Gabe 2011-04-13 03:45:28
您是否验证过OpenMP与您的手动版本使用相同数量的线程? – Gabe 2011-04-13 03:49:15
如果每个只使用7个线程会发生什么? – Jess 2011-04-13 03:51:08