问题标签 [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 程序,我是否能够用对 cuBLAS 的调用替换对 BLAS 的调用?或者更好地实现一种让用户在运行时选择的机制?
如果我将 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%)。返回的主要对象是一个矩阵“qr”,它包含在上三角矩阵 R(即R=qr[upper.tri(qr)]
)中。到目前为止,一切都很好。qr 的下三角形部分包含“紧凑形式”的 Q。可以使用 qr 从 qr 分解中提取qr.Q()
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-0.9.10)。我按照 README.txt 文件中的手动安装说明进行操作。我修改了 config.hpp 文件以表明我安装了 LAPACK 和 BLAS。然后我尝试编译示例。我成功编译并运行了 example1.cpp,但是当我尝试运行 example2.cpp 时,它报告我需要安装 ATLAS 或 LAPACK。我将#include 标头添加到example2.cpp 并使用-framework Accelerate 标志在makefile 中进行编译。但是,它仍然无法正常工作。是什么赋予了?我应该默认使用 Xcode 安装 LAPACK 和 BLAS,不是吗?这里的任何帮助都会很棒。谢谢谢谢!
iphone - iPhone OS (iOS 4) 上的 Bignum、线性代数和数字信号处理
我想我在 iPhone OS (iOS 4) 中找到了一些亮点。
我发现Accelerate Framework提供了 128 位、256 位、512 位和 1024 位整数数据类型。还有 Apple 的基本线性代数子程序 (BLAS) 的实现、Apple 的 LAPACK(线性代数包)和数字信号处理 (DSP) 例程的实现。
我很兴奋,因为据我所知,BLAS 和 LAPACK 是最好的(也是最著名的)库。(如果您从未听说过它们的名字,只需谷歌它们,您就会明白。)它们可以让您求解联立线性方程(即向量/矩阵表示法中的 A x = b),进行快速矩阵乘法等等。
我很确定这些库在基于 PowerPC 和 Intel 的 Mac 上都可用。但是,当我在 Xcode 中查找“iOS4 中的新增功能”文档时,它说数据类型“不受任何架构支持”。当我比较Mac OS X的vecLib 参考和 iOS的 vecLlib 参考时,我还发现 iOS 版本中缺少功能。
我的问题是:
是否有人使用这些库编译了任何程序(bignum 是我的主要兴趣领域)并在真正的 iPhone 设备上成功运行它们?(可以证明他们在库上的实际经验的回答者将更加感激。)
以下是参考库的链接:
加速框架(iOS 参考库)
vecLib 参考(Mac OS X 参考库)
vecLib 参考(iOS 参考库)
以下是 BLAS 和 LAPACK 的官方 FAQ:
BLAS FAQ
LAPACK FAQ
c - 将 BLAS 中的三个矩阵相乘,中间一个是对角线
A
是一个MxK
矩阵,B
是一个大小为 的向量K
,C
是一个KxN
矩阵。我应该使用哪组 BLAS 运算符来计算下面的矩阵?
实现这一点的一种方法是使用三个 for 循环,如下所示
为了获得更好的速度效率,是否真的值得在 BLAS 中实现这一点?
fortran - 在 BLAS 中转置还是先自己做?
我在 Fortran 77 中整理了一些科学代码,我正在争论什么会更快。
基本上,我有一个 MxN 矩阵,我们称它为 A。M 大于 N。稍后在代码中,我需要将 transpose(A) 乘以一堆向量。
我的问题是,拿 A 自己转置并存储它会更快,还是当我调用 BLAS 时,只给它转置标志?
谢谢!-帕特里克
c - cblas_dgemm - 仅在 (beta) 是二的幂时有效
我完全被难住了。我有一个用 c 编写的相当大的递归程序,它调用 cblas_dgemm()。结果由正常工作的程序独立验证。
在使用随机矩阵和所有可能的参数组合的重复测试中,程序仅在 abs(beta) = 2^n (1,2,4,8..) 时给出正确答案。任何值都适用于 alpha。beta 的任何其他正/负、奇/偶值在 10-30% 的时间内给出正确答案。
我使用的是 Ubuntu 10.04、GCC 4.4.x,我尝试过系统安装的 blas/cblas/atlas 以及手动编译的 atlas。
任何提示或建议将不胜感激。我对潜伏在这个网站上的非常慷慨(和聪明)的人感到惊讶。
先谢谢大家了
拉斯
c - cblas_dgemm - 正确的参数:错误信息不正确
我正在尝试计算:C = 1*(A*B') + 0*C
使用 cblas_dgemm()。据我所知,参数是正确的。错误消息本身没有意义:
但是,ldb = k = 3!这是所有三个矩阵和参数的详细输出。
我确定我犯了一个愚蠢的错误,我只是无法发现它。任何帮助将不胜感激。
非常感谢,
拉斯