世界を動かす技術を、日本語で。

HNに表示: GPUを構築するゲーム

概要

  • GPUアーキテクチャに関する情報不足を問題提起
  • 本記事で基本的な概念と主要リソースを整理
  • 学習やリサーチの出発点として有用
  • 初学者から中級者までを対象
  • 体系的な知識獲得のサポート

GPUアーキテクチャ入門

  • GPUアーキテクチャ は、グラフィックスや並列計算処理向けに設計されたプロセッサ構造
  • 多数の コア による同時並列処理能力が特徴
  • NVIDIAAMD などが主要なGPUベンダー
  • 主な用途: 3Dレンダリング機械学習科学技術計算
  • SIMD (Single Instruction Multiple Data)や SIMT (Single Instruction Multiple Threads)方式の採用

代表的なGPUアーキテクチャ例

  • NVIDIA: Turing、Ampere、Ada Lovelaceアーキテクチャ
  • AMD: RDNA、CDNAアーキテクチャ
  • 各アーキテクチャで メモリ階層キャッシュ構造演算ユニット の設計が異なる
  • TensorコアRay Tracingコア などの特殊ユニット搭載例

主要リソースと学習方法

  • 公式ドキュメント :NVIDIA Developer、AMD GPUOpen
  • 書籍 :「GPU Gems」シリーズ、「Programming Massively Parallel Processors」
  • オンライン講義 :CourseraやUdacityのGPUプログラミングコース
  • 論文/記事 :arXivやMediumでの最新技術動向
  • GitHub :オープンソースGPUプロジェクトのコードリーディング

学習のポイント

  • 基礎理論 (並列計算、メモリモデル)の理解
  • アーキテクチャごとの違い を意識した比較
  • 実際の プログラミング (CUDA、OpenCL)による体験
  • コミュニティ参加 による情報交換と最新動向の把握

まとめ

  • GPUアーキテクチャは幅広い分野で重要性が増加
  • 体系的なリソース活用と実践的学習が理解の近道
  • 継続的な情報収集と技術アップデートが鍵

Hackerたちの意見

これめっちゃクールだね!でも、個人的にはチュートリアルメッセージを理解するための基本的な知識が全然足りなくて、最初のレベルすらクリアできなかったよ。

教えてくれてありがとう!実は、PMOSとNMOSトランジスタの基本や物理についてのアクト0を作ったんだけど、思ったように見せられなくて削除しちゃったんだ。今度は戻す予定だよ。

自分だけじゃなくてよかった!こういうゲーム大好きなんだ。Turing CompleteやZachtronicsのEngineer of the Peopleをめっちゃ遊んだし…でも、3状態論理のことは今日まで知らなかったよ。ほんとにびっくりした!レベル3のNOTゲートを作るのにまだ頭を悩ませてる。これはすごく面白いアイデアだね。見た中で初めての3状態回路パズルだよ!可愛いストーリーを乗せたら、Steamで人気出そう。

学習リソースとして、略語は少なくとも一度は展開してほしいな。NMOS、PMOS、GND、VDDが最初の5秒くらいで出てきたけど、それが何の略か説明してるところが見当たらなかった。見た目は洗練されてて、いいニッチを埋めてるね!

もう少し深く掘り下げて説明したアーク0を作ってたんだけど、UIがうまくいかなくて削除しちゃった。今、修正用のバンドエイドを入れたところなんだけど、アーク0は(人気のリクエストみたいだから)磨いてから戻すつもりだよ(オプションにするつもり)。

情報ボックスに追加できるといいね。そうすれば、マウスクリックでいつでも見られるし。ただ、ほとんどの略語を展開することがどれだけ役立つかはわからないな。Negative/Positive Metal Oxide Semiconductorみたいな名前は自明じゃないし、Vddは本当に略語じゃないしね。

これ素晴らしい!いくつかコメントを: - 「真理値表」のやつは好きじゃなかった。重複した質問が多くて、なぜか最初の質問に1秒しかなかった。他の質問は正しく答えられたけど、結局3つ中1つの星しかもらえなかった。 - コンデンサにすごく混乱した。コンデンサには「イネーブル」ゲートなんてないよ!実際、2.7(1T1C)ではトランジスタを使ってイネーブルゲートを作ることになってる。だから、今はイネーブルゲートを作らずに、プリミティブにあるものを使えばいいってことだね。NMOSゲートは全然必要ない。これ、LLMの助けを借りて作ったの?(判断してるわけじゃないけど、興味がある!)あなたのワークフローや、どうやって良いUIを作ったのかもっと聞きたいな。私にはできないことだから、学びたいスキルなんだ。

あ、コンデンサのバグに気づかなかった。2.4用にイネーブルゲートを追加するように変更したよ(背景として、2.7がちょっと分かりにくいと思ったから2.4を作ったんだ)。2.4は、俺のシミュレーションシステムの仕組み的にイネーブルピンが必要なんだ。コンデンサを作るときに結構悩んだんだけど、後のレベルのコンデンサ情報ブロックにこのことについてのメモがあるんだ。でも、俺が作ったシミュレーションシステムに本当に合うコンデンサを作るのは難しかった(最初から考えておくべきだったな)。真理値表のバグは直すつもり(問題は分かってると思う)。星はエンドレスモードで遊んでたから出てきた。クラウドを結構使ったけど、特に配線やシミュレーションシステムで苦労したけど、なんとかこれを仕上げたよ。グラフィックに関しては、やりたいことをすごく詳細に指定したかな。

10年以上、ディープサブミクロンのフルカスタムミックスシグナル集積回路に取り組んできたけど、最初のレベルすらクリアできないよ。 > NMOSトランジスタを配線して、Inが1のとき出力がグラウンド(0)に引き下げられるようにする。Inが0のとき、出力は未接続(Z)であるべき。確かに:(a)nMOSには3つの接続があって、ドレインは出力にだけ接続されている(+Vdd供給なし)、ソースはグラウンドに接続されていて、ゲートは信号入力に接続されている。(b)ゲート(入力)が高くなると、nMOSトランジスタが「オン」になり、出力がソース(グラウンドに接続されている)に接続される。これが「プルダウンネットワーク」として機能する。(c)ゲートが低くなると、nMOSは「オフ」になり、出力への接続がなくなる。これは「高インピーダンス」/「未接続」/「Z」出力に相当する。1/2のテストに失敗した(編集) - 背景グリッドの薄い灰色の太い線が「入力」からトランジスタのゲートへのワイヤーだと思ってたけど、そうじゃなかった。ちゃんと「入力」からゲートへのワイヤーを追加する必要があるよ。

笑、すまん。俺の理解では、背景の色が配線に見えるだけで実際はそうじゃないってことだよね。色のテーマを少し変えて修正するよ(もし俺の理解が間違ってたら教えてね)。

俺は全然ダメで、関連する経験もないし、できなかったよ。

これが好きな人は、これもチェックしてみてね: https://store.steampowered.com/app/1444480/Turing_Complete/ 最終的には自分のCPUとアセンブリ言語が手に入るよ。でも、早期アクセスのままで、ちょっと荒削りなところが残ってるのが残念。

このゲーム大好き!開発者はまだ活動してるか知ってる人いる?

「ああ、10回試したけどうまくいかない、答えは何?」ってボタンが必要だね。それがあれば、理解できない俺たちだけじゃなくて、何か壊れてて「正しい」答えが拒否される場合にも役立つと思う。

理解できる、次のプッシュに追加するね(その間に、コピー回路ボタンを使ってGPTに自分が正しいかどうか聞いてみてね)。それと、これはどのレベルなの?(聞いてもいいかな)

面白いアイデアだね!これをHNアーケードに追加したよ! https://hnarcade.com/games/games/mvidia

ありがとう!

みんな、フィードバックに答えるためにコメントするよ:

  • タイム付きミニゲームをオプションにした(例えば、バイナリテーブル)
  • PMOSとNMOSトランジスタを使った導入レベルを7つ(オプション)追加した
  • コンデンサーレベルのバグを修正した
  • エディタの背景を線からドットに変更して、配線の混乱を解消した

レイアウトがFirefox Androidのスマホで使えないみたい(縦向きでも横向きでも)。 必要な要素が他のものの後ろに隠れちゃってる。 kB&mなしでプレイできるかもわからないけど、笑

NMOSとPMOSの違いについて混乱してる。 混乱してるシナリオは、ソースがVDDでドレインがGNDと出力に接続されているとき。 PMOSでは、出力が期待通りに1と0(ゲートとは逆)を切り替えるんだけど、NMOSでは出力が常に0なんだ。 なんでGNDがNMOSのVDDを0に引き下げるのか、PMOSではそうならないのか理解できない。

2.13レベル(「ヘックスレーサー」)がちょっと辛い。 どうやら16での割り算や掛け算が速くできないみたい…「0xB3を10進数に変換」みたいな問題が出ると。