問題タブ [blas]
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 - BLAS dgemm での LDA 引数の目的は?
Fortran リファレンス実装のドキュメントには、次のように記載されています。
ただし、m と k が与えられた場合、LDA を導き出すことはできませんか? LDA が n (または k) より大きいことはいつ許可されますか?
performance - CUBLASdgemmパフォーマンスクエリ
これらは、各GPU(Tesla M2050)に2つのストリームを使用して4つのGPUでcublasDGEMMを実行した結果です。
私は自分の結果をテストしましたが、問題ありません。デフォルトのストリームを使用するバージョンと比較して、取得している高いGflops値が心配です。次の式を使用してGflopsを計算しています。
Gflops = {2.0*10^-9*(N^3+N^2)}/elapsed_time_in_s
複数のストリームを使用するバージョンの場合、この式を何らかの方法で変更する必要がありますか?
これ HtoD-ker-DtoH
は、ホストからデバイスへのデータ転送、カーネルの実行、およびデバイスからホストへのデータ転送にかかる時間(秒単位)です(これは上記の式の分母です)。Nvidiaフォーラムへのクロスポスト-http://forums.nvidia.com/index.php?showtopic=219910&st=0# entry1350908
編集:@talonmiesのコメントに続いてcudaStreamSynchronize
、時間を計算する前にaを追加しました。結果は、次のとおりです。
ありがとう、
サヤン
memory-leaks - dgemm_のメモリリーク
私は現在、blasルーチンへの多数の呼び出しを含むアプリケーションに取り組んでいます。dgemm呼び出しでバイトが失われていることを発見した、メモリリークを定期的にチェックしています。呼び出しは次のようになります。
A、B、およびCは、サイズn*nのダブルフィールドです。valgrindの出力は次のとおりです。
マトリックスの寸法を確認しました。期待通りです。dgemm_呼び出しがどのようにそのようなリークを引き起こす可能性があるのかわかりません。違法な書き込みや読み取りを理解できました。しかし、dgemm_がどのようにリークを引き起こす可能性があるのかわかりません。
mex - mex ファイルで CLAPACK、BLAS、または LAPACK を使用するにはどうすればよいですか?
逆行列を取るなどの単純な線形演算を実行できる MATLAB で MEX ファイルを作成するのに問題があります。Visual Studio 2010 を使用して逆行列を取得し、MEX ファイルを正常に作成できたので、これら 2 つの概念をまとめることだけが問題です。MathWorks サイトから入手した MEX サンプル コードをコンパイルしようとしましたが、うまくいきませんでした。
これが私が試したことです、
MathWorks から取得したファイルを .c 拡張子として保存 (名前を変更) し、MATLAB でコンパイルしようとしました。
ライブラリ C:\Users\CIT\AppData\Local\Temp\mex_bKHjrl\templib.x およびオブジェクト C:\Users\CIT\AppData\Local\Temp\mex_bKHjrl\templib.exp eko1.obj の作成: エラー LNK2019: 未解決の外部シンボル関数 mexFunction eko1.mexw64 で参照されている dgesv: 致命的なエラー LNK1120: 1 つの未解決の外部
また、.cpp ファイルとしてコンパイルしようとしましたが、memcpy 関数を認識しなかったためにエラーが発生しました。
これらが機能しなかったので、LAPACK ライブラリのサブルーチン dgetrf と dgetri を使用する独自のプログラムを作成しましたが、エラーが発生しました。
c:\users\cit\documents\matlab\f2c.h(16): エラー C2371: 'complex': 再定義; 異なる基本型 C:\Program Files\MATLAB\R2011b\extern\include\lapack.h(39) : 「complex」の宣言を参照 c:\users\cit\documents\matlab\f2c.h(17) : エラー C2371 : 'doublecomplex' : 再定義; 異なる基本型 C:\Program Files\MATLAB\R2011b\extern\include\lapack.h(40) : 'doublecomplex' の宣言を参照 eko2.cpp(29) : エラー C2057: 期待される定数式 eko2.cpp(29) :エラー C2466: 定数サイズ 0 の配列を割り当てることができません。 'ptrdiff_t *' へ 指す型は無関係です。変換には reinterpret_cast が必要です。C スタイルのキャストまたは関数スタイルのキャスト eko2.cpp(34): エラー C2664: 'dgetri': パラメーター 1 を 'integer *' から 'ptrdiff_t *' に変換できません。変換には reinterpret_cast、C スタイルのキャスト、または関数スタイルのキャストが必要です
皆さんが私に与えてくれるどんな助けも非常に高く評価されます
前もって感謝します。
fortran - Fortran 関数を呼び出すにはどうすればよいですか?
Fortran 関数を呼び出すにはどうすればよいですか?
DLANSYを呼び出そうとしていますが、誤って 0 が返されます。以下のコードとプログラム出力を参照してください。
そして、それが印刷するもの:
入力配列は適切なサイズです。
何が起こっている?
linker - Armadillo + BLAS + LAPACK:リンクエラー?
Armadillo 2.4.2に付属のexample1.cppをコンパイルしようとすると、次のリンクエラーが発生し続けます。
誰かが助けることができますか?手動でインストールしました
- BLASの最新バージョン
- lapack-3.4.0
- ブースト-1.48.0
- ATLASの最新バージョン
MacBookPro7,1モデルでUbuntu11.04を使用しています
python - NumPy と SciPy で BLAS/LAPACK リンケージを確認するには?
このウォークスルーに基づいて、多かれ少なかれblasとlapackに基づいてnumpy/scipy環境を構築しています。
完了したら、numpy/scipy 関数が以前に構築された blas/lapack 機能を実際に使用していることを確認するにはどうすればよいですか?
performance - 読み取りまたは書き込みのいずれかのために1つのメモリアクセスをストライドすることを好むべきですか?
ストライドワン方式でメモリにアクセスすることがパフォーマンスに最適であることはよく知られています。
状況で
- 読み取りのためにメモリの1つの領域にアクセスする必要があります。
- 私は書くために別の地域にアクセスしなければなりません、そして
- 私はストライドワン方式で2つの地域のうちの1つにしかアクセスできません。
ストライド1を読むか、ストライド1を書くかを選択する必要がありますか?
単純で具体的な例の1つは、のようなBLASのようなコピーと順列の操作ですy := P x
。順列行列P
は、いくつかの順列ベクトルによって完全に定義されq(i)
ます。対応する逆順列ベクトルがありqinv(i)
ます。前者がストライド1から読み取り、後者がストライド1に書き込むy[qinv(i)] = x[i]
場合に、必要なループをコーディングできます。y[i]=x[q(i)]
x
y
理想的には、常に両方の可能性をコーディングし、代表的な条件下でそれらをプロファイリングし、より高速なバージョンを選択することができます。1つのバージョンしかコーディングできないと仮定します。最新のメモリアーキテクチャの動作に基づいて、どのアクセスパターンが常に高速になると予想しますか?スレッド環境で作業すると、応答が変わりますか?
cuda - cublasInit() が NOT_INITIALIZED ステータスを返すのはいつですか?
cublas の初期化中にエラーが発生しました。つまり、必要な CUBLAS_STATUS_SUCCESSではありません。
返されたステータスを確認すると、返されたステータスがCUBLAS_STATUS_NOT_INITIALIZEDであることがわかりました。これは、その関数の可能な戻り値としてリストされていません。
何がその動作を引き起こしたのか、誰かが考えを持っていますか?
cuda - GPU の LAPACK 関数に相当する BLAS
LAPACKには、対角化のためのこの関数があります
*
その GPU 実装を探しています。この関数が CUDA (または OpenCL) で既に実装されているかどうかを調べようとしていますが、オープン ソースではない CULA しか見つかりませんでした。
したがって、サイド CUBLAS が存在する場合、このサブルーチンに相当する BLAS または CUBLAS が利用可能かどうかをどのように知ることができるのだろうか。