• 製品案内
  • 受託解析・開発
  • 実績・事例
  • セミナー
  • サポート
  • 資料ダウンロード
  • お問い合わせ

PARDISOの利用

PARDISOとは

構造、流体など、数値解析されている方の多くは、 連立一次方程式(Ax = b)を解く、ということをされているかと思います。
さらに、そのソルバー部分がプログラムのボトルネックになっている方も多いのではないでしょうか。
そのソルバー部分をPARDISOに入れ替えることで、プログラムの高速化が期待できます。

PARDISOはスイスのバーゼル大学(Universität Basel)で開発され、提供されている疎行列連立一次方程式の直接法ソルバーで、 Parallel Sparse Direct Solver の略です。
PARDISOはインテル®マス・カーネル・ライブラリー (インテル®MKL)にも含まれており、 次のような特徴があります。

  • 実数または複素数、対称、構造対称または非対称、正定値、不定値またはエルミートの行列に対応
  • Fortran、C/C++から利用可能
  • 高速で、メモリー効率が良い
  • 共有メモリ型のプロセッサーでの並列計算に対応し、並列化効率がよい

Intelコンパイラをご利用の方でも、PARDISOをご存じでない方が意外と多いという印象があるのですが、 せっかくコンパイラに高性能なソルバーが付いていますので、 是非試して頂きたいと思います。
特に、メモリ節約のために工夫してあるプログラムなど、 代々受け継いできた古いコードをお使いの方は、想像以上の効果を得られることもあります。
実際、弊社でPARDISOの組み込みをさせて頂いたケースでは、 元の直接法ソルバーに対して、数倍から数十倍の高速化となっています。
下記は、ご紹介できるPARDISOの導入事例になります。

PARDISOの組み込み

        PARDISOの利用の仕方は、インテル

®

        マス・カーネル・ライブラリ・リファレンス・マニュアルにもあるように、



Fortran:
call pardiso(pt, maxfct, mnum, mtype, phase, n, a, ia, ja,
perm, nrhs, iparm, msglvl, b, x, error
)

C/C++:
pardiso(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja,
perm, &nrhs, iparm, &msglvl, b, x, &error
);

        と、引数が多く、特に行列・ベクトル情報以外の部分で何を渡していいかお困りではないでしょうか。

        また、行列の格納形式が異なる、あるいは行列自体を保持していないプログラムをお使いの方は PARDISO で用いられる CRS(Compressed Row Storage) 形式での行列を作成する必要があります。

        これらの理由で、なかなかうまく PARDISO を組み込めない、あるいは時間が取れないといった方が多いのではないかと思います。

        弊社では、そのような方のために、プログラムのソルバー部分を PARDISO に入れ替えるサービスも行っておりますので、お気軽に

ご相談ください

        必要であれば、ソルバー以外の並列化やチューニングもいたします。




関連資料ダウンロード

お問い合わせ