2011年12月度GPUコンピューティング勉強会
- yukio_saitoh
- 3279
- 0
- 0
- 0
近頃よくやる "Hello World" 循環転送。 ホストにメモリがあって、GPU にメモリがある。メモリを転送して戻すだけの例題。 ビルドの例でソースの説明はしません。 #gpgpu
2011-12-15 13:34:58CUDA 使うヒトの多くは今あるものを流用するのが多いと思います(講師談)、もとからあるソースに手を加えてカンタンなデモをすると。 (VSいらんやん、エディタで書いてコンソールでやったらええやん、と思う。) #gpgpu
2011-12-15 13:37:07// Nsight リリースノーツに出てることを注意事項で話されるのもどうかと。もしや VSそのものを扱うのが初めての方向けの説明ということ? #gpgpu
2011-12-15 13:39:08// Nsight 使うまでもない実演や。 んー、コマンドプロんプロでじゅうぶん問題ないレベル。 nvcc 叩けば良かろうかと。 #gpgpu
2011-12-15 13:40:37Compute Capability の指定、対象となるデバイスにあわせて指定。 わからんかったら全部打っとけばいい。 // ん? nvcc でコンパイルオプション書くのをそのままやろ? 開発経験豊富な方ではなさそうに聞こえる。 大丈夫か? #gpgpu
2011-12-15 13:43:15ホスト側オプション (VSコンパイラ)、ライブラリの指定、 cudart.lib を追加(大体普通の人が使ってるのはランタイム)、VS使うだけでカンタンに環境出来ると。 // 質問あれば?と聞かれても質問する要素がない。 #gpgpu
2011-12-15 13:45:14// 初心者向けに、もう少し丁寧に解説したほうがいいと思うな。 体系的に NVIDIA スキルをキャッチアップするなら、この説明は微妙やと思う。 #gpgpu
2011-12-15 13:46:08GPU は CPU につながった外部演算装置。 M/B と GPU 間は PCI Express 2.0 で接続されてる。最近は CPU の中のDRAM/GPU機能を包含してて OpenCL で開発できるようになっている。 #gpgpu
2011-12-15 13:48:18典型的な実行例。CPUでプログラム開始し、GPUへデータ転送、GPUプログラム実行依頼・・・。GPU上のプログラムはカーネル、数万スレッドで並列動作 MAssively parallel という、並列度の階層構造 GPUアーキテクチャに依存している。 #gpgpu
2011-12-15 13:50:04カーネル実行の階層。GPU -> Grid -> Block -> Thread 、次は Warp (重要度が低い、設計度が低い, 32 GPU thread) の集合 Block , SM 。 // 入門書読んだほうが確実に分かり易い、説明少し微妙。 #gpgpu
2011-12-15 13:52:47高速なプログラムを書くときに重要な粒度は Warp である。Block はダイナミックに変更可能。 GPU内部の並列プロセッサ(SM) 、コアが並列で動くように設計されてるからユニファイドで構成されている? // んん? 少しツッコミどころあるがスルーしよう。 #gpgpu
2011-12-15 13:55:35SM 内部のSFU は昔の FPU みたいな演算器と思ってくださいと。最近面白いのは L1 Cache。CPU みたいに使えるようになっている、今日は説明しませんけど。 // えらい大雑把。まぁ1時間やし、いいか。 #gpgpu
2011-12-15 13:57:26プログラミングの基礎。ホストプログラミング、カーネルプログラミング、コンパイル+実行。 // 説明が全部「こんな感じ」 で話されてる。これは新手の IT 漫才をやろうとしているのだろうか。 #gpgpu
2011-12-15 13:59:14// 説明がエレガントではないんだけど、完全に正しくもない。昔の Remote Procedure Call みたいなのがあったという説明が明確に間違っている。 なんだろ、、そろそろツライ、が最後まで聞いてみたい。 #gpgpu
2011-12-15 14:00:14cudaMemcpy() でよく間違うのは、ホスト側のポインタを書いてしまうだと? // それは間違わないだろう、100歩譲っても。設計せずにソースを書くと言うことならわかるけど。変数定義を設計していれば陥らない。 #gpgpu
2011-12-15 14:01:53メモリはホストとデバイスの2種類。 HostToDevice, DevicetoDevice, DevicetoHost ・・・この説明が出来るなら、先ほどの陥り易いバグはバグではない。 // もう少し自身を持って話されたほうがいい。 #gpgpu
2011-12-15 14:03:10カーネル呼び出しと、デバイス同期。 // プログラムの構造が変わったから名前が変わる? SDK 触ったことあっても、DDK 経験ないんかな? #gpgpu
2011-12-15 14:04:55CUDA カーネルの書き方、CUDAデバイスコードについて // 説明の前後で矛盾がある、なんだろな、ここでは設計をしっかりしろと仰るのに、先ほどの説明はないな。 #gpgpu
2011-12-15 14:07:11// CUDAソースファイルの説明は、スライドの文言を説明を読み上げるだけ。 「こそあど」や抽象的な説明は弱そうだ。 #gpgpu
2011-12-15 14:08:21プログラム例。 配列の和。 c[i] = a[i] + b[i] // 説明を端折ってることについて説明があった。イチから教えると 5h 要するんだそうだ。 最初に用語定義をしてから講習すればいいのに。本当に開発経験者ならね。 #gpgpu
2011-12-15 14:10:42// 来場者数 30名くらい、スーツ3割、カジュアル7割。 ぱっと見、退屈そうな受講雄者は半分以上。たぶん、皆さん気持ちは同じはず。 #gpgpu
2011-12-15 14:12:36配列の和、ホストコードの説明のあとのカーネル設計について // 説明がシリアル過ぎる。 なぜコードにスレッド指定しているのかの説明が正しくない。 もう少し並列度がある説明にすればいいのに。ソースの説明しないなら。 #gpgpu
2011-12-15 14:14:47VS でソース見せて説明中。 // VS が良い働きをしている、上に グローバルスコープと出ているのに、そこからヒントを得られずに理論が弱い持論展開なのか、、、もったいない。 #gpgpu
2011-12-15 14:17:48ブロック辺りの最大スレッド数の制限があるので、複数のブロックを並べることでスケール。 // なぜ、並列にすると性能が出るという説明がなく、OpenCL から概念を拝借というが、説明が2次元的というか。 #gpgpu
2011-12-15 14:21:37