はてなキーワード: openmpとは
Q.
1つのCPUコアでの逐次処理を高速化することには限界があるため、コア数を増やし並列化させることで性能を向上させる必要がある、という考え方について、市販のサーバコンピュータとスーパーコンピュータで違いはありますか?
A.
この考え方に関して、市販のサーバコンピュータとスーパーコンピュータの間には基本的な違いはありません。両者とも、シングルコアの性能向上に限界がある中で、並列化によって全体的な処理能力を高めるという方向性を共有しています。しかし、その実現方法や規模には大きな違いがあります。 サーバコンピュータとスーパーコンピュータの並列化アプローチの比較 1. 並列化の規模 サーバコンピュータ: 数個から数百個のコアを使用 スーパーコンピュータ: 数万から数百万個のコアを使用 2. 並列化の方法 サーバコンピュータ: 主にSMP(対称型マルチプロセッシング)やNUMA(非一様メモリアクセス)アーキテクチャを採用 比較的少数のプロセッサを密結合 スーパーコンピュータ: 大規模な分散メモリシステムを採用 多数のノードを高速ネットワークで接続 3. 相互接続技術 サーバコンピュータ: 一般的なネットワーク技術(イーサネットなど)を使用 スーパーコンピュータ: 専用の高速相互接続技術(InfiniBand、Tofu Interconnectなど)を使用 4. ソフトウェアとプログラミングモデル サーバコンピュータ: OpenMPやpthreadsなど、比較的シンプルな並列プログラミングモデルを使用 スーパーコンピュータ: MPIなどの複雑な分散メモリプログラミングモデルを使用 ハイブリッド並列化(MPI+OpenMP)などの高度な技術も適用 5. スケーラビリティ サーバコンピュータ: 中規模までの並列化に適しているが、大規模になるとスケーラビリティに課題 スーパーコンピュータ: 極めて大規模な並列化に対応できるよう設計されている 6. 用途 サーバコンピュータ: ウェブサービス、データベース、ビジネスアプリケーションなど、比較的汎用的な用途 スーパーコンピュータ: 気象予報、宇宙物理学シミュレーション、分子動力学計算など、極めて計算負荷の高い科学技術計算
新たなアーキテクチャーを創設するくらいならオープンソースの分散並列(OpenMP-MPI)のハイブリッド(CPU-GPU)数値処理ソフトウェア開発に力を入れたほうがいい。
少なくともオープンソースで動くOpenMP-MPI CPU-GPUの基本的な数値計算ソフト(特に行列計算)は世界最先端の研究内容。こういったソフトを毎回アーキテクチャーごとに作るのは金の無駄だし、x86-x64環境で動くようにすればいい。
現状の数値シミュレーションなんてKrylov methodなどの行列処理が主な作業なんだから、それを汎用アーキテクチャで使えるようにしたほうがいい。CPU-GPU+OpenMP-MPIで動く行列処理のソフトがあればそれが汎用の処理として使えるんだからくそみたいにコンパイルがめんどくさいアーキテクチャを作るくらいなら、汎用で使えるオープンソースのソフトを作れよ。
そんなコードがTrilinosなんだけどね。