Nvidiaのイアン・バック氏に会う
本日はお時間を割いていただき、ありがとうございます。まずは基本的なことから始めましょう。読者の皆様に、ご自身のことと、現在Nvidiaでどのような仕事をされているのか、少しお話しいただけますか?
最初から始めましょうか?GPGPUへの興味は5歳の頃から始まったわけではないと思いますが、プリンストン大学やスタンフォード大学でどのような出来事があって、それがきっかけでGPGPUに興味を持つようになったのですか?
プリンストン大学時代、GPUコンピューティングに少し手を出し、当時はSGI O2というグラフィックスハードウェアを使って熱対流と流体シミュレーションの実験をしていました。当時は非常に制約が厳しかったので、GPUコンピューティングのメリットを主張するのは困難でした。
スタンフォード大学での博士研究中に、私はGPUコンピューティングを真剣に研究し始めました。スタンフォード大学では、研究コミュニティの他のメンバーと共に、プログラマブルグラフィックスの自然な進化は、GPUがより汎用的なプロセッサへと進化することにあると認識しました。この点を証明するため、DX9クラスのGPUハードウェアを用いたレイトレーシングに関する最初のSIGGRAPH論文の一つを執筆しました。この研究の大きな動機となったのは、誰もがPCに搭載しているこの汎用プロセッサが、CPUよりもはるかに速いムーアの法則の3乗の性能成長率で成長していたことです。そこで、次のような疑問が湧きました。もしPCの計算能力が現在の何桁も高かったら、何ができるだろうか?これは、計算科学だけでなく、コンピュータービジョン、AI、データマイニング、グラフィックスの分野にとって、まさに革命的な出来事でした。
ブルックにおけるあなたの役割は何でしたか?
GPU 上でレイトレーシングを行う機能の開発に取り組んだ後、スタンフォード大学での私の研究の焦点は、GPU コンピューティングに適したプログラミングモデルの理解に移りました。当時、GPU が様々なアプリケーションに適していることは多くの研究者によって示されていましたが、コンピューティングデバイスとしての GPU をどのように捉えるべきかを示す優れたフレームワークやプログラミングモデルは存在しませんでした。当時、アプリケーションを GPU に移植するには、コンピュータグラフィックスの博士号が必要でした。そこで私は、GPU コンピューティング用のプログラミング言語を定義することを目標に、Brook プロジェクトを開始しました。この言語は、GPU のグラフィックス特性をより一般的なプログラミング概念に抽象化します。Brook の基本的なプログラミング概念は「ストリーム」であり、これは類似した処理を必要とするデータ要素の集合でした。Brook は最終的に、スタンフォード大学での私の博士論文となりました。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
あなたの研究は、スタンフォード大学ストリーミング・スーパーコンピュータ「メリマック」から始まりましたね。これはテスラのようなものとどう違うのでしょうか?
Brookのプログラミングモデルの概念は、GPU以外にも応用可能でした。スタンフォード大学では、Brookプログラミングモデルの2つの異なる実装に取り組みました。1つはGPU用、もう1つはスタンフォード大学で開発された研究アーキテクチャであるMerrimac用です。Merrimacで開拓された多くのアイデアは、汎用コンピューティングにおけるGPUの改良方法に影響を与えました。また、スタンフォード大学でMerrimacの主任研究者であったBill Dally氏が、現在Nvidiaの主任科学者を務めていることも特筆に値します。
CUDAはGelatoにルーツがあるのでしょうか?GPGPUの最初の学術的研究は何でしたか?最初の商用利用は何でしたか?
スタンフォード大学で研究をしながらCUDAの開発を始めました。NVIDIAはすでに私の研究を強く支持してくれており、ハードウェア面でGPUコンピューティングをより良く実現できる可能性を明確に認識していました。2005年にNVIDIAに入社し、CUDAプロジェクトを立ち上げました。当時は私ともう1人のエンジニアだけでした。今ではプロジェクトは今のような組織に成長し、NVIDIAのGPUの中核コンポーネントとなっています。
www.gpgpu.org には、2002 年まで遡る GPU コンピューティングの優れた歴史が掲載されています。
現在、AMDはGPGPU向けのプログラミング言語としてBrookを推奨していますが、NvidiaはCUDA拡張を備えたC言語を採用しています。両者の長所と短所を比較すると、どのような点が挙げられますか?
Nvidia社との提携をきっかけに、Brookの基本的な設計上の決定事項の一部を見直す機会を得ました。これらの決定事項は主にDX9クラスのハードウェアの性能に基づいていました。大きな制約の一つはメモリモデルの制約で、プログラマーはかなり限定されたメモリアクセスパターンに基づいてアルゴリズムをマッピングする必要がありました。CUDA拡張機能を備えたC言語によって、これらの制約を緩和しました。基本的に、プログラマーは膨大なスレッドプールを与えられ、そこから好きな方法でメモリにアクセスできるようになりました。この改良とその他のいくつかの改良により、GPU上で完全なC言語セマンティクスを実装できるようになりました。