もしデスクトップPCの中に高機能なビデオカードが入っているなら、それはおそらくGPU(Graphics Processing Unit)とよばれる特殊なプロセッサを含んでいるでしょう。GPUの命令セットとメモリ構造は、複雑なグラフィックスを高速に表示するのに必要な数々の関数を処理するように設計されています。それらの命令セットは、2次元や3次元の座標を操作する命令や、より複雑な計算を実施するための命令を含んでいます。また、GPUのアーキテクチャは座標点の長いストリーム(一般的にベクターと呼ばれる)を効率的に処理できるように設計されています。これは深いパイプライン構造をとり、メモリの幅広い領域に高速にアクセスする必要があります。
数年ほど前から、数量計算や化学計算を行う先進的な開発者が、GPGPU(General-Purpose computing on Graphics Processing Unites)と呼ばれる汎用的な計算処理を行うためにGPUを使うようになってきました。
多種のアプリケーションへの要望が高まるにつれて、アプリケーション開発における高速な倍精度浮動小数点処理やECC(Error Checking and Correcting)メモリなどへのニーズは、進化したGPUテクノロジとマッチしはじめたのです。しかし、HPCクラスターのようなハイエンドなテクノロジは、多くの開発者にとってはこれまで高根の花であり、垂涎の的でした。
今回の発表では、新しいEC2のインスタンスタイプとして、クラスターGPUインスタンスを導入いたしました(これで合計11のインスタンスタイプとなります)。いまや、全てのAWSユーザが、経済的コストかつ従量課金モデルで、GPGPUを用いた開発・運用が可能となります。
先日発表いたしましたクラスターコンピュートインスタンス(APIで呼び出す際にはcc1.4xlarge)に比較的近いものになりますが、クラスターGPUインスタンス(APIで呼び出す際にはcg1.4xlarge)は次のスペックとなります:
- 2つのNVIDIA Tesla M2050 "Fermi" GPU
- 2つのquad-core Intel "Nehalem" X5570プロセッサ、合計33.5 ECUs (EC2 Compute Units).
- 22 GBのRAM.
- 1690 GBのローカルインスタンスストレージ
- 10 Gbpsのイーサネット、低遅延でFull-bisectionバンド幅
個々のTesla M2050は448コア、3GBのECC RAMを含み、倍精度浮動小数点演算で515gigaflopsまで可能です。1つのインスタンスが2つのプロセッサを含むので、クラスターGPUインスタンスあたり1兆FLOPSを上回るパフォーマンスを発揮します。 10Gbpsのイーサネットでこれらのインスタンスをクラスタリングできるので、並列計算、レンダリング、メディア処理に最適です。まらに、クラスターGPUインスタンスは、「数百メーターに渡って一気に地面をならすことのできる核エンジンを持ったブルドーザー」のイメージです。しかも、それが時間あたり約172円(1$82円換算)で使えるのです!
AWSアカウント一つにつき、デフォルト設定では8個のクラスターGPUインスタンスを使うことができます。もしそれ以上に必要な場合は、こちらからAWSにご連絡ください。この制限は技術的な制限ではなく、我々がこの発表に対する皆様のご要望を早期に理解するのに役立ちます。実際に、クラスターコンピュートインスタンスもこのような制限を設けさせて頂いておりましたが、現時点ですでにこの制限は取り除いており、最大128インスタンスまで立ち上げられるようになっています。
GPUにおいて最大のパフォーマンスを発揮するには、専門化したコードを開発する必要があります。Tesla GPUは、 CUDAアーキテクチャを実装しています。インスタンス上で最新のNVIDIAドライバをインストールすることで、Tesla GPUを様々な場面で利用することができます:
- 直接、CUDAドライバーのローレベルなAPIを使用する
- C Runtime for CUDAにおけるハイレベルの関数を使用する
- FORTRAN, Python, C, C++, Javaといった言語を用いる
- CUBLAS (BLAS), CUFFT (FFT), LAPACKといったパッケージを用いる
- ヘテロジニアスコンピューティング(heterogeneous computing)におけるクロスベンダー標準であるOpenCL (Open Compute Language)でアプリケーション開発する
- CUDA用に最適化された既存アプリケーションを利用する
Elastic MapReduceにおいても、クラスターコンピュートインスタンスと、クラスターGPUインスタンスを利用することができ、Hadoopの大量並列計算アーキテクチャとハイパフォーマンスコンピューティングを組み合わせて利用可能です。Elastic MapReduceがワークロード並列化、ノード設定、スケーリング、クラスター管理などの面倒をみてくれるので、開発者はアプリケーションレイヤに集中することが可能となります。
GPUやGPUプログラミングについてのより詳細な情報は以下になります:
いかがでしょうか?皆様のアプリケーションでこの「ブルドーザー」を利用できそうでしょうか?こういった計算能力を手にすることが出来た今、皆様だったらどんなことにチャレンジされるでしょうか?是非、このブログにコメントを残してくださいませ!!
玉川憲
Twitter: KenTamagawa