问题标签 [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.

0 投票
0 回答
311 浏览

multithreading - 在 MacOS 10.6 和 10.7 上使用 LAPACK 3.3 及更高版本进行多线程

我正在尝试在 MAC 10.6 和 MAC 10.7 上使用 openMP 构建和运行多线程程序,该程序从多线程调用 zgelss 和 zgemm

我已经编译了 LAPACK 3.4 和 refBLAS

我用以下命令编译了我的程序

该程序的结果不正确,因为当我使用 Apple 提供的库编译程序时,它在 10.7 上运行良好,但在 10.6 上运行良好

(MAC 10.7 修改了 lapack 3.2.1)和(MAC 10.6 修改了 lapack 3.1.1)——我猜

任何人都可以解释 LAPACK 3.4 及其相应的 BLAS 是否是线程安全的,这可能是什么问题?

0 投票
3 回答
2126 浏览

c++ - 在一次操作中进行多个矩阵-矩阵乘法

我正在实现一个算法,它本质上是一系列矩阵-矩阵乘法,如下所示:

我的矩阵是非常小的 100x100 浮点数,但序列非常长,大约数十亿。

我尝试使用 CUBLAS 来进行矩阵乘法,但这很慢,但我确实注意到了一些有趣的事情。

将 100x100 与 100x100 矩阵相乘很慢,但将 1.000.000x100 与 100x100 相乘相对较快,这让我想到。如果我不是从左到右进行扫描,而是并行进行 10.000 次扫描。这应该很快,如果我在完成后乘以我的​​矩阵,我会得到相同的结果——只是更快。

M_1 ... M_n 在一组大约 100 个不同的矩阵中毫无价值,所以空间消耗并不是真正的问题,我需要做的就是在一次操作中进行多次乘法运算。

现在这是我的问题。我已经完成了一个矩阵-矩阵(sgemm)实现,灵感来自 nvidia 在他们的文档中展示的一个,但它的速度大约是 cublas 的 4 倍。有人知道 CUBLAS 是如何工作的吗?如果代码在某处可用?

0 投票
3 回答
2444 浏览

c - 使用 CUDA 缩放矩阵的行

在 GPU 上的某些计算中,我需要缩放矩阵中的行,以便给定行中的所有元素总和为 1。

在哪里

我需要alpha's 的向量和缩放矩阵,我想在尽可能少的 blas 调用中做到这一点。该代码将在 nvidia CUDA 硬件上运行。有谁知道任何聪明的方法来做到这一点?

0 投票
1 回答
600 浏览

math - MKL库中的BLAS sdot操作实现

我测试了 BLASsdot接口以进行单个精确浮点点操作。我发现英特尔 MKL 库的结果与http://netlib.org/blas/中给出的 BLAS fortran 代码的结果略有不同。MKL 看起来更准确。

我只是想知道 MKL 是否进行了任何优化?或者 MKL 如何实现它以使其更准确?

0 投票
3 回答
3194 浏览

blas - 使用 cblas 的点积很慢

我想计算乘积 A^T*A ( A 是 2000x1000 矩阵)。另外我只想解决上三角矩阵。在内部循环中,我必须解决两个向量的点积。

现在,问题来了。使用 cblas ddot() 并不比使用循环计算点积快。这怎么可能?(使用 Intel Core (TM)i7 CPU M620 @2,67GHz,1,92GB RAM)

0 投票
1 回答
84 浏览

c++ - batchedgemm 源代码?

我有一个特殊的问题。

我有一些使用 CUDA 4.1 在我的 macbook 上开发的研究代码,尤其是使用batchedgemm. 我现在必须在我从另一个机构借来的一组 gpu 上运行它。

我的问题是集群只安装了 CUDA 4.0,他们不愿意快速升级。

有谁知道我是否可以在某处获得 batchedgemm 的源代码并将其编译为在 4.0 下工作?

我已经为批量乘法编写了自己的内核,但它的执行速度比库中的慢大约 10 倍——我想站在伟人的肩膀上,而不是站在他们的脚趾上。

0 投票
5 回答
16765 浏览

matlab - libgfortran:未找到版本“GFORTRAN_1.4”

尝试在 MATLAB 中运行 mex 文件时出现以下错误:

任何想法如何解决这个问题?

更新:我发现“strings MATLAB/.../libgfortran.so.3 | grep GFORTRAN”输出 GFORTRAN_1.0。我试图在 MATLAB 中更改 libgfortran,但没有成功。不是我认为最好找到一个适用于 GFORTRAN_1.0 的合适的 libblas。

0 投票
2 回答
213 浏览

c++ - 导致段错误的按值传递变量的地址

我正在使用一些我无法编​​辑的遗留代码,这些代码最初是在 PowerPC 上编译和测试的。我正在尝试创建一个构建系统,它将为通用 linux 机器(Ubuntu 11.10 x64)构建它。

它有一个类似于 cblas 的自定义接口,它包装了 clapack(版本 3.2.1)中包含的通用 blas 库的 f2c 版本。即我在 linux 机器上从 clapack 源编译 liblapack、libblas 和 libf2c 并将其与以下示例代码链接:

mycblas_dscal只需调用 blas 库实现dscal_。但是,该库需要所有数据的指针,并且此包装器当前直接传递N,scale和的地址inc。这让我很害怕,因为它们是按值传递的并且通常是文字。

执行时mycblas_dscal通常什么都不做,即a没有改变或它seg。故障。使用更高的编译器优化(例如 gcc -O3)它只会分段。故障。

要测试 blas 库,以下代码可以正常工作:

我唯一的见解是与 seg 之后包装函数中按值传递变量的地址和持久性有关。编译器优化会使错误行为变得更糟。我知道的还不够多,无法进一步调查。有任何想法吗?

0 投票
4 回答
7952 浏览

r - Blas版本的R检测

有没有办法从 R 内部检测 R 使用的 BLAS 版本?我正在使用 Ubuntu,并且我安装了几个 BLAS 版本 - 从 R 的角度来看,我只是不知道哪个是“活动的”!

我知道http://r.789695.n4.nabble.com/is-Rs-own-BLAS-td911515.html布赖恩·里普利在 2006 年 6 月说这是不可能的 - 但事情发生了变化吗?

0 投票
1 回答
377 浏览

c - 使用 CUBLAS / CUSPARSE 操作将未初始化数组的元素设置为 0 是否安全?

例如,当累加不同矩阵向量乘法的结果时(即使只有一个累加元素,这也是您在 BLAS 中所做的事情),一个形式上从零向量开始。但是没有无开销的方法可以直接在 CUDA 设备内存上分配一个零数组(或者是否存在?),因此想到的解决方案是简单地采用任意数字的数组,而不是将其初始化为 0 , 将值传递给orbeta = 0.的第一次调用。毕竟,如果它有那个参数“为什么不使用它”。cublas<t>gemvcusparse<t>csrmv

这是

  • 一个好主意?或者情况β = 1 是否以这样的方式进行了优化,以提供整体更好的性能来将数组初始化为 0 然后使用调用cusparseDcsrmv(..., 1., zeroes_array)
  • 安全的?天真地,浮点作为 ℝ 元素的表示应该满足x ⋅ 0 = 0 ∀ x,但是这种天真的处理在处理浮点时当然通常是相当致命的。我很确定当数组先前用于具有相同数据类型的其他一些操作时,结果表现良好,但它对于新分配的设备内存的单元化块安全吗?

我主要对稀疏情况感兴趣,因为对于稠密矩阵,乘法的O ( n ² ) 复杂性使得不必过多考虑向量的O ( n ) 分配的性能。