2013年11月14日

イマ旬キーワード

ビッグデータ

ビッグデータ時代を迎えた現在、マルチコア・プロセッサは当然のこととなり、さらにメニーコア・プロセッサへと移行は進んでおり、1プロセッサあたり10コア以上のプロセッサが多くリリースされてきています。このメニーコアを活かしたHPCの今後について考察します。

株式会社NTTデータ 技術開発本部 横川 雅聡
株式会社NTTデータ数理システム 知識工学部
黒田 寿男

メニーコア・プロセッサ

メニーコア・プロセッサに特徴的なのは、単にコアが多く集積されているだけではなく、レジスタや命令セットが拡張されている点にあります。

アプリケーション・プログラムの処理性能向上が期待できるハードウェアおよびプログラムの要素と、コンパイラのサポート状況について下表にまとめました。

  • 2013年11月時点でのNTTデータ調べ
【図】

以下、上それぞれがどのような効果をもたらすかを具体的に見ていきましょう。

レジスタ数の拡張

レジスタはプロセッサ内部にあり、プロセッサ外部に配置されるメモリよりも高速なアクセスが可能です。

たとえばレジスタが2つしかないようなプロセッサでは、式x=a*b+cの生成コードは下図(1)のようになりますが、レジスタが豊富にあれば下図(2)のように効率の良いコードを生成することができます。

【図】

しかし昨今のビジネスシーンにおける複雑な計算を限られた数のレジスタ操作だけで行なうことは難しく、ハードウェアがレジスタ数を拡張するというのは必然的で、最も重要な拡張の一つといえます。

積和演算とコンパイラのサポート

積和演算とは、乗算と加算を同時に実行する命令を指します。内積や行列の演算をはじめとして、多くの科学技術計算は積和演算を多用します。プロセッサ側にこの積和演算を高速に処理するユニットが搭載されることで、非常に大きな効果を発揮できます。

コンパイラはこのような特殊な命令をうまく利用しなければなりませんが、複数のターゲットプロセッサをサポート可能なリターゲッタブルコンパイラの研究を経て、積和演算のような命令の最適マッチング技術はすでに確立されています。

SIMD命令とコア集積度の向上

SIMD(Single Instruction Multiple Data)命令とは、同種の演算を複数並列に実行する命令を指します。積和演算と同様、単一の命令で複数の演算を行う特殊命令ですが、同種の演算を数個(2~4程度)並列に実行する点が異なります。SIMD命令を使った並列化をSIMD並列化といいます。

演算は浮動小数の四則演算が主ですが、積和演算がさらにSIMD並列化された命令を実行可能なプロセッサもあります。SIMD命令をうまく使う命令選択には並列性の抽出が必要で、難しい問題です。SIMD並列化の近年の研究についてはCOINS参考1をご参照ください。

メニーコアを利用した並列計算を行うためのフレームワークとして現在最も利用されているものがOpenMP参考2で、以下の特徴があります。

  • 既存コンパイラに並列化指示文を挿入するのみでよい
  • 異なるスレッドが同一データを参照可能
  • メジャーなコンパイラのほとんどでサポートされている

以下はループ内を並列化する例です。並列処理の指示文のみでfor文の制御変数を認識し、現在のスレッド数から適切な並列実行単位を作り実行します。

【図】

例えばスレッド数が4であれば、i=0~24,i=25~49,i=50~74,i=75~99が4つのスレッドに割り当てられます。

メニーコアHPCに向けて

メニーコアを活かした並列計算では、自動的な並列化は難しく、現在の多くの研究が継続されています。実際、並列アルゴリズムを見いだすこと自体高度な知的作業であり、自動化には限界があります。先の例であげたような、ループ中の配列計算は並列処理化で重要なポイントにはなりますが、それ以外の多くの一般的なプログラムにおける自動並列化については、ほとんど研究がなされていません。

コア数が少ないプロセッサで高度に最適化されたプログラムを実行させていた時代であれば、重要な部分のみの並列化のみでよかったのですが、有り余るほどのコアを有するメニーコア・プロセッサを前にして、一般的なプログラムがシングルコアで実行されるというのは、いかにももったいないことです。

スーパーコンピュータで培われてきたプロセッサおよびソフトウェア技術がエンタープライズビジネスに活かされようとしています。NTTデータ数理システムおよびNTTデータでは、メニーコア・プロセッサの利点を最大限に引き出せるよう、プログラムの自動並列化などの高度化をめざし、HPCの推進とエンタープライズビジネスへの技術適用を推進していきます。

注釈

  • さまざまな言語に対してさまざまなターゲットマシンのコードを生成することが可能なコンパイラ。

著者プロフィール

【写真】

技術開発本部 横川 雅聡

データウエアハウスやビジネスインテリジェンスに関する技術開発に従事。現在は、大規模リアルタイムデータ分析の実現に向け、さまざまな基盤技術を組み合わせた最適化に注力。日々先進技術の検証などに取り組む。

【写真】

株式会社NTTデータ数理システム 知識工学部 黒田 寿男

機械学習、プログラム解析技術、セマンティックテクノロジーを応用した開発に従事。2012年に国際Lisp会議の議長を務めた。

イマ旬キーワード

お気軽に
お問い合わせ
ください

メニーコア時代のHPC(High Performance Computing)に関するお問い合わせ

お問い合わせフォーム

メニーコア時代のHPC(High Performance Computing)に関連する情報

サービス

詳細な分析で意思決定を迅速化、お客様のビジネスに変革をもたらす