.hと.cuで書かれたクラスがたくさんあるので、再配置可能なデバイスコード(-rdc = true)を試しました。それは約12秒かかる。次に、コードを結合しようとしましたが、ヘッダのみのクラスを使用して-rdc = trueを削除すると、わずか2秒しかかかりませんでした。-rdc = trueが指定されていると、cudaコードが非常に遅くなる理由
コードでは、sha1(ある文字列)0x40000回がwinrar暗号化で使用されます。
なぜですか?今は大丈夫ですが、プロジェクトが大きくなり、別々のコンパイルが便利になります。 -rdc = trueはパフォーマンスを低下させる可能性がありますか?
コード自体に関する情報がないと仮定するのは難しいです。 CUDAコンパイラは、「プログラム全体」モードでコンパイルすると機能を積極的にインライン化します。これにより、多くの場合、追加の最適化(一般的な部分式削除、定数伝播、ロードスケジューリングの改善)が可能になります。 '-rdc = true 'を使用すると、CUDAツールチェーンに最適化リンカーがないため、コンパイル単位の境界を越えて関数をインライン化することはできません。別々にコンパイルされた関数への呼び出しは、ABI呼び出し規約のオーバーヘッドを引き起こし、インライン展開によって可能になる他の最適化は行われません。 – njuffa