微粒子分散系のこれまでのシミュレーションでは、個々の粒子間に働く流体力学相互作用に対して大幅な近似を用いることが普通であったが、我々が開発したSP法に基づく直接数値計算(DNS)を実装したプログラムのKAPSELでは、そのような近似を用いることなく微粒子分散系をシミュレーションすることが可能である。今年度は並列化による大規模計算の実現とその応用について大きな成果があった。現在、マルチコアを搭載した計算機が一般になってきており、その価格比性能は著しく高い。この計算機を用いて、大規模・長時間計算を効率よく実行するには並列計算を行う必要がある。本研究では、本年度KAPSELを並列計算に対応すべく、OpenMPを用いて並列化を試みた。OpenMPでは並列実行領域を大きく取ればとるほど効率が良くなるので、各ループの最も外側のループに対して並列領域を指定するようにした。また、各粒子に対する計算を行うループでは、データの競合を防ぐために並列化した場合に生成する各スレッドごとに変数のプライベート化を行なった。多粒子系の計算においては、粒子間相互作用の計算だけで全実行時間の半分以上を消費してしまい、OpenMPを用いて並列化しても効率が低下してしまう。そこで、計算量を粒子数の一乗のオーダーにとどめておくLinked List法を実装した。その結果、これまでに全計算量の95%以上を並列化することに成功し、8コア計算機で5.4倍の速度を実現することが出来た。
|