問題タブ [intel-mkl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - CPU上で最速のマルチスレッド反復スパースソルバー?
インテル® MKL ライブラリーは最適化されたスレッド化された関数のセットを提供しますが、反復疎ソルバー (ISS) の場合、前処理付き共役勾配法はスレッド化するのが簡単ではないようです。
より正確に言うと、不完全コレスキー分解や ILU などの前処理手法を使用すると、ある時点でスパース三角ソルバーが必要になりますが、三角解を実行するための対応する MKL 関数mkl_cspblas_?csrtrsv
はスレッド化されません。私の質問は、マルチコア プロセッサで現在のバージョンの MKL (完全にスレッド化されていない) を打ち負かすスパース ソルバー ライブラリがあるかどうかです。
fortran - 使用されているよりも多くのプロセスで BLACS を呼び出す
SCALAPACK を多用する並列プログラムを作成したいと考えています。SCALAPACK の基礎は BLACS であり、BLACS 自体はプロセス間通信を MPI に依存しています。
定義された数のプロセス (マシン上のコアの数など) でプログラムを開始し、これらのプロセスを計算に使用する方法をアルゴリズムに決定させたいと考えています。
テストケースとして、10 個のプロセスを使用したいと考えました。これらのプロセスのうち 9 つをグリッド ( BLACS_GRIDINIT
) に配置し、10 番目のプロセスは他のプロセスが終了するまで待機する必要があります。
残念ながら、最後のプロセスが BLACS から MPI コンテキストに入らないため、OpenMPI はクラッシュします。
質問:必要以上のプロセスで BLACS を使用する正しい方法は何ですか?
MPI_INIT
additionalとMPI_FINALIZE
呼び出しを使っていくつかの実験を行いましたが、どれも成功しませんでした。
インテル® MKL のサンプル・コード (少し短縮) から始めました。
更新:のソース コードを調べて、BLACS
そこで何が起こっているのかを確認しました。
これが以前に発生しなかった場合、呼び出しBLACS_PINFO
は MPI コンテキストを で初期化します。MPI_INIT
これは、この時点ですべてが期待どおりに機能することを意味します。
最後に、 への呼び出しはBLACS_EXIT(0)
からすべてのリソースを解放する必要がBLACS
あり、引数が0
の場合は も呼び出す必要がありますMPI_FINALIZE
。残念ながら、これは期待どおりに機能せず、最後のプロセスは を呼び出しませんMPI_FINALIZE
。
回避策として、必要に応じて質問MPI_FINALIZED
して電話することができますMPI_FINALIZE
。
更新 2:以前の試みは と で行われIntel Studio 2013.0.079
ましOpenMPI 1.6.2
たSUSE Linux Enterprise Server 11
。
ctheo の回答を読んだ後、Ubuntu 12.04
( gfortran 4.6.3, OpenMPI 1.4.3, BLACS 1.1
) で指定されたツールを使用してこの例をコンパイルしようとしましたが、成功しました。
私の結論は、Intel の実装にはバグがあるように見えるということです。の最新のサービス リリースで、そう遠くない将来にこの例を再試行しますがIntel Studio
、変更は期待できません。
ただし、他の(そしておそらくより良い)ソリューションをいただければ幸いです。
c++ - C++ の MKL Blas ルーチンの複素数としての const void*
MKL Blas 関数cblas_zgemvの呼び出しに行き詰まりました
複素数である 2 つの係数 alpha と beta があります。
. しかし、関数の定義では:
alpha = complex(1.0,0) を設定しようとしましたが、これはエラーを返します:
私に何ができる?この const void* が何であるかわかりません...
fft - Intel Xeon Phi での MKL 3D 倍精度複素数 FFT
Intel MIC プラットフォームでネイティブに実行する 3 次元 FFT (MKL インターフェイス) の C コードを開発しました。
複素数から複素数への変換では、データ要素は倍精度複素数です。私はパディングされた主要な次元、mkl_malloc() 64 バイト アラインメントを使用し、配列に基数 2 の次元を使用しています。最終的に得られるパフォーマンスは約 50 Gflop/s です。
同様のタイプの変換のパフォーマンス リストはどこにもありません。Xeon Phiでこれが(満足できる)合理的かどうか誰か教えてもらえますか?
windows - gfortran は Cygwin で svml サポートを削除しましたか?
svml
まったく新しい Cygwin インストールで Fortran コードをコンパイルする際に問題が発生しています。これは、Intel (Short Vector Math Library) ライブラリ内の関数への未定義の参照にまでさかのぼることができます。
具体的には、フォームのエラーが発生しています
ここに示すように、関数vmldPow2
はsvml
ライブラリの一部であり、makefile で gfortran のオプションとして次のように渡します。
(ライブラリlapack
とも使用していますlblas
。)
このファイルは、Windows 7 で Cygwin 1.7.17 を実行している私のラップトップで正常にコンパイルされました。 、同じく Windows 7 を実行しており、Cygwin 1.7.25 がインストールされています。32 ビットと 64 ビットの両方のインストール (それぞれ gfortran 4.7.3 と 4.8.1 で実行)、およびデスクトップに 64 ビットの Cygwin を新規インストールすると、上記のエラーが発生します。また、同じデスクトップで Linux を起動してもエラーは発生しませんが、現時点ではエラーにはなりません。
svml
新しい Cygwin のインストールでは、(a)へのリンクが壊れているか、(b) そのライブラリの欠落している部分があることは明らかです。私はそのライブラリを元に戻す方法をできる限り広範囲に検索しましたが、GNU コンパイラの本質的な部分のようです。実際、GNU コンパイラはこのライブラリのサポートをやめたのでしょうか? そうでない場合は、ライブラリまたはライブラリにリンクしているファイルを修復する必要があると思います。その場合、このライブラリはどこで利用できますか? どのファイルをどのように修復する必要がありますか?
ただし、私が間違ったツリーを吠えている可能性が明確にあることは認識しています。どこを見ればいいですか?
c++ - Intel Core i7-3770 セグメント エラーでの ACML 5.3.1
昨日、cblas_dgemm の例をテストしたいのですが、問題が発生しました:インテル® MKL ライブラリーをリンクする方法、cblas_dgemm 関数だけが使用され
ていますが、まだ存在しています。そこで、ACML 5.3.1 ライブラリを使用して dgemm をテストします。デモの例はhttp://r2labs.org/pct/Scott_McAllister_work/pCT/amlg0.1/win64/examples/time_dgemm_c/dgemm_c_example.cからのものですが、プロジェクトを とリンクすると-L/opt/acml5.3.1/gfortran64/ -lacml
、正常にコンパイルできます。しかし、実行時にエラーが発生します:
助けてください。ありがとうございます。