1
當我們在Cuda上討論CPU上並行程序的速度超過CPU上類似的順序程序時,如果編譯器優化程序(gcc -O2)編譯順序程序, ?在計算加速時使用編譯器優化
我已經在GPU上並行了一個程序。與沒有編譯器優化器的CPU實現相比,它的速度提高了18倍。但是,當我將-O2選項添加到nvcc編譯器時,加速率降低到8.
當我們在Cuda上討論CPU上並行程序的速度超過CPU上類似的順序程序時,如果編譯器優化程序(gcc -O2)編譯順序程序, ?在計算加速時使用編譯器優化
我已經在GPU上並行了一個程序。與沒有編譯器優化器的CPU實現相比,它的速度提高了18倍。但是,當我將-O2選項添加到nvcc編譯器時,加速率降低到8.
當比較性能時,當然優化器應該用於GPU和CPU程序。
如果您專注於GPU v.s. CPU,比較不應該受到軟件代碼質量的影響。我們經常假設代碼在硬件上應該具有最佳性能。
默認情況下,CUDA編譯器使用完全編譯器優化。您可能會通過選擇'O2'來降低編譯優化的程度。 – talonmies
@talonmies您應該將此評論轉換爲答案。也許這會給有類似問題的其他用戶提供更直接的幫助。從這個評論中,我會說順序代碼應該被編譯爲全面的優化選項以進行公平的比較,對吧?因此,如果用戶當前沒有對順序代碼應用任何編譯器優化,則加速可能低於「18」。 – JackOLantern
除編譯器選項外,使用OpenMP的CPU中的並行版本將是一個更有價值的比較。大多數新計算機都有多線程,並且大部分適用於CUDA的代碼都可以通過一些OpenMP指令輕鬆並行化。因此,您將比較您的CUDA程序和CPU中的最佳版本。 – pQB