たとえば、CUBLAS には、引数としてデバイスまたはホスト ポインターを受け入れる関数が含まれています (たとえば、cublas<t>gemm() のアルファ引数とベータ引数、[1] を参照)。この種の機能を備えた関数を作成するにはどうすればよいですか? 制限は何ですか?ユニファイド アドレス空間を備えたデバイスなどのコーナー ケースはどうですか?
これを正しい方法で実行するサンプル ソース コードはすばらしいものです。
たとえば、CUBLAS には、引数としてデバイスまたはホスト ポインターを受け入れる関数が含まれています (たとえば、cublas<t>gemm() のアルファ引数とベータ引数、[1] を参照)。この種の機能を備えた関数を作成するにはどうすればよいですか? 制限は何ですか?ユニファイド アドレス空間を備えたデバイスなどのコーナー ケースはどうですか?
これを正しい方法で実行するサンプル ソース コードはすばらしいものです。
CUBLAS にはマジック ポインター イントロスペクションはありません。ライブラリは、ポインタの解釈方法を制御するコンテキストごとの明示的なスイッチを使用します (「参考文献」を参照cudaSetPointerMode
)。