を「無効な引数」エラーがスローされます私は、デバイスの定数メモリにint
配列をコピーしようとしているが、私は次のエラーを取得しておいてください。
[ERROR] 'invalid argument' (11) in 'main.cu' at line '386'
コード
多くのコードが開発されているので、私は自分のものを単純化するつもりです。
私のmain.cuファイルの最上部に、関数の外で変数__constant__
が宣言されました。
__device__ __constant__ int* dic;
私はまたmain()
の内側に、それは次のようにmallocを'S、ホスト変数、flatDic
を持っている:
int* flatDic = (int *)malloc(num_codewords*(bSizeY*bSizeX)*sizeof(int));
をそれから私はまた、そうすることによってdic
へflatDic
の内容をコピーしようmain()
に:
cudaMemcpyToSymbol(dic, flatDic, num_codewords*(bSizeY*bSizeX)*sizeof(int));
このcudaMemcpyToSymbol()
呼び出し、それはラインmain.cuの386だし、それはどこです前述のエラーがスローされます。
私はいつも同じエラーを返す、以下の全てを試してみた:
私はを試してみたことはここで私が問題を解決するために、これまで試したものだ
cudaMemcpyToSymbol(dic, &flatDic, num_codewords*(bSizeY*bSizeX)*sizeof(int)); cudaMemcpyToSymbol(dic, flatDic, num_codewords*(bSizeY*bSizeX)*sizeof(int)); cudaMemcpyToSymbol(dic, &flatDic, num_codewords*(bSizeY*bSizeX)*sizeof(int), 0, cudaMemcpyHostToDevice); cudaMemcpyToSymbol(dic, flatDic, num_codewords*(bSizeY*bSizeX)*sizeof(int), 0, cudaMemcpyHostToDevice);
は、私はまた、cudaMemcpyToSymbol()
を呼び出す前に、cudaMalloc()
dic
変数にしようとしました。 cudaMalloc()
にエラーはスローされませんが、cudaMemcpyToSymbol()
エラーが引き続き発生します。
cudaMalloc((void **) &dic, num_codewords*(bSizeY*bSizeX)*sizeof(int));
私はまた、ウェブ、ドキュメント、フォーラム、例など、すべて無駄に広く徹底を検索しました。
私のコードに間違っている人はいますか?前もって感謝します。
"私は、ウェブ、ドキュメント、フォーラム、事例などを広範に徹底的に検索してきました。 ... CUDA Cプログラミングガイド - 1.「Ctrl + S」を押して、ブラウザ/ PDFリーダーを探している通話を入力します。 2.該当するものを読み、ガイドのコードサンプルを見てください。 3.#2が失敗した場合は、フォーラムダイビングに進みます。この場合の情報は、直接形式のNVIDIAのガイドにありました。CUDA APIコールの問題へのアプローチ方法についての今後のアドバイスです。 –
私は通常、HTML形式で入手可能なリファレンスガイドから始めます。 [ここにはCUDA 4.1のリファレンスがあります](http://developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/online/modules.html)コール名のGoogleは通常このようになります。参照を確認したら、プログラミングガイドを確認してください。 – harrism