問題タブ [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.
c# - .NET / C#およびJava用の高性能数学ライブラリ
現在、 Intel MathKernelLibraryを利用するC++で記述された高性能の科学アプリケーションがあります。
パフォーマンスの違いを比較するために、Javaと.NET / C#で記述されたベンチマークアプリケーションを作成することを検討しています。そのためには、両方に適した(商用が望ましい)数学ライブラリも必要です。Java / C#用の数学に相当するライブラリを知っている人はいますか?
補足として:C++にはマルチスレッドを支援するIntelTBBライブラリがあります。.NET / C#とJavaには同等のものがありますか?
eigenvector - IntelMathKernelでの固有値と固有ベクトルの計算
インテルマス・カーネル・ライブラリーの固有値と固有ベクトルの計算に使用されるアルゴリズムを知っている人はいますか?リンクからわかるのは、QRアルゴリズムを使用するpdsyevアルゴリズムを使用しているようで、大きな行列に直面すると劣化するということです。
これが当てはまる場合、mklは大規模な固有値問題を計算するための適切なライブラリではありません。
どう思いますか?それとも、上記のテキストを誤解しているのでしょうか。
c++ - インテル®MKLメモリー管理と例外
Intel MKLを試していますが、独自のメモリ管理(Cスタイル)があるようです。
彼らは、ベクトルと行列にMKL_malloc / MKL_freeのペアを使用することを提案していますが、それを処理するための良い方法がわかりません。その理由の1つは、メモリアライメントが少なくとも16バイトであることが推奨されており、これらのルーチンでは明示的に指定されていることです。
私は以前、auto_ptrとboost :: smart_ptrに依存して、メモリのクリーンアップを忘れていました。
MKLメモリ管理を使用して例外セーフプログラムを作成するにはどうすればよいですか、または通常のauto_ptrを使用するだけで、わざわざ使用する必要はありませんか?
前もって感謝します。
http://software.intel.com/sites/products/documentation/hpc/mkl/win/index.htmを編集します
このリンクは私が質問を提起した理由を説明するかもしれません
アップデート
アロケータには以下の回答のアイデアを使用しました。これは私が今持っているものです:
誰か提案があれば、遠慮なく改善してください。
java - Java 用 MKL 高速数学ライブラリ
私は StackOverflow と Google で関連するスレッドを調べましたが、あまり運がありませんでした。私はJavaも初めてです(C#と.NETのバックグラウンドから来ました)ので、ご容赦ください。Java の世界には非常に多くの情報があり、圧倒されます。
私は、重くて非常に反復的な数値計算 (つまり、統計、FFT、線形代数、行列など) を必要とする新しい Java-on-Linux プロジェクトを開始しています。そのため、数学演算のパフォーマンスを最大化することが要件であり、数学が正しいことを保証することも必要です。そのため、おそらく MKL などのネイティブ アクセラレーションを活用し、実証済みの Java ライブラリを見つけることに興味があります (したがって、ここでは商用オプションが確実に可能です)。
.NET スペースには、Centerspace NMath や Extreme Optimization など、高度に最適化され、MKL で高速化された商用数学ライブラリがあります。Javaに匹敵するものはありますか?
私が見つけた Java 用の数学ライブラリのほとんどは、積極的に維持されていないように見えるか (Colt など)、MKL やその他のネイティブ アクセラレーション (Apache Commons Math など) を活用していないようです。
私は Java から直接 MKL を活用することを検討しました (JNI など) が、私は Java に不慣れなので (Java とネイティブ ライブラリ間の相互運用は言うまでもなく)、これを既に正しく効率的に実行している Java ライブラリを見つける方が賢明に思えました。証明された。
繰り返しになりますが、私が間違っていたり見当違いであったり (私が言及したライブラリに関しても)、Java の提供について無知であったりした場合は、お詫び申し上げます。非常に商業化された Microsoft スタックから来た私にとってはまったく新しい世界なので、どこを見ればいいのか、また言及した Java ライブラリに関して簡単に誤解される可能性があります。助けやアドバイスをいただければ幸いです。
numpy - Python を使用したマルチコアでの ATLAS 線形代数と openmpi
マルチCPU /コアマシンでmpi4pyとopenmpiを使用して、線形代数を実行しています。私の numpy はATLASを使用して構築されています。4 コアのマシンがあり、numpy を使用して各ノードで線形代数を実行する 4 ノードの Python スクリプトを実行したいとします。
各ノードで線形代数を実行しているときに、ATLAS が複数のコアを使用しないようにするにはどうすればよいですか? ATLAS をビルドするとき、一度に 1 つのコアだけで実行するように構成するオプションはないようです。インテル® MKL では OMP_NUM_THREADS=1 を設定できると思いますが、この動作は保証されています。この目的のためだけに ATLAS を構築する方法はありますか? 環境変数に相当するものはないようです。
マルチコア CPU の各コアで複数の BLAS 操作を同時に実行することは、適切な戦略ではないと推測しています。誰でもこれについてコメントしたり、これが良いアイデアか悪いアイデアかの経験則を教えてもらえますか?
fortran - Intel VML の追加が遅い
単純なベクトル数学関数を比較するこの小さなサブルーチンを作成し、ループで実行します。
または直接:
またはインテル® MKL VML を使用:
vdAdd(n、a、b、f)
n=50000000 のタイミング結果は次のとおりです。
VML 0.9 秒 ダイレクト 0.4 ループ 0.4
そして、なぜ VML が他の方法の 2 倍の時間がかかるのか理解できません! (ループは直接よりも速い場合があります)
サブルーチンはhttp://paste.ideaslabs.com/show/L6dVLdAOIfの下に あり、経由で呼び出すことができます
c++ - 行列ベクトルの倍数と dgemm
コードで多数の行列とベクトルの乗算を行っています。私の単純な実装は、MKL10 の cblas_dgemm より優れていることがわかりました。これが当てはまる理由は、dgemmが alpha*A *B + beta *C を実行するのに対し、私は A*B しか実行していないためだと思います。しかし、単純な実装は大幅に優れています (〜 3 倍のスピードアップ)。なぜこれが当てはまるのでしょうか?
以下は、matrix-vector-mult の実装です。
c++ - C/C++ Matlab コンパイラと MKL
Matlab mcc を介して C/C++ dll として公開されている Matlab 数値ルーチンと、Math Kernel Library にある同等のルーチンとの間に大きなパフォーマンスの違いはありますか?
特に、?gels やフーリエ変換ルーチンなどの線形最小二乗ソルバーのパフォーマンスに関心があります。
fortran - 単純なMKLBLASルーチンを使用したFortran倍精度プログラム
単純なプログラム(実数と倍精度の両方を使用)で精度を混合し、BLASのddotルーチンを使用しようとすると、倍精度のピースの出力が正しくなくなります。コードは次のとおりです。
次のように、MKLBLASライブラリを使用してgfortranとifortの両方でコンパイルしてみました。
出力は次のとおりです。
倍精度値を正しく処理するようにddotルーチンを取得するにはどうすればよいですか?
さらに、-autodoubleフラグ(ifort)または-fdefault-real-8(gfortran)フラグを追加すると、両方のddotルーチンが機能しますが、sdotルーチンは失敗します。
編集: 暗黙のnoneステートメントと、ddot関数とsdot関数の2つのタイプステートメントを追加しました。関数呼び出しに指定された型がない場合、ddotは単精度実数として暗黙的に型指定されていました。
blas - IntelMKLをリンクできません
プログラムを正しくリンクできません。次のコマンドラインを使用しましたが、エラーが発生します。
出力は次のとおりです。
また、すべての.aファイルに対して1つずつリンクしようとするスクリプトを実行しようとしましたが、すべて失敗します。誰かが解決策を提案できますか?ありがとう。