パッケージ
Tegra
  • NVIDIA
  • 発表日:2008/06/02
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
NVIDIA,2014年を目処に「Tegra」で64bitアーキテクチャ採用。CUDAのオープン化でエコシステムの拡大を図る
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2011/12/21 18:29

イベント

NVIDIA,2014年を目処に「Tegra」で64bitアーキテクチャ採用。CUDAのオープン化でエコシステムの拡大を図る

GTC Asia 2011の会場は,北京市内に位置する「国家会議中心」(China National Convention Center:CNCC)だ
画像集#005のサムネイル/NVIDIA,2014年を目処に「Tegra」で64bitアーキテクチャ採用。CUDAのオープン化でエコシステムの拡大を図る
 中国・北京において2011年12月14〜15日の日程で開催されたNVIDIA主催のイベント「GPU Technology Conference Asia 2011」(以下,GTC Asia 2011)は,GPUコンピューティングをテーマとした開発者向けのイベントである。
  当然,話題としてゲームの話が直接聞けるというものではなかったが,GPUメーカーであるNVIDIAがいま何を推進しているのかを知ることは,今後のゲームを考えていくうえでいろいろと参考になるはずだ。
 というわけで,GTC Asia 2011で,筆者が見聞きしたことをまとめてお届けしてみたい。

関連記事:「GTC Asia 2011」基調講演レポート。2019年には100Wクラスのゲームコンソールが10TFLOPSを実現する!?



2014年を目処にTegraは64bitアーキテクチャを採用

GPUとCPUでメモリを共有する設計へ


「GPU Computing:Past Present and Future」を担当したIan Buck氏(General Manager, CUDA, NVIDIA)
画像集#002のサムネイル/NVIDIA,2014年を目処に「Tegra」で64bitアーキテクチャ採用。CUDAのオープン化でエコシステムの拡大を図る
 冒頭でお伝えしたとおり,GPUコンピューティングがテーマのGTC Asia 2011は,設けられていたセッションも学術的なものばかりである。
 そんななかで筆者は,「GPU Computing:Past Present and Future」と題された,NVIDIAのIan Buck(イアン・バック)氏がGPUコンピューティングの現状と将来をざっくりと紹介するセッションや,NVIDIAの各部門代表が質疑に応じるというセッションに参加することができた。これらのセッションを通して,NVIDIAが今後推進していくと思われる3つのソリューションが浮かび上がってくる。

  • CUDA for ARM開発キット
  • OpenACC
  • CUDAコンパイラのソースコード公開

 それぞれを順に説明していこう。まずは,12月15日の記事でもお伝えしている「CUDA for ARM」開発キットだ。実のところCUDA for ARMは,バルセロナ・スーパーコンピューティング・センターのHPCプロジェクト「EU Mont-Blanc」への採用がアナウンスされているので,新しいニュースというわけでもなかったりする。

Buck氏がセッションで披露したEU Mont-Blancのスライド。右のほうにあるのは,「LONGSON 3」というCPUで,中国が独自に開発したもの。セッションでBuck氏は,「ARMと同様に興味深い」と述べていた
画像集#006のサムネイル/NVIDIA,2014年を目処に「Tegra」で64bitアーキテクチャ採用。CUDAのオープン化でエコシステムの拡大を図る

 CUDA for ARM開発キットの狙いについてBuck氏は,「これまでのHPCではPCに使われているx86 CPUが利用されていたが,このHPC向けCPUに大きなマーケットとしてARMが登場している。NVIDIAは,ARM CPUとCUDA GPUを組み合わせたプラットフォームを大学の研究者や開発者に提供し,x86上で動作するアプリケーションをARMへと移植することを支援する」と述べている。つまり,CUDA for ARM開発キットの狙いは,x86からARMへとアプリケーションを移行させることであり,言うまでもなく将来のTegraシリーズを見据えたソリューションというわけである。

 とはいえ,現時点におけるCUDA for ARM開発キットは,既存の「Tegra 3」と「Quadro 1000M」を組み合わせたものであるため,ハードウェア的には将来のTegraシリーズがどうなるかのほうに注目が集まるのではないだろうか。

 そんなCUDA for ARM開発キットであるが,現状のARM CPUにはいくつかの問題があったりする。まず1つめは,32bitアーキテクチャを採用している点である。ただ,ARMは,「ARMv8」という64bitの命令セットを発表しているので,Tegraが64bitアーキテクチャを採用するのは間違いない。

Steave Scott氏(Chief Technology Officer, Tesla, NVIDIA)
画像集#003のサムネイル/NVIDIA,2014年を目処に「Tegra」で64bitアーキテクチャ採用。CUDAのオープン化でエコシステムの拡大を図る
 この点について,質疑応答セッションでSteave Scott(スティーブ・スコット)氏は,「Tegraが64bitアーキテクチャに移行する時期は2014年ごろ」と述べており,加えて,「数世代後のTegraでは,NVIDIA独自設計のCPUが使われることになる」と言明していた。

 NVIDIAは,ARM互換コアを独自に設計して使用できるアーキテクチャライセンスを所持しているので,いずれは独自設計となることは間違いなかったのだが,Scott氏の発言からそれが現実のものとして見え始めたというわけだ。

 続いて2つめの問題は,メモリ周りにある。現在の設計では,GPUメモリとCPUメモリとが完全に分離されているので,GPUとCPUとでデータのやり取りを行う場合にとても大きなオーバーヘッドが生じるというものである。ある程度の処理をGPUだけで行わないと効率が悪くなってしまうわけだ。

 そのため,ARMが手がけるGPU「Mali」では,コヒーレント(CPUとGPUとでメモリおよびキャッシュを共有できる)なメモリモデルを実現していたりする。
 CPUとGPUとを密に連携させるには,Maliのようなメモリモデルが望ましいのだが,このメモリ周りの問題に対してScott氏は,「将来,GPUはプロセッサに組み込まれる」と述べる。つまり,Mali同様にGPUとCPUで同じメモリを共有する形になるというわけだ。自然な方向性への進化ではあるが,HPC界の大御所とも言えるScott氏の口からはっきりと語られたことには,意味があると思う。

Sumit Gupta氏(Director, Tesla GPU, NVIDIA)
画像集#004のサムネイル/NVIDIA,2014年を目処に「Tegra」で64bitアーキテクチャ採用。CUDAのオープン化でエコシステムの拡大を図る
 ここで気になるのは,NVIDIAのGPUがCPUとメモリを共有する設計になった場合,Maliと競合しないのかという点である。これついてSumit Gupta(スミット・グプタ)氏は,「ARMは,モバイルグラフィックスや,ボリュームの大きいサーバーに対する興味が強いだろう」と語る。
 Gupta氏は,「NVIDIAは,CUDAによってすでにソフトウェアのエコシステムを築きあげており,ARMがハイエンドのGPUコンピューティング市場に参入するのは難しい」と述べ,GPUコンピューティングにおけるソフトウェアの重要性を強調していた。
 加えてGupta氏は,「ARMとNVIDIAは,良好な関係を保っており,将来も両社が競合するようなことにはならない」とも語っている。


OpenACCによって

アプリケーションのGPU対応が容易になる


 冒頭で挙げたNVIDIAが推進するソリューションの2つめが「OpenACC」だ。
 OpenACCとは,GPU非対応のアプリケーションをGPU対応させることができるというプログラミング規格である。

 CUDAを例に説明すると,CUDA対応アプリケーションでは,CPUで実行させるコードとGPUで実行させるコードを別々に記述しなければならないうえ,GPU向けのコードを「CUDA C」(Cg)言語で記述しなければならなかったりする。そのため,既存のアプリケーションをCUDA(GPU)に対応させるには,結構な作業が必要となっていた。
 この既存アプリケーションのGPU対応を容易に実現するのがOpenACCというわけだ。

OpenACCは,ソースコードにディレクティブで囲んだGPU向けのコードを混ぜることができるプログラミング規格だ。C言語およびFortranがサポートされている
画像集#007のサムネイル/NVIDIA,2014年を目処に「Tegra」で64bitアーキテクチャ採用。CUDAのオープン化でエコシステムの拡大を図る

 OpenACCでは,ソースコードにディレクティブ――コンパイラなどに指示するための命令のようなもの――を置いてGPU向けのコードを混ぜることができるようになっている。C言語とFortranをサポートしており,既存のアプリケーションの多くをGPU対応にすることができるのがウリだという。

 もっとも,既存のソースコードにディレクティブを置くだけで,コンパイラが自動的にGPU向けのバイナリを出力してくれるというほど簡単なものでは(残念ながら)ない。現時点では,とくにメモリモデルを意識する必要があるようで,GPU向けの最適化が必須にはなる。そのため,既存のソースコードをGPU向けに手直しする作業が必要とのことだ。
 ただ,先に触れたように将来のTegraでメモリモデルの問題がクリアになれば,より小さなコードブロックをGPUへと対応させることが可能になるため,OpenACCのようなプログラミング規格をより効果的に使えるようになるのではないだろうか。

 セッションのなかでBuck氏は,「OpenACCよりもCUDAのほうが高い性能を発揮する」と前置きしたうえで,「HPCのユーザーは,コンピュータ研究者ばかりではない。OpenAACなら,科学者や経済学者がGPUを簡単に扱えるようになる」と説明していた。

OpenACCのすごさを示したスライド。テキサス大学の生体分子プロジェクトでは,OpenACCを用いてわずか1日の作業でGPUコンピューティングへ対応させ,性能を5倍にまで引き上げることができたという。ちなみにこのスライドは,GTC Asia 2011の多くのセッションで使われていた
画像集#008のサムネイル/NVIDIA,2014年を目処に「Tegra」で64bitアーキテクチャ採用。CUDAのオープン化でエコシステムの拡大を図る

 そんなOpenACCは,オープンな仕様と銘打たれているものの,推進しているのがNVIDIA単独に近いという現状がある。しかし,Gupta氏は,「AppleがOpenAACに参加した」とOpenACCの広がりを強調し,「OpenACCは,Intelが注力しているMIC(Many Integrated Core)アーキテクチャを始め,さまざまなアクセラレータで利用できる」と語っていた。

 なお,OpenACCと似たプログラミング規格としてMicrosoftの「C++ AMP」が挙げられるが,「HPCの90%はOSにLinuxを採用しており,OSに依存するC++ AMPよりも,OSに依存しないOpenACCのほうが優位だ」とGupta氏は言う。


CUDAコンパイラのオープン化で

GPUコンピューティングのエコシステム拡大を図る


 NVIDIAが推進しているソリューションの最後は,「CUDAコンパイラのソースコード公開」である。GTC Asia 2011の開催に合わせる格好で,CUDAがLLVM(Low Level Virtual Machine)ベースのコンパイラを搭載し,そのソースコードが公開されたというニュースは4Gamerでも取り上げているので,覚えているという人も多いだろう。

GTC Asia 2011では,CUDAコンパイラのオープン化が至るところで語られていた
画像集#009のサムネイル/NVIDIA,2014年を目処に「Tegra」で64bitアーキテクチャ採用。CUDAのオープン化でエコシステムの拡大を図る

 CUDAコンパイラのオープン化については,「何が起こるか我々にも分からない。もっといいコンパイラが開発されるかもしれないし,Javaフロントエンドが作られるかもしれない。AMD製GPUや他社製プロセッサ向けのバックエンドが作られるかもしれない。いずれにしてもGPUをめぐるエコシステムの拡大に繋がるだろう」とGupta氏が語っていたのが印象的だった。

 つまり,NVIDIAは,他社製品でCUDAが使えるようになる可能性よりも,エコシステムの拡大を重要視したというわけだ。
 OpenACCのスタンスにもいえることだが,従来NVIDIAがとっていた囲い込みに近い戦略から,オープンな方向へと大きく舵を切ったような印象である。GPUコンピューティングに対するNVIDIAの自信の表れと言ってもいいのかもしれない。

 さまざまなプラットフォームでCUDAが使えるようになれば,ゲームに採用される可能性も出てくるわけで,ゲーマーにもあながち無関係な話ではないのかもしれない。CUDAの今後の展開は注目しておきたい。

NVIDIA公式Webサイト

  • 関連タイトル:

    Tegra

  • 関連タイトル:

    CUDA

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月01日〜11月02日