[目次] [1ページ目] [前ページ] [次ページ] [質疑応答]
(7/8)

7 MultiThread による実行性能


図8: MPI とMultiThread の比較(3 次元ポアッソン方程式)


 MultiThread による並列化効率を議論するため、図8 に、三次元ポアッソン方程式をR&BSOR 法で解いた場合の演算速度を示す。格子点数は1283、格子はカルテシアンとし、離散化は差分法( 二次精度中心差分) を用いた。また、並列化の手法として自動並列化、MPI化、MultiThread 化を用いた。

 R&B SOR 法は、並列化指示行を挿入することで自動並列化が可能となる。また、MultiThread 化には、バリア同期(Dissemination) を用い、1 反復中に三カ所用いた。そして、誤差の足し込みのため、mutex lock()、mutex unlock() を用いた。MPI 化は、同期通信を用い、1 反復中に隣接領域と4 回のデータ交換を行い、誤差の足し込みにMPI All reduce()を用いた。
 並列化手段として、MultiThread を行った場合、わずかではあるが、MPI による並列化よりも良い結果が得られた。MultiThread における同期待ちのコストは、MPI の場合の通信コストよりも低く押さえることが可能である。そのため、SMP マシンでは、MultiThread化することで、MPI での並列性能よりも良い性能が得られる。
 自動並列化の場合、高い演算性能が得られているが、本ベンチマークでは自動並列化が極めて容易であり、MultiThread やMPI のサブルーチンコールが無い分、1 CPU あたりの性能が高い。また、CPU 数が増えた場合でもその効果が現われている。また、8 CPU から16 CPU でスーパーリニアとなっているが、16 CPU の場合、計算すべきデータ量がキャッシュサイズに収まるために現れたと考えられる。

[目次] [1ページ目] [前ページ] [次ページ] [質疑応答]