米NVIDIAでGPUコンピューティングのソフトウエア部隊を率いるIan Buck氏が、2013年7月30日に東京で開催される「GTC(GPU Technology Conference Japan 2013」に合わせて来日し、日経ソフトウエアの取材に応じた。今回が初来日とのこと。「CUDAを作った男」の話は力あふれるものだった。

(聞き手は原田 英生=日経ソフトウエア


写真●米NVIDIAのIan Buck GPUコンピューティング・ソフトウエア・ゼネラル・マネージャー

明日のGTC Japanの基調講演では何を話すのか。

 明日話すことは三つある。NVIDIAのGPU(Graphical Processing Unit)を使ったコンピューティングのプラットフォームとプログラミングモデルである「CUDA(クーダ)」を我々が作ってから7年になる。なぜCUDAを作ったか、これまでの7年間に何をしてどのように成功したか、そこから話そう。次は今何ができるかだ。C/C++、Fortran、Pythonなどの多くのプログラミング言語でCUDAを使える。多くのアプリケーションがCUDAを活用している。CUDAは科学に大きなインパクトを与えている。3番目に話すのは未来だ。今後コンピューティングがどこへ向かうのか、10年くらいのスパンで語るつもりだ。

確認しておきたいのだが、CUDAのターゲティングはどこか。「TOP500」に象徴されるハイエンドスーパーコンピューティングなのか、ビジネスで使われるサーバーを含むミドルレンジか、それともパーソナルコンピュータを含むローエンドなのか。

 CUDAはそのどこでも利用できる。ただ、最もビジネス上のインパクトが大きいのはハイエンド分野だろう。これまでできなかった演算処理をして、科学に大きなインパクトを与えている。次はビジネス/エンタープライズだ。ソーシャルメディアの支援、画像処理、Webサービス、大規模なサーチなどの分野でGPUコンピューティングが有益だ。ローエンドももちろんやっている。2006年以降のNVIDIAのGPUのほとんどはCUDA対応だ。NVIDIAのGPUを積んだコンピュータがあれば、CUDAのソフトウエアをダウンロードするだけでGPUプログラミングを始められる。モバイルCPUでGPUコンピューティングを可能にするLoganプロジェクトも進んでいる。

あなたはGPUでプログラミングを可能にする「Brook」の作者でもあるそうだが。

 米スタンフォード大学にいた時の、博士論文がBrookだった。並列プログラミングのモデルとなるものだ。当時、GPUはプログラマブルになってきてはいたけれども、ピクセルシェーダは基本的な機能しかなく、DirectXやOpenGLといった画像処理用のAPI(Application Programming Interface)を介して機能を呼び出さなければならなかった。でも、64個同時に使えるんだからすごい。スタンフォードからNVIDIAに移ってCUDAを作ったわけだけれど、スタンフォードとNVIDIAは車なら30分くらいの距離で、いい関係を持っているんだ。

NVIDIAに入ってよかった?

 NVIDIAで成し遂げたことを、すごく誇りに思っている。世界中の偉大な教授たちと仕事ができて、シミュレーションは10倍速くなった。それが科学に大きなインパクトを与えている。GPUコンピューティングをより簡単に、よりパワフルにする仕事をしてこれた。

TOP500の最新結果を見ると、米IntelのXeon Phiが競合相手として浮上してきたようだけれど、どう思う?

 素敵なバリデーションをもらったと思うね。Intelが参入してきたことで、アクセラレータなしでスーパーコンピュータを作れないことが証明された。

Xeon PhiよりNVIDIAの製品が優れている点は?

 Xeon Phiは60個程度のプロセサが入っているだけだ。TESLAのK20には2496個のCUDAコアが入っていて、一つのコアで複数のスレッドを走らせることも可能だ。電力当たりの性能が優れているのも強みだ。7ビリオン(70億)個のトランジスタを搭載したプロセサを作るってのは並大抵のことじゃないんだけど、そのコストを負担でき、それを継続できるのも我々の強みだ。

ゲーマーがハイエンドコンピューティングを支えてくれているわけだね。

 ゲーミングや一般のパソコンユーザー向けのビジネスが研究開発費を生んでくれているというのは言えるね。

「Kepler」と呼ばれるGPUを生かすのがCUDA 5と思うが、その特徴は?

 一つは「ダイナミックパラレリズム」だ。例えばメッシュを切ってシミュレーションをする場合、何も起きず、計算する必要のないメッシュを省略すれば、処理時間を短縮できる。GPUの側へ多くのコードを渡し、そこで処理できるようにしている。こうすることでデータ転送の帯域消費も抑えられる。もう一つは「Hyper-Q」だ。Keplerの前のFermiでは、CPU(Central Processing Unit)側の1個のプロセスがGPUを使う形式だった。Keplerでは32個のプロセスがGPUにアクセスできる。MPI(Message Passing Interface)プログラムを効率よく動かせる。

その次であるCUDA 5.5の特徴は? リリース時期は?

 5.5の正式リリースは7月31日(太平洋時刻)だ。5.5では英ARMアーキテクチャのCPUをサポートする。ARMのLinuxとかでGPUを使えるようになる。ストリームに優先順位を付けられること、インストール時のエクスペリエンス(ユーザー体験)を改善したのもポイントだ。

Visual Studioの無償版「Express」でプログラミングができるのもCUDA 5.5の特徴だよね?

 Visual Studioは、今回は2012をサポートする。Expressでも使えるようになる。アカデミックな領域でExpressを使いたいという要望があったからだ。無料だからね。

GPUコンピューティングの未来はどうなる。

 輝かしい未来が待っているよ。OpenACCを使うことでGPUの利用はぐんと簡単になる。GPUDirectによってパフォーマンスはさらに上がる。PythonでのGPUコンピューティングも一般化する。若い人はPythonが好きみたいで、C/C++の次に人気があると言っていいんじゃないだろうか。OpenMPによる標準化も進む。2015年くらいからは、WindowsやLinuxがGPUを使うようになるだろう。ヘテロジニアスな(異種混合型の)コンピューティングが一般的なものになる。C/C++やHTML(HyperText Markup Language)の新規格にもGPUコンピューティングが入っていくだろう。

 もはやプロセサ単体の性能は飛躍的には伸びない。これからはパラレリズム(並列処理)に道を求めることになる。プログラミングのコミュニティはそれに気付いている。GPUコンピューティングを見ることは、未来を見ることなんだ。ハイエンドの世界ではエクサフロップスの世界が見えてきた。多くのチャレンジが未来に待っているだろう。

CUDAを作り始めた時はメンバーは3人だったというけれど、今は何人くらいなのか。

 その質問に答えるのは難しい。NVIDIA全体が一つのチームだからだ。ゲーム、プロフェッショナル、モバイル、すべてが一つのチームなんだ。具体的な数字をいうとすれば、約2400人のソフトウエアエンジニアがCUDAとGPUコンピューティングのために働いていると言っていいと思う。

パラレルなコンピューティングは難しい。特に、速くしようとチューニングすると結果が正しく得られなかったりするのがきつい。

 多くのプログラマは、問題を直線的に、シーケンシャルに考える習慣を持っている。パラレルに考えて、問題を構築し直すのは簡単なことではない。まずは、なるべく高いレベルでGPUコンピューティングを使ってみるのはどうだろうか。MATLABのようなツールを使ってもいいし、OpenACCなどのライブラリを使うのもいい。

 ツールを使うのも重要だ。我々はCUDAを作る時、コンパイラ、言語、ライブラリ、そして4番目にツールのチームを組織した。デバッガ、プロファイラ、メモリーチェックツールなどを使って、ミスを防ごう。ベストプラクティスなどの文書を読むのもいい。

日本の開発者に言いたいことがあれば。

 東京工業大学のTSUBAMEなど、日本の大学の力はすごいもので、ワールドクラスだと言える。その経験をみんなに広めれば、これからの10年は明るいものになるだろう。まずはGTC Japanに来てほしい。今回の出席者は、3割はアカデミックな人たちで、4割はインダストリな人たちだという。あらゆるところにCUDAのデマンドはある。カンファレンスで有益な情報を手に入れてほしい。