[解決済み] Cudamemcpy関数の使用法
2022-01-29 14:31:26
質問
この場合、cudaMemcpy関数はどのように動作するのでしょうか?
私はこのような行列を宣言しました。
float imagen[par->N][par->M];
で、それをcudaデバイスにコピーしたいので、次のようにしました。
float *imagen_cuda;
int tam_cuda=par->M*par->N*sizeof(float);
cudaMalloc((void**) &imagen_cuda,tam_cuda);
cudaMemcpy(imagen_cuda,imagen,tam_cuda,cudaMemcpyHostToDevice);
これで2次元配列を1次元配列にコピーしても問題ないでしょうか?
また、別の2次元配列にコピーするにはどうすればよいのでしょうか? これを変更すればうまくいくのでしょうか?
float **imagen_cuda;
解決方法は?
ホストとデバイス間でデータをコピーする際に、2重の下付きC配列を扱うのは些細なことではありません。 大体の場合
cudaMemcpy
(を含む)。
cudaMemcpy2D
) は,ポインタ・ツー・ポインタではなく,ソースとデスティネーションに対する通常のポインタを期待します.
最もシンプルな方法は、ホストとデバイスの両方で2D配列をフラット化し、インデックス演算を使用して2D座標をシミュレートすることです(私が思うに)。
float imagen[par->N][par->M];
float *myimagen = &(imagen[0][0]);
float myval = myimagen[(rowsize*row) + col];
その後、通常のcudaMemcpyオペレーションを使用して、転送を処理することができます(
myimagen
ポインタ)。
float *d_myimagen;
cudaMalloc((void **)&d_myimagen, (par->N * par->M)*sizeof(float));
cudaMemcpy(d_myimagen, myimagen, (par->N * par->M)*sizeof(float), cudaMemcpyHostToDevice);
もし、動的な大きさの(つまりコンパイル時にはわからない)二重添字配列を本当に扱いたいのであれば、次のように見直すことができます。 質問/回答 .
関連
-
[解決済み】コマンドプロンプトからCUDAをコンパイルするとエラーになる。
-
[解決済み] ジョブを実行するGPUはどのように選択するのですか?
-
[解決済み] このCUDAカーネルの起動パラメータを理解する
-
[解決済み] CUDAドライバのバージョンがCUDAランタイムのバージョンに対して不足しています。
-
[解決済み] cudaMemcpyToSymbolとcudaMemcpyの比較 なぜまだ残っているのか (cudaMemcpyToSymbol)
-
[解決済み] nvcc fatal : Visual Studio 12.0 が PATH に追加されているが、コンパイラ 'cl.exe' が PATH に見つからない。
-
[解決済み] バンクコンフリクトとは何ですか?(Cuda/OpenCLのプログラミングをする)
-
[解決済み] AMD GPU上でCUDAを動作させることは可能ですか?
-
[解決済み】CUDAランタイムAPIを使用してエラーをチェックする標準的な方法は何ですか?
-
[解決済み】CuDNNのインストールを確認する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コマンドプロンプトからCUDAをコンパイルするとエラーになる。
-
[解決済み] ジョブを実行するGPUはどのように選択するのですか?
-
[解決済み] ファンネルシフトとは?
-
[解決済み] cudaMemcpyToSymbolとcudaMemcpyの比較 なぜまだ残っているのか (cudaMemcpyToSymbol)
-
[解決済み] nvcc fatal : Visual Studio 12.0 が PATH に追加されているが、コンパイラ 'cl.exe' が PATH に見つからない。
-
[解決済み] ハードウェアなしでCUDAプログラミングができるGPUエミュレータ【終了しました
-
[解決済み] バンクコンフリクトとは何ですか?(Cuda/OpenCLのプログラミングをする)
-
[解決済み] X サーバーを特定の GPU で実行するように xorg.conf ファイルを変更するにはどうすればよいですか?(複数のGPUを使用しています) [クローズド].
-
[解決済み】CUDAランタイムAPIを使用してエラーをチェックする標準的な方法は何ですか?
-
[解決済み】CuDNNのインストールを確認する方法は?