5
他の質問やリンクによれば、この機能のシンボル名は使用できなくなりました。機能がなくなりましたので、これをいつでも使いたいと思ったら、cudaMemCpy
?いつあなたはいつでもそれを使いたいと思いますか?トレードオフやメリットは何ですか?要するにcudaMemcpyToSymbol対cudaMemcpyなぜそれはまだ周囲(cudaMemcpyToSymbol)
他の質問やリンクによれば、この機能のシンボル名は使用できなくなりました。機能がなくなりましたので、これをいつでも使いたいと思ったら、cudaMemCpy
?いつあなたはいつでもそれを使いたいと思いますか?トレードオフやメリットは何ですか?要するにcudaMemcpyToSymbol対cudaMemcpyなぜそれはまだ周囲(cudaMemcpyToSymbol)
、cudaMemcpy
は追加のAPI呼び出しなしcudaMemcpyToSymbol
と同じことを行うことができないため。一定のメモリアレイを考えてみましょう:
__constant__ float coeffs[8];
cudaMemcpyToSymbol
を使用して、この配列に値をコピーするには、ちょうどcudaMemcpy
と同じことを行うには
cudaMemcpyToSymbol(coeffs, hostData, 8*sizeof(float));
を行うことは、これを必要とします。
float *dcoeffs;
cudaGetSymbolAddress((void **)&dcoeffs, coeffs);
cudaMemcpy(dcoeffs, hostData, 8*sizeof(float), cudaMemcpyHostToDevice);
直接呼び出し前のシンボルルックアップなしではcudaMemcpy
には不正です。
[標準の免責事項:ドキュメントまたはコンパイラにアクセスせずにブラウザに書き込まれたすべてのコード、自身のリスクで使用]
TY、 '__constant__'メモリ及びパラメータ型ポインタとの間の関係は、メソッドシグネチャにCONSTするものです。 '__constant__'はconst型へのポインタを持っていますか?また、なぜアドレスを取得するために&coeffsを取ることができないのですか? – rubixibuc
'__constant__'はCUDAのストレージクラス指定子で、シンボルがGPU DRAMのキャッシュ専用の読み取り専用部分にあるとしています。 constから完全に独立しています。あなたは、API呼び出しが必要とするものではない、ホストメモリ*のシンボル*のアドレスを暗示するので、 '&coeffs'を使用することができます。 – talonmies
ポインタ変数coeffsのアドレスはどこにありますか?直接メモリにアドレスする?これは '__device__'で宣言された変数にも当てはまりますか? – rubixibuc