CUDAのcudaMalloc()のパラメータを理解する方法
2022-02-12 10:44:57
ポインタやアドレスに慣れている子供たちは、この概念をより簡単に理解することができます。より多くの人にcudaMallocのパラメータを理解してもらうために、この記事は読者のために書かれたものです。
まずこのランタイム関数のプロトタイプを見ます。
cudaError_t cudaMalloc (void **devPtr, size_t size );
この関数の戻り値は、CUDA で定義されたエラーコードです。
メインの第1パラメータ。なぜ星が2つなのか?例題を使って説明しましょう。
float *device_data = NULL;
size_t size = 1024*sizeof(float);
cudaMalloc((void**)&device_data, size);
上記の例では、1024個の単精度浮動小数点数の1次元配列をビデオメモリに要求しています。そして、ポインタ device_data はメインメモリに格納されています。device_dataのアドレスを取る理由は、ビデオメモリ上のcudaMallocで得られた配列の先頭アドレスをdevice_dataに割り当てるためです。関数内で形式参照に値を代入しても実参照では変わりませんが、ポインタはアドレスを渡し、あるアドレスのデータを操作すると、実際には指定したアドレスのデータを変更することになります。今回のようにメモリを要求する関数では、第1引数にポインタdevice_dataのアドレスが渡され、そのアドレスの内容を変更することで実参照に変化がもたらされます。
分からない人はコメントOを残してください。
2015年3月13日 16:42追記
また、"pointer"は、その値がメモリアドレスであることのみを理由にポインタと呼ばれる変数である。
ポインターは変数なので、変数にも記憶領域が必要です。
cudaMallocの最初の引数には、CPUメモリに格納されているポインタ変数のアドレスが渡されます。cudaMallocは実行完了後にこのアドレスにアドレス値を書き込みます(このアドレス値はGPUメモリにあります)。
関連
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例