Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

はじめに

皆さま、はじめまして。某HPC会社に勤めている者です。
このたび、Advent Calender High Performance Computing (HPC)を思いつきで発案しました。非常にエッジな分野で少数派ですが、HPCに関係することならば、なんでも投稿してください。

アーキテクチャーについて

並列処理以前のおはなし

1プロセッサー1コア

近年、計算機周辺の性能が向上してきました。メモリーの容量・バンド幅、ストレージの容量・インターフェース、ノード間の通信が進化してきているところです。
CPUについて市販のCPUでいえば、Pentium 4以前のアーキテクチャーですと1CPUに1コアです。(場合によってはハイパースレッディングもありますが、有効にするとマルチコアに似ています。)
クロック周波数がムーアの法則にある程度従って進化して、そのまま性能につながりました。それができた背景には、半導体でできているLSIの製造技術の向上があります。

並列処理へ

マルチコアへの進化

ただ、クロック周波数の向上には限界が見えてきました。そこで1CPUあたりのコア数を増やす方向性に舵を切りました。市販のCPUでいえば、2006年のCore 2 Duoあたりからの話になります。このように1筐体に複数個の処理を同時に実行できるようになりました。1筐体に、共有して使えるメモリー、複数のコア(あるいはスレッド)があり、共有メモリーをおのおののコアが使用します。このしくみの計算機を「共有メモリ型並列計算機」といいます。
実際に複数のコアを制御して共同作業(要するに計算)を行うための具体的な実装として、スレッド並列を記述するOpenMPなどがあります。(勉強して書く時間ができれば書きたいと思います。)
image.png

ネットワーク接続によるクラスター

一方、1筐体の計算機だけではなく、複数の共有メモリ型並列計算機をネットワーク接続して、互いに通信をしあいながら協調して計算を行う方法もあります。大きな大学の研究室や研究所、民間企業で大規模計算を必要とする人のために、「クラスター」とも呼ばれる「分散メモリー型並列計算機」があります。計算機1台1台のことを「ノード」と呼びます。日本で有名な「分散メモリー型並列計算機」として、神戸にある「京」などがありますが、数台のPCをネットワーク接続しても立派なクラスターです。
image.png
実際に複数のノードを制御して共同作業(要するに計算)を行うための具体的な実装として、Message Passing Interface (MPI)があります。MPIはクラスターだけではなく、単体の共有メモリ型並列計算機でも使用が可能です。

MPI

MPIについて

分散メモリー型並列計算機間のメッセージ通信の規格で、実装としてMPICH ( http://www.mpich.org ) やOpenMPI ( http://www.open-mpi.org )があります。市販のMPIとして、Intel社によるIntel MPIなどがあります。

良い点

- プログラマーが細かなチューニングが行える

悪い点

- 明示的に手続きを記述する必要がある

といえます。

MPIの関数の紹介

MPI関数は数百種類ありますが、すべてを覚える必要はありません。まずは取っ掛かりとして必要最低限の関数を紹介します。

システム関数

- MPI_Init
- MPI_Comm_rank
- MPI_Comm_size
- MPI_Finalize

1対1通信関数

- MPI_Send
- MPI_Recv;

通信の同期

- MPI_Barrier

時間計測関数

- MPI_Wtime

が挙げられます。
詳細につきましては、以前に某勉強会でお話しした資料をご覧ください。
http://www.slideshare.net/seiichitanabetanabu/jawsug-hpc-2-lt-mpi

最後に

HPC・大規模科学技術計算のためには並列化が必須であり、特にメモリ分散型計算機(クラスター)を使います。
メモリ分散型計算機で並列計算を行うためにはMPIによる実装が(今のところ)必須です。
MPIのサブルーチンの数は多いですが、少数の基礎的なもので入門可能です。送受信、同期、時間計測についてしか述べておりませんが、取っ掛かりとなればと思います。

参考文献・サイト

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
7
Help us understand the problem. What are the problem?