我在帶有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