2015-07-11 54 views
2

我正在使用Linux &英特爾編譯器(C/C++)。使用-parallel或(和)-vec會使我們的程序運行得更快嗎?

我的代碼不使用CilkPlus或OpenMp。 我閱讀下面的文章: Auto-Parallelization Overview

而且我很困惑:

  1. 如果我沒有使用OpenMP(或CilkPlus),並與 「-parallel」(自動並行化編譯我的程序)和「-vec」(自動矢量化),程序運行速度會更快(因爲編譯器將串行代碼分解爲並行代碼?)
  2. 如果是這樣(它會運行得更快),爲什麼它不是默認選項? (爲什麼不使用這些標誌)?

感謝

+0

最好的方法是試試 – OMGtechy

回答

1

Intel採用這樣的技術,如循環平倉,任務分解&等並行代碼。這些技術可能會讓你的程序運行得更快,但是當程序面臨race conditiondeadlock,按優先級完成的任務和......時,可能會出現一些問題。所以它不能用作默認值。

+0

1.如果我自己編寫並行代碼,可能會出現競爭條件和死鎖。所以有什麼不同? (或者是相同的,只是要注意) – user3668129

+0

2.如果我的應用程序是安全的(沒有競爭條件,我可以使這些標誌而不用擔心嗎? – user3668129

+1

1.您無法預測競爭狀態和死鎖串行代碼並行,你必須檢查你的代碼和算法,用於並行處理它 – aLoneStrider

相關問題