CUDAとGPUコンピューティングの広がり

2010年7月30日(金)
平野 幸彦

CUDA SDKとスケーラブルなCUDAプログラミング

ここに1枚のブート可能なライブDVDがあります。内容はLinuxのUbuntu10.04をベースに、CUDAドライバ、CUDAツール・キット、CUDA SDKをインストールしたもので、詳細は以下のとおりです。

  • OS : Ubuntu
    • リリース 10.04
    • カーネル Linux 2.6.32-22-generic
    • GNOME 2.30.0
  • NVIDIA Driver and CUDA
    • CUDA Driver : 195.36.24
    • CUDA Toolkit 3.0 for Linux64
    • CUDA SDK 3.0 for Linux

このライブDVDを使用して、いくつかの典型的なプラットフォームの上で、OSのブートやCUDA SDKに含まれるCUDAサンプル・プログラムを使った動作確認を行い、CUDAプログラミングのスケーラビリティと互換性を検証したいと思います。

図8: LinuxのライブDVDを使ってCUDAのプラットフォーム互換性を検証(クリックで拡大)

使用したシステムは、以下の3種類です。

  • ラップトップPC : Dell Latitude D830
    • GPU :G80世代のQuadro NVS 140M(16コア)
  • モバイル・ワークステーション:Lenovo ThinkPad W700ds
    • GPU :G90世代のQuadro FX3700M(128コア)
  • フロア・スタンドのノーブランド自作マシン
    • GPU :Fermi 世代Tesla C2050(448コア)

図9: CUDAの動作検証に用いた3種類のプラットフォーム(クリックで拡大)

結果は、同じライブDVDがすべてのプラットフォームでブートし、N体粒子の重力相互作用をシミュレーションするN-Bodyや海面の波の動きを高速フーリエ変換を使用して表現するOceanFFT、フラクタルのMandelbrotなどのサンプル・プログラムが正常に動作することが確認できました。

つまり、G80世代のラップトップ用ローエンドGPUから、Top500第2位のスーパー・コンピュータで使用されている最新Fermi世代のGPUまで、全く同じOS環境とグラフィックス・ドライバ、CUDAツール・キットのライブラリを使い、同じCUDA SDKのサンプル・プログラムが、パフォーマンスや倍精度浮動小数点演算など一部の機能の違いこそあれ、GPUコンピューティングを使って同じように動作することが確認できたということです。

図10: CUDA SDKで開発したサンプル・アプリケーション(クリックで拡大)

"Compute Capability"とCUDAプログラミングの互換性

GPUの機能は、世代を経るにつれ、そのパフォーマンスとともに進化し続けていますが、それぞれのGPUがサポートする機能を表す指標として、"Compute Capability"というリビジョン番号が定義されています。具体的な対応表は、最新のCUDAプログラミング・ガイドなどに掲載されていて、CUDAのバージョンアップに合わせてアップデートされています。

例えば、倍精度浮動小数点演算機能のサポートは、Compute Capability 1.3以降になりますので、1.2以前のGPUではその機能は使用できません。

バイナリ・コードのレベルの互換性は、同一メジャー・リビジョン番号内(Compute Capabilityの整数部分。例えば1.0から1.x)でのみ保たれているのに対し、中間生成言語であるPTXのレベルでは、1.0から2.xまですべてのリビジョンで上位互換性が保たれています。

図11: CUDAは上位互換性を保ちながらバージョン・アップしている(クリックで拡大)

さらなる発展と広がり

このように、CUDAとGPUコンピューティングは、2006年の発表からほぼ4年の歳月を経て、スーパー・コンピュータの主要構成要素としてのHPC分野での利用から、各種デザイン・ツールや新商品開発のためのシミュレーション・ツールといったプロフェッショナル用途での利用、そして一般消費者の娯楽目的の利用にいたるまで、幅広い利用分野と利用形態が整いつつあります。

ただ、現状はまだまだ発展途上の段階であり、今後さらに新規分野でのGPUコンピューティングの利用や、既存のアプリケーションの新たなCUDA対応といったニュースが今後ますます増えてくると思われます。

大学や研究機関の研究者や技術者をはじめ、アプリケーションやライブラリを開発するソフトウエア・ベンダー、サーバーやワークステーションを提供するOEMシステム・ベンダー、システム・インテグレータ、コンサルティング・ファームなどとの協力や協業によって支えられてきたCUDAとGPUコンピューティングは、今後もオープンソース・コミュニティも含めたIT業界全体とともに発展し続けます。

NVIDIA Tesla Quadro事業部 GPUコンピューティング担当 シニア・エンジニア

外資系コンピュータ・メーカーにてPCグラフィックス・サブシステムやASICの設計開発、経営企画部門、製品開発プロジェクト・マネージャなどを経験し、2007年NVIDIA入社。現在、GPUコンピューティングの技術的なサポートを担当。
 

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています