並列計算の基礎知識

スーパーコンピュータシステムでは,複数のCPUコアを使って並列に計算を行うことで,プログラムを高速に実行することができます.プログラムを並列化する手法として,スレッド並列,プロセス並列,これらを組み合わせたハイブリッド並列があります.

目次

スレッド並列

スレッド並列とは,1つのプロセスの中でスレッドを複数個生成させ,各スレッドに異なるCPUコアを割り当てて並列処理を行う方法です.スレッド並列プログラムのイメージを下図に示します.

スレッド並列

この図では,1つのプロセスの中で4つのスレッドを生成しており,各スレッドに対してCPUコアを1つずつ割り当てています.各スレッド間ではメモリ空間を共有して処理を行うため,スレッド並列ではリソースを共有して利用することができます.スレッド並列化の実現方法としては,コンパイラによる自動並列化,OpenMPによる並列化が挙げられます.

プロセス並列

プロセス並列とは,複数のプロセスを起動して,各プロセスに異なるCPUコアを割り当てて並列処理を行う方法です.プロセス並列プログラムのイメージを下図に示します.

プロセス並列

この図では,4つのプロセスを起動しており,各プロセスに対してCPUコアを1つずつ割り当てています.各プロセスは独立したメモリ空間を使用して処理を行うため,ノードをまたがってプログラムを実行することができます.プロセス並列化の実現方法としては,MPIによる並列化が挙げられます.

ハイブリッド並列(スレッド並列+プロセス並列)

ハイブリッド並列とは,プロセス並列とスレッド並列を組み合わせ,2つの階層で並列処理を行う方法です.ハイブリッド並列プログラムのイメージを下図に示します.

ハイブリッド並列

この図では,スレッド並列による2並列とプロセス並列による2並列を組み合わせており,合計4つのCPUコアを使用して並列処理を行っています.例えば,MPIプログラムを自動並列化コンパイルして実行させた場合は,MPIでプロセス並列,自動並列化でスレッド並列を行うハイブリッド並列の実行になります.