私は現在 OpenCL カーネルを作成しています (ただし、CUDA では同じになると思います)。現在、NVidia GPU の最適化を試みています。
現在、カーネルで 63 個のレジスタを使用しています。このカーネルは非常に大きいため、すべての GPU レジスタを使用しています。私はいくつかの方法を探しています:
1)どの変数がレジスタにあり、どの変数がグローバルメモリにあるかを確認します(十分なレジスタがない場合、コンパイラが変数をグローバルメモリに保存しているように見えるため)。
2)どの変数がより重要であるか(またはレジスタにある必要があるか)を指定する方法はありますか?存在するがあまり使用されていないいくつかの変数を使用しているためです。優先する方法は?
すでにすべてのレジスタを使用している場合、他の最適化戦略はありますか?
ところで: PTX コードを読み取ってすべての「.reg」キーワードを検索しようとしましたが、問題は PTX が読み取れないことです。コード内のどの変数にどのレジスタが使用されているかわかりません。連絡を取る方法が見つかりません!
ありがとう