2012-01-29 101 views
0

考慮到openmp使用simd模型,即每條指令都由所有線程執行的事實,所以在編寫openmp並行應用程序時應該小心,爲什麼我們應該更喜歡openmp而不是多線程版本的相同算法?OpenMP SIMD vs多線程

+0

由於OpenMP遠遠更易於編寫。讓我問:編寫OpenMP並行應用程序時爲什麼要小心? – Nobody 2012-01-29 13:45:09

+0

由於虛假共享,避免條件語句(因爲SIMD) – peeyush 2012-01-29 13:49:15

+0

我不是openMP專家,但據我的理解,只需通過添加雜注並將其轉換爲單個核心應用程序,就可以輕鬆創建多線程應用程序,只需通過更改編譯標誌。 OpenMp根據cpus創建確切的線程數。 – sherif 2012-01-29 13:53:42

回答

2

從3.0開始,OpenMP不再是SiMD了。

而且常見的原因有:

  • 易於代碼使用量/。
  • 可以在沒有-fopenmp標誌的情況下編譯相同的代碼並獲得「遺留代碼追溯兼容性」。顯然這與使用#pragma語句有關。