問題タブ [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++ - SGEMM 結果の不一致
Intel MKL ライブラリの sgemm 関数を使用して、Intel CPU で大きな行列を乗算しています。
一連のデータを取得し、さまざまなアルゴリズムでデータを実行する単体テストがあります。sgemm が使用されていない場合 (私の会社で誰かが書いた最適化されていないアルゴリズムが使用されている場合)、このデータ セットのパス間で結果が完全に同一であることが証明されています。
関数によって返された行列の最下位桁で一貫性のない結果が得られています。このエラーは、使用するアルゴリズムの種類によってさらに悪化する可能性があります。
dgemm に切り替え、単精度ではなく倍精度の値を使用することで、この効果の重要性を回避しました。ただし、この不一致の原因と、(最適化されていない独自のアルゴリズムを使用して) 行列を乗算してもこの問題が発生しない理由については、まだ興味があります。
私の現在の考えでは、行列を乗算する場合、浮動小数点乗算は順不同で実行される可能性があり、これらの浮動小数点演算は連想的ではないため、微妙に異なる値が得られます。
c++ - mkl_free() の問題
画像登録プログラムを作成していますが、mkl_free() を使用すると奇妙なエラーが発生することがわかりました。MKL 関数を使用して、MATLAB から行列指数関数 - expm() - の実装を作成しました。私はそれを個別にテストしましたが、エラーが発生することなく動作します。
コードはここにあります: https://github.com/poliu2s/MKL/blob/master/matrix_exponential.cpp
計算に必要な他の関数から呼び出すと、問題が発生します。私のプログラムは現在、最初の mkl_free() を呼び出す直前にクラッシュするため、何らかの形のメモリ リークであると思われます。しかし、関数内で使用される行列は自己完結型であるべきではありませんか? それらを解放すると、プログラム全体がどのようにクラッシュするかわかりません。
mkl_free_buffers() への呼び出し; および mkl_thread_free_buffers(); 私が観察できる効果はありません。プログラムの実行開始時の速度を犠牲にして、mkl_disable_fast_mm() を使用して Intel Memory Manager をオフにしようとしましたが、無駄になりました。
関数自体への入力を確認したところ、テスト中に使用したものと同じように、マトリックスは完全に有効です。
特定のループで mkl_free(array) を呼び出すと、プログラムがクラッシュする理由はありますか?
c++ - MKLのcblas_dcopyとdcopyの違いは?
cblas_dcopy と dcopy の違いは何ですか? 私は主に dcopy を使用しています。これは、Intel の公式マニュアルでマトリックスをコピーするために提示されているためです。
これは間違っていますか?最近、次のオンラインガイド形式で別の方法に出くわしました。
C++ を使用している場合、どのような違いがあり、どちらを使用すればよいですか?
c++ - intel mkl サンプル プログラムの実行 - そのようなファイルはありません
Intel のサンプル ファイルを C++ で mkl ソフトウェアを使用して実行しようとしています。しかし、私はそれを実行することができません。私は C++ を使ったことがないので、単純な間違いを犯していると思います。
以下は、私が従った Intel ドキュメントの手順とサンプル コードです。11ページから始まります。
私は自分の端末でこれを実行しています:
そして、これは私のエラーです:
2012年半ばのmacbook retinaでこれを実行していることに注意してください。
python-2.7 - Numpy と Numpy-MKL の違いは?
SciPy を使用して信号処理と統計をテストしたかったのです。そのためscipy.signal
、 andを使用する必要がありscipy.stats
ましたが、常にエラーが発生していました。
ImportError: DLL load failed: The specified module could not be found.
Numpy 1.7.1、scipy 0.12、および Python 2.7.3 を使用していました。私はインターネットでチェックし、他のフォーラムでもそれについて尋ねました! この問題は、Numpy ディストリビューションを Numpy-MKL ディストリビューションに切り替えたときに解決されました。
2 つのライブラリの違いを知りたいですか?
python - MATLAB は Numpy の 2 倍の速さ
私は現在、数値シミュレーションの目的で MATLAB から Python に移行している工学部の大学院生です。基本的な配列操作では、Numpy は MATLAB と同じくらい高速であるという印象を受けました。ただし、私が書いた 2 つの異なるプログラムでは、MATLAB は Numpy の 2 倍弱の速さであることがわかります。Numpy (Python 3.3) に使用しているテスト コードは次のとおりです。
一方、MATLAB 2012a では次を使用しています。
私が使用しているアルゴリズムは、Numpy と MATLAB を比較する NASA のWeb サイトで使用されているものです。この Web サイトは、Numpy がこのアルゴリズムの速度の点で MATLAB を上回っていることを示しています。それでも、私の結果は、Numpy のシミュレーション時間は 0.49 秒、MATLAB のシミュレーション時間は 0.29 秒であることを示しています。また、Numpy と Matlab の両方で Gauss-Seidel ソルバーを実行したところ、同様の結果が得られました (16.5 秒対 9.5 秒)。
私はPythonを初めて使用し、プログラミングに関してはあまり読み書きができません。私は WinPython 64 ビット Python ディストリビューションを使用していますが、Pythonxy も試してみましたが、役に立ちませんでした。
パフォーマンスを改善するはずだと私が読んだことの1つは、MKLを使用してNumpyを構築することです。残念ながら、Windowsでこれを行う方法がわかりません。これを行う必要がありますか?
助言がありますか?
c++ - MKL のパラレル バージョンとシリアル バージョンを同時に使用するにはどうすればよいですか?
MKL のシリアル バージョンとパラレル バージョンは、2 つの異なるライブラリに実装されています。ライブラリの関数は同じ名前です。したがって、コンパイル時に競合することなく、両方のライブラリを直接ロードして各関数をそれぞれ呼び出すことはできません。
関数のラッパー (OpenGL Extension Wrangler Library (GLEW) など) を開発したいと思います。これは、同じ関数ごとに対応する拡張機能を持ち、拡張された関数は適切なライブラリから並列関数または順次関数をロードします。これは良い考えですか?他に何か提案できますか?
どうもありがとう。
linker - 実行可能ファイルは動的にリンクされた mkl ライブラリを見つけることができませんが、ldd は見つけます
mkl ライブラリに動的にリンクされたコードがあります。コードを実行すると、mkl が見つからないと報告されます。
しかし、ldd を使用して実行可能ファイル内の動的にリンクされたライブラリをチェックすると、mkl ライブラリが見つかったことが示されます
何が間違っている可能性がありますか?
からの出力readelf -l ./bmdl
より多くのデバッグ
単独LD_DEBUG
走行には影響ないよう./bmdl
です。
bmdl
古いものには「setgid」フラグがあり、新しいビルドにはそれがないことに気付きました。もしかしてそれが原因だった?
setgid
私は古いものからビットを削除しましたがbmdl
、実行./bmdl
中はライブラリが見つからないことについて文句を言いません。問題は、なぜ setgid が動的にリンクされたライブラリを妨害できるのかということです。
動的にリンクされた実行可能ファイルを含む setgid がセキュリティ上の問題を引き起こす可能性があり、GNU glibc によって大幅に制限されていることがあります。たとえば、LD_LIBRARY_PATH は無視されます。たぶん、古いビルドはこれまで機能しなかったのでしょうか?!