処理を代替し処理の効率を向上させる装置(デバイス)を指す。ここで言う「処理効率を向上させる」手法は、そのほとんどが「並列処理」によるスループットの高速化である。HPCのプログラムを対象として見た場合、ループ構造を有した処理部分を並列処理により高速化することを目的とした装置がアクセラレータである。offload」と称する。)を目的にしていることは共通である。間のブロック図を示したものである。バス経由で接続された形態となっている。Phiも、アクセラレータ・デバイス内部のアーキテクチャは異なるが、PCIバスで接続されていると言う意味では共通な構造を持つ。「CPU」と「アクセラレータ」の違いは?「CPU」と「アクセラレータ(GPU)」の構造的な違いを纏めたよい資料がある。もとに、性能に関与する構造上の違いを以下の表に表した。「アクセラレータ(GPU)」は、その動作周波数はきわめて低く、スカラ処理する際のベース性能はCPUに比べて低いことが分かる。並列処理の両方を行って性能を稼ぐ方法をとっている。実行処理を行い、命令処理のストールを隠蔽するために、多重のマルチスレッディング実行ができるようになっている。したアクセラレータ上では、SIMD(ベクトル)処理と並列処理が可能なプログラムが、その本来有している高い性能を享受することが出来る。年に書いたものであるが、GPUの基本的な構造はあまり変わらないため、一読していただくと今後の参考になるかもしれない。ユーザが使用するプログラミングモデルとしては、これらの異機種デバイス上で大きなプログラム変更無しに使用できるものが理想である。これら三社のデバイスは、今後、同じマーケットにおいて競い合うものと思われるが、これらのデバイスの特徴を簡単にまとめてみる。メモリアクセラレータ用のプログラミングモデルこのアーキテクチャで特徴的なことは、以下の点である。バスで接続されていることこのような構成の上でプログラミングを行うことを想定してみよう。ある重い処理をアクセラレータ・デバイス(以下、「デバイス」とも言う。側に戻すと言うハンドリングが必要となる。これと関連して、両者のメモリ空間が異なるため、一つのプログラム内で単一アドレス空間でのメモリアクセスが出来ない(あるいは同じ変数名が使用できない)ことにより、プログラミングの難易度が増すと言った欠点がある。プログラミング仕様である。同じ手法を踏襲したものと考えて良い。PGIアクセラレータコンパイラとしてその実装形を市場に提供した。対応のコンパイラを提供している。年の始めに各社から提供されることとなっている。「CPU+アクセラレータ」のハイブリッド構成に対するプログラミングモデルであり、CPU処理をオフロードしデバイス側で処理するためのコード開発を支援するディレクティブ群と理解して良い。確定され、同様なコンセプトで今後の標準化を見据えている。デファクト・スタンダードとなるのではないかと思っている。Phi(MICアーキテクチャ)用のもう一つのオフロード・プログラミングモデルは、独自のディレクティブ仕様であり、インテル社以外の「デバイス」上では利用出来ない。以外存在しないと言う情況にある。して動作させようとしよう。ディレクティブのソースコードでありながら、「マルチコアCPU」上では、並列化動作できないと言う不自然さが生じる。一つのソースコードでのプラットフォーム互換性に問題が出る。知見とそれを改善してゆく時間が必要なのではないかと感じざるを得ない。マルチコアベースの並列化機能も取り込む必要がある。環境をそのまま踏襲できるため、これは可能である。環境の新たに開発を行うことは、あまり合理的な話ではない。対応することはかなり敷居が高いと言えよう。ベースのままで踏襲していくと、アクセラレータ用のソフトウェア開発環境においては、今後益々、他デバイスとのプログラム互換性という観点で孤立感を高めてしまう可能性もある。コンパイラを市場提供する。利用にも弾みが付く可能性がある。特長は、「プログラム互換性」だけでなく、複数のデバイス間でも、それぞれの特性に応じたベスト・パフォーマンスが得られること、すなわち「性能互換性」を志向したプログラミング・モデルでもあることだ。対応を行うための取り組みを進めていることを発表した。実装が始まりつつある。共存でプログラミングした方が分かり易いと言う利点がありそうだ。両方のディレクティブを入れておけばよいのである。directivesを解釈する)オプションがあるが、使用用途に分けてこれら二つの実行バイナリを作成しておけばよい。