2011-02-09 12 views
2

大量の計算を伴う特定のDSPベースのアルゴリズムで作業しています。私はすべてのオプション(-O3、-ftreevectorize ...)でgccライブラリを使いました。コード全体の実行時間は43msです。私はICCコンパイラを使用して同じコードを実行しますが、コードの実行時間を大幅に短縮することはできません。既存のコードを変更せずにICCでコード実行時間を短縮するにはどうすればよいですか?浮動小数点演算のための要件が​​厳しくない場合ICCコンパイラを使用したコードの実行時間の短縮

+1

ICCに渡すフラグは?また、これを実行しているCPUは何ですか?コードをプロファイリングして、ホットスポットの位置を確認したり、計算上の境界かメモリ境界かを判断したりすることもできます。 –

+0

@Paul:そうです。 'exp'、' log'、 'pow'、' sqrt'の単純な呼び出しが支配的だったこのようなコードを見てきました。単にそれをメモするだけで大​​きな違いが生まれました。 –

+1

Im渡すicc -03 -axSSE4.1 file.c – ans

答えて

0

(SIMD/SとASMを使用せずに)、最も簡単な最適化がしかし、これはあなたがいない可能性があるだけでなく-no-prec-divをオンにしますicc -fast file.c

から来ます欲しいです。その場合、試してみてくださいicc -03 -axSSE4.1 -ipo file.c

コンパイルに少し時間をかけたい場合は、プロファイリングからかなりのスピードの利点を得ることができます。 icc -03 -axSSE4.1 -ipo -prof_gen file.cはプロファイルを生成するように設定します。その後、コードを数回実行して、最も一般的な使用例を実行し、再コンパイルを使用してicc -03 -axSSE4.1 -ipo -prof_use file.c

+0

あなたが言ったすべてのフラグを使用しましたが、変更はありません – ans

+0

残念ながら、書かれているように、コードは静的に最適化できません実行中のコンテキストなしでコードを調べる)。ただし、プロファイリング・オプションは、コンパイラーが最も可能性の高いコードパスを判別し、その出力を最適化するために再配列するのに役立ちます。 – Seth

+1

まあ...私は良いコンパイラを探していたとき、私はclangを見つけました。このコンパイラは、icc、pgiのような他のコンパイラと同じ結果を出します。しかし問題は、このコンパイラに関するチュートリアルがごくわずかであることです。同じ場所でチュートリアルを見つけることができる場所を教えてください。 – ans

関連する問題