問題タブ [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.
boost - BLASとCUBLAS
NVIDIA の cuBLAS ライブラリについて疑問に思っています。誰もそれを経験したことがありますか?たとえば、BLAS を使用して C プログラムを作成した場合、BLAS の呼び出しを cuBLAS の呼び出しに置き換えることができますか? または、ユーザーが実行時に選択できるメカニズムを実装する方がよいでしょうか?
Boost が提供する BLAS ライブラリを C++ で使用するとどうなりますか?
c - LAPACK/BLAS ライブラリのリンク
背景:
C と Fortran 77 の混合で書かれたプロジェクトに取り組んでおり、LAPACK/BLAS ライブラリをプロジェクトにリンクする必要があります (すべて Linux 環境内)。問題の LAPACK は、netlib.org のバージョン 3.2.1 (BLAS を含む) です。ライブラリは、最上位の Makefile (make lapacklib および make blaslib) を使用してコンパイルされました。
問題:
リンク中に、LAPACK ルーチンから呼び出された特定の (すべてではない) BLAS ルーチンが未定義であるというエラー メッセージが表示されました。これは頭を悩ませましたが、(Makefileで)リンクされるライブラリの出現順序が変更されたときに、問題は最終的に解決されました。
コード:
次の (a) ではエラーが発生しますが、(b) では発生しません。リンクは (c) によって実行されます。
(a) LIBS = $(LAPACK)/blas_LINUX.a $(LAPACK)/lapack_LINUX.a
(b) LIBS = $(LAPACK)/lapack_LINUX.a $(LAPACK)/blas_LINUX.a
(c) gcc -Wall -O -o $@ project.o project.a $(LIBS)
質問:
一部のルーチンのみの未定義の参照の理由は何ですか?また、出現順序が関連するのは何ですか?
r - qr.Q() に惑わされた: 「コンパクトな」形式の正規直交行列とは?
Rには、qr()
LINPACKまたはLAPACKのいずれかを使用してQR分解を実行する関数があります(私の経験では、後者は5%高速です)。返される主なオブジェクトは、上三角行列 R (つまりR=qr[upper.tri(qr)]
) に含まれる行列 "qr" です。ここまでは順調ですね。qr の下三角部分には、Q が「コンパクトな形で」含まれています。を使用して、qr 分解から Q を抽出できqr.Q()
ます。の逆数を求めたいqr.Q()
. つまり、私は Q と R を持っていて、それらを「qr」オブジェクトに入れたいと考えています。R は自明ですが、Q はそうではありません。目標はそれに適用することqr.solve()
であり、大規模なシステムよりもはるかに高速solve()
です。
r - BLAS DGEMV エラー コード -6 とはどういう意味ですか?
R を介して実行されるが、BLAS ルーチンを使用するプログラムがあります。約 8 回正しく実行されますが、エラーがスローされます。
BLAS/LAPACK ルーチン 'DGEMV' でエラー コード -6 が返されました
このエラー コードは何を意味しますか?
c++ - Mac OS X への C++ Armadillo ライブラリのインストール
Mac Pro で C++ armadillo ライブラリ (armadillo-0.9.10) を使用しようとしています。README.txt ファイルの手動インストール手順に従います。LAPACK と BLAS がインストールされていることを示すために、config.hpp ファイルを変更しました。次に、例をコンパイルしてみます。example1.cpp を正常にコンパイルして実行しましたが、example2.cpp を実行しようとすると、ATLAS または LAPACK をインストールする必要があると報告されます。#include ヘッダーを example2.cpp に追加し、-framework Accelerate フラグを使用して makefile でコンパイルしました。ただし、まだ機能していません。何を与える?Xcode でデフォルトで LAPACK と BLAS をインストールする必要がありますか? ここでの助けは素晴らしいでしょう。ありがとうありがとう!
iphone - Bignum、線形代数、iPhone OSでのデジタル信号処理(iOS 4)
iPhone OS(iOS 4)でいくつかの宝石を見つけたと思います。Accelerate Framework
によって提供される128ビット、256ビット、512ビット、および1024ビットの整数データ型があることがわかりました。AppleによるBasicLinearAlgebra Subprograms(BLAS)の実装、AppleによるLAPACK(Linear Algebra PACKage)の実装、およびDigital Signal Processing(DSP)ルーチンもあります。
私の知る限り、BLASとLAPACKは最高の(そして最も有名な)ライブラリであるため、私はとても興奮しています。(名前を聞いたことがない場合は、Googleで検索すれば理解できます。)連立一次方程式(つまり、ベクトル/行列表記のA x = b )を解いたり、高速行列乗算を実行したりできます。
ライブラリはPowerPCベースのMacとIntelベースのMacの両方で利用できると確信しています。ただし、Xcodeで「iOS4の新機能」のドキュメントを調べると、データ型は「どのアーキテクチャでもサポートされていない」と表示されます。Mac OS X用のvecLibリファレンスとiOS用のvecLlibリファレンスを比較すると、iOSバージョンでは関数が欠落していることもわかりました。
私の質問は次
のとおりです。
誰かがこれらのライブラリを使用してプログラムをコンパイルし(bignumが私の主な関心領域です)、実際のiPhoneデバイスで正常に実行しましたか?(ライブラリで実際の経験を示すことができる回答者の方が高く評価されています。)
リファレンスライブラリへのリンクは次のとおりです
。AccelerateFramework(iOSリファレンスライブラリ)
vecLibリファレンス(Mac OS Xリファレンスライブラリ)
vecLibリファレンス(iOSリファレンスライブラリ)BLAS
およびLAPACKの公式FAQは次のとおりです。BLASFAQ LAPACK FAQ
c - BLASで3つの行列を乗算し、真ん中の行列を対角線にします
A
はMxK
行列、B
はサイズのベクトル、K
はC
行列KxN
です。以下の行列を計算するには、どのBLAS演算子のセットを使用する必要がありますか?
これを実装する1つの方法は、以下のような3つのforループを使用することです。
より良い速度効率を得るために、これをBLASに実装することは実際に価値がありますか?
fortran - BLAS で転置するか、最初に自分で転置しますか?
私は Fortran 77 でいくつかの科学的なコードをまとめており、何がより高速になるかについて議論しています。
基本的に、私は MxN 行列を持っています。それを A と呼びましょう。M は N よりも大きいです。コードの後半で、transpose(A) に一連のベクトルを掛ける必要があります。
私の質問は、A を取得し、それを自分で転置して保存する方が速いでしょうか、それとも BLAS を呼び出すときに転置フラグを付けるだけですか?
ありがとう!-パトリック
c - cblas_dgemm-(ベータ)が2の累乗である場合にのみ機能します
私は完全に困惑しています。私はcblas_dgemm()を呼び出すcで書かれたかなり大きな再帰プログラムを持っています。結果は、正しく動作するプログラムによって個別に検証されます。
ランダム行列と可能なすべてのパラメーターの組み合わせを使用した繰り返しテストでは、abs(beta)= 2 ^ n(1,2,4,8 ..)の場合にのみ、プログラムは正解を返します。任意の値がアルファに対して機能します。ベータのその他の正/負、奇数/偶数の値は、10〜30%の確率で正解を示します。
Ubuntu 10.04、GCC4.4.xを使用しています。システムにインストールされたblas/cblas / atlasと、手動でコンパイルされたatlasを試しました。
ヒントや提案をいただければ幸いです。私はこのサイトに潜んでいる素晴らしく寛大な(そして賢い)人々に驚いています。
よろしくお願いします。
ラス
c - cblas_dgemm - 正しいパラメーター: 誤ったエラー メッセージ
C = 1*(A*B') + 0*C
cblas_dgemm() を使用して計算しようとしています。私が知る限り、パラメータは正しいです。エラーメッセージ自体は意味がありません:
しかし、ldb = k = 3! 以下は、3 つすべてのマトリックスとパラメーターの詳細な出力です。
私はばかげた間違いを犯していると確信しています。私はそれを見つけることができません。どんな助けでも大歓迎です。
どうもありがとう、
ラス