PARDISO 使用時のヒント

同カテゴリーの次の記事

HPL 向けアプリケーション・ノート

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Tips for using PARDISO」の日本語参考訳です。


はじめに

インテル® マス・カーネル・ライブラリー (インテル® MKL) の PARDISO ソルバーのインターフェイスには多くの引数があり、使用法を習得するには時間がかかります。PARDISO の DSS インターフェイスは、機能に対する単純なインターフェイスを提供するために作成されたにもかかわらず、PARDISO インターフェイスの使用を続けているユーザーは少なくありません。この記事では、DSS インターフェイスの使用を開始するにあたってのヒントと、初心者がよく起こす (場合によっては熟練者も起こす) ミスを回避する方法について説明します。

全般的なヒント

サンプルの確認: インテル® マス・カーネル・ライブラリー (インテル® MKL) の examples/solver ディレクトリーに含まれている、解く問題に最も近いサンプルプログラムを選択することで、適切な引数の設定を参考にできます。

行列チェッカーの使用: PARDISO の iparm(27) の引数は入力チェッカーを制御します。デフォルトでは、この引数はオフ (iparm(27)=0) に設定されているため、オン (iparm(27)=1) にして使用してください。PARDISO はデータ構造に関するチェックを行い、誤りを見つけた場合はエラーメッセージを返します。このエラーメッセージを確認することで、問題を特定して、PARDISO が行列を表現および格納する方法 (例えば、対称行列は三角形式で格納) について正しく理解することができます。

リンク行の確認: プログラムが (特定のスレッディング・ランタイムを仮定する) 間違ったスレッドレイヤーやインターフェイス (例えば、ILP64 ではなく LP64、cdecl ではなく stdcall) にリンクされたために、動作がおかしくなる (クラッシュ、ハングアップ、その他) ことがあります。インテル® MKL の最新バージョンを使用している場合は、リンク・アドバイザー を使用することを推奨します。以前のバージョンを使用している場合は、『インテル® MKL ユーザーズガイド』の第 5 章を参照してください。

重要な設定

引数の完全なリストは、リファレンス・マニュアル または PARDISO 引数表 に記載されています。初めて使用する場合や予期しない結果が引き起こされる場合は、以下の設定を知っておくと便利です。

メッセージレベル情報の使用: ソルバーは、入力引数が msglvl=1 の場合は統計情報を画面に出力します。msglvl=0 の場合は何も出力しません。このオプションのデフォルト値はありません。

単精度と倍精度: インテル® MKL は、10.2 から単精度の計算と倍精度の計算をサポートしています。単精度モードと倍精度モードを切り替えるには、iparm(28) を使用します。デフォルトモード (iparm(28)=0) の場合、内部の計算はすべて倍精度で行われます。iparm(28)=1 の場合、内部の計算はすべて単精度で行われます。

デフォルト値の使用: iparm 配列の各要素にデフォルト値を使用できます。iparm(1)=0 に設定すると、PARDISO は配列の残り (iparm(2) および iparm(4) ~ iparm(64)) にデフォルト値が使用されます。iparm(1)=0 に設定しない場合、iparm 配列の値をすべて設定する必要があります。

解の書き換え: 出力される解を配列 b の右側に格納する必要がある場合、iparm(6)=1 を選択します。
デフォルト値 (iparm(6)=0) の場合、解は配列 x に格納されます。

バージョン (インコアまたはアウトコア) の選択: (メモリーのサイズを超える) 非常に大規模な問題を解く必要がある場合は、iparm(60)=2 に設定して、アウトオブコア PARDISO を使用します。このオプションについての詳細は、この記事 (英語) を参照してください。

パフォーマンスに関する推奨事項

最高のパフォーマンスを得るため、小行列にアウトオブコア (OOC) PARDISO を使用することは推奨しません。PARDISO 要素の格納に必要なメモリーがシステムメモリーの 30% 未満の場合は、インコア PARDISO を使用することを推奨します。フェーズ 11 の後に iparm(17) を使用してサイズ (KB 単位) を取得できます (『インテル® MKL リファレンス・マニュアル』を参照)。

その他の情報

問題が解決しない場合や、インテル® MKL の問題点を見つけたと思われる場合は、インテル® MKL のナレッジベース (英語) で既知の問題点を確認してください。あるいは、インテル® MKL フォーラム (英語) で同様の問題が報告されていないか検索してください。詳細は、スパースソルバーのトレーニング資料 (英語) を参照してください。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事

  • サマリー統計ライブラリーの概要サマリー統計ライブラリーの概要 この記事は、インテル® ソフトウェア・ネットワークに掲載されているブログ「Statistical Summary Library Overview」の日本語参考訳です。 統計的計算の精度とパフォーマンスが強化された最新のアルゴリズムを提供する、最適化された並列ライブラリーがインテル® MKL 10.3 […]
  • インテル® マス・カーネル・ライブラリーの FFTW3 インターフェイスインテル® マス・カーネル・ライブラリーの FFTW3 インターフェイス この記事は、インテル® MKL リファレンス・マニュアルの項目「FFTW3 Interface to Intel® Math Kernel Library」の日本語参考訳です。 この記事では、インテル® マス・カーネル・ライブラリー (インテル® MKL) の FFTW3 ラッパーについて説明します。このラッパーは、FFTW3 […]
  • HPL 向けアプリケーション・ノートHPL 向けアプリケーション・ノート この記事は、インテル® ソフトウェア・ネットワークに掲載されている「HPL application note」の日本語参考訳です。 ステップ 1 - 概要 このガイドは、現在 HPL を使用しているユーザーが、より優れたベンチマーク結果を得られるように、インテル® マス・カーネル・ライブラリー (インテル® MKL) の […]
  • インテル® MKL 10.3 で追加された新機能インテル® MKL 10.3 で追加された新機能 この記事は、インテル® ソフトウェア・ネットワークに掲載されている「What's new in Intel® MKL?」の日本語参考訳 (一部編集含む) です。 インテル® MKL 10.3 では主に次の機能が追加されました。 インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) […]
  • サンプルプログラムの実行サンプルプログラムの実行 この記事は、インテル® MKL リファレンス・マニュアルの項目「インテル® マス・カーネル・ライブラリーの FFTW3 インターフェイス」の一部です。 ラッパー・ライブラリーの使用法を示すさまざまなサンプルプログラムが提供されています。サンプルプログラムのソースコード、実行に使用される […]