並列化アーキテクチャ
並列化アーキテクチャって、進歩があるようでないように思う。
多分一番最初はベクトル型のアーキテクチャから始まったのだと思う。
そのうちノードを多数疎結合しネットワークでつないだクラスタ型のアーキテクチャが出て、ノード間通信にMPI(Message Passing Interface)を用いた並列化が出てきた。
ノード内並列としてスーパーパイプラインやスーパースケーラーが出てきたが、スレッドという軽量プロセスが出てからは、CPUを密結合で繋いでスレッド分割させるSMP並列が主流となった。OpenMP並列が並列化のインターフェースになる。
今はOpenMPとMPIのハイブリッド並列が多く多用されている。
そこへ出てきたのがGPGPUを多数搭載したデバイス型のアーキテクチャである。メニーコアと言われ、次世代はOpenACCがプログラムインターフェースとして注目を集めている。
と、ざっと眺めてもものすごく進化しているように思えるが、進化しているのは命令レベルの並列化であって、データ並列化ではない。
データ並列は相変わらず人がアルゴリズムを駆使して各種アーキテクチャに合わせてきた。つまりデータをどう分割して並列処理させるかは未だに人手に深く依存しているのである。ここについては昔からあまり進歩がないように思う。
確かにコンパイラが頑張って解析するにも限界があるし、科学技術計算ライブラリにしたってマニアックで容易に使いこなすのは至難の技である。
対象データを如何にスマートにデータ分割してデータ並列化させ、アーキテクチャに並列化処理させるかが、今後の並列化アーキテクチャの進化の鍵のように思えてならない。
並列化アーキテクチャって、進歩があるようでないように思う。
多分一番最初はベクトル型のアーキテクチャから始まったのだと思う。
そのうちノードを多数疎結合しネットワークでつないだクラスタ型のアーキテクチャが出て、ノード間通信にMPI(Message Passing Interface)を用いた並列化が出てきた。
ノード内並列としてスーパーパイプラインやスーパースケーラーが出てきたが、スレッドという軽量プロセスが出てからは、CPUを密結合で繋いでスレッド分割させるSMP並列が主流となった。OpenMP並列が並列化のインターフェースになる。
今はOpenMPとMPIのハイブリッド並列が多く多用されている。
そこへ出てきたのがGPGPUを多数搭載したデバイス型のアーキテクチャである。メニーコアと言われ、次世代はOpenACCがプログラムインターフェースとして注目を集めている。
と、ざっと眺めてもものすごく進化しているように思えるが、進化しているのは命令レベルの並列化であって、データ並列化ではない。
データ並列は相変わらず人がアルゴリズムを駆使して各種アーキテクチャに合わせてきた。つまりデータをどう分割して並列処理させるかは未だに人手に深く依存しているのである。ここについては昔からあまり進歩がないように思う。
確かにコンパイラが頑張って解析するにも限界があるし、科学技術計算ライブラリにしたってマニアックで容易に使いこなすのは至難の技である。
対象データを如何にスマートにデータ分割してデータ並列化させ、アーキテクチャに並列化処理させるかが、今後の並列化アーキテクチャの進化の鍵のように思えてならない。