问题标签 [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 投票
3 回答
11695 浏览

c - Purpose of LDA argument in BLAS dgemm?

The Fortran reference implementation documentation states:

However, given m and k shouldn't I be able to derive LDA? When is LDA permitted to be bigger than n (or k)?

0 投票
1 回答
1624 浏览

performance - CUBLAS dgemm 性能查询

这些是我在 4 个 GPU 上运行 cublas DGEMM 的结果,每个 GPU 使用 2 个流(Tesla M2050):

在此处输入图像描述

我已经测试了我的结果,它们没问题;与使用默认流的版本相比,我担心我得到的高 Gflops 值。我正在使用以下公式计算 Gflops:

Gflops = {2.0*10^-9*(N^3+N^2)}/elapsed_time_in_s

对于使用多个流的版本,我是否需要以任何方式修改此公式?

HtoD-ker-DtoH是主机到设备的数据传输、内核执行和设备到主机的数据传输所花费的时间,以秒为单位(这是上面公式的分母)。 Crosspost 到 Nvidia 论坛 - http://forums.nvidia.com/index.php?showtopic=219910&st=0#entry1350908

编辑:根据@talonmies 的评论,我cudaStreamSynchronize在计算时间之前添加了一个,结果如下:

在此处输入图像描述

谢谢,

萨彦

0 投票
1 回答
908 浏览

memory-leaks - dgemm_ 中的内存泄漏

我目前正在开发一个涉及大量调用 blas 例程的应用程序。定期检查我发现的内存泄漏,我在dgemm调用中丢失了字节。调用如下所示:

A、B 和 C 是大小为 n*n 的双字段。valgrind 输出为:

我检查了矩阵的尺寸。它们与预期的一样。我不明白 dgemm_ 调用如何造成这样的泄漏。我可以理解非法写入或读取。但我不明白 dgemm_ 如何导致泄漏。

0 投票
1 回答
1098 浏览

mex - 如何在 mex 文件中使用 CLAPACK、BLAS 或 LAPACK?

我在 MATLAB 中编写 MEX 文件时遇到问题,该文件可以执行简单的线性运算,例如求矩阵的逆。我已经成功地使用 Visual Studio 2010 对矩阵求逆,并成功创建了一个 MEX 文件,因此我唯一遇到的问题是将这两个概念放在一起。我试图编译从 MathWorks 站点获得的 MEX 示例代码,但没有成功。

这是我尝试过的,

  1. 将我从 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:未解析的外部符号dgesv 在函数 mexFunction eko1.mexw64 中引用:致命错误 LNK1120:1 未解决的外部

  2. 我也尝试将它编译为 .cpp 文件,但是由于它无法识别 memcpy 函数而发生错误。

  3. 由于这些不起作用,我编写了自己的程序,该程序使用了 LAPACK 库中的子例程 dgetrf 和 dgetri,但是发生了错误:

    c:\users\cit\documents\matlab\f2c.h(16):错误 C2371:“复杂”:重新定义;不同的基本类型 C:\Program Files\MATLAB\R2011b\extern\include\lapack.h(39) :参见“复杂”的声明 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 eko2.cpp(29) 的数组:错误 C2133:“ipiv”:未知大小 eko2.cpp(33):错误 C2664:“dgetrf”:无法从“整数 *”转换参数 1 to 'ptrdiff_t *' 指向的类型是不相关的;转换需要 reinterpret_cast,C-style cast 或 function-style cast eko2.cpp(34) : error C2664: 'dgetri' : cannot convert parameter 1 from 'integer *' to 'ptrdiff_t *' 指向的类型不相关;转换需要 reinterpret_cast、C-style cast 或 function-style cast

你们给我的任何帮助将不胜感激

提前致谢。

0 投票
1 回答
273 浏览

fortran - 我应该如何调用 Fortran 函数?

我应该如何调用 Fortran 函数?

我正在尝试调用DLANSY,但它错误地返回 0。请参阅下面的代码和程序输出。

它打印的内容:

在输入数组中具有适当的大小。

到底是怎么回事?

0 投票
3 回答
14746 浏览

linker - Armadillo + BLAS + LAPACK:链接错误?

当我尝试编译 Armadillo 2.4.2 附带的 example1.cpp 时,我不断收到以下链接错误:

有人可以帮忙吗?我手动安装

  • 最新版本的 BLAS
  • lapack-3.4.0
  • 升压1.48.0
  • 最新版本的 ATLAS

我在 MacBook Pro 7,1 型号上使用 Ubuntu 11.04

0 投票
5 回答
85094 浏览

python - 如何检查 NumPy 和 SciPy 中的 BLAS/LAPACK 链接?

我正在构建基于 blas 和 lapack 的 numpy/scipy 环境,或多或少基于演练。

完成后,如何检查我的 numpy/scipy 函数是否确实使用了先前构建的 blas/lapack 功能?

0 投票
2 回答
1185 浏览

performance - 我应该更喜欢跨一次内存访问来读取还是写入?

众所周知,以一种跨步方式访问内存最有利于性能。

在以下情况下

  • 我必须访问一个内存区域才能阅读,
  • 我必须访问另一个区域进行写作,并且
  • 我只能以一种大步的方式访问这两个区域中的一个,

我应该更喜欢阅读步幅一还是写步幅一?

一个简单而具体的示例是类似 BLAS 的复制和置换操作,例如y := P x. 置换矩阵P完全由某个置换向量定义q(i)。它有一个对应的逆置换向量qinv(i)。可以将所需的循环编码为y[qinv(i)] = x[i]前者y[i]=x[q(i)]x步幅一读取而后者写入y步幅一的位置。

理想情况下,人们总是可以对这两种可能性进行编码,在有代表性的条件下对其进行分析,然后选择更快的版本。假设您只能编写一个版本 - 根据现代内存架构的行为,您总是期望哪种访问模式更快?在线程环境中工作会改变你的反应吗?

0 投票
1 回答
5105 浏览

cuda - cublasInit() 何时返回 NOT_INITIALIZED 状态?

在我的 cublas 初始化期间,我收到一个错误,即不是想要的CUBLAS_STATUS_SUCCESS

检查返回的状态,我发现返回的状态是CUBLAS_STATUS_NOT_INITIALIZED,它没有被列为该函数的可能返回。

有谁知道是什么导致了这种行为?

0 投票
2 回答
4906 浏览

cuda - BLAS 等效于 GPU 的 LAPACK 函数

在 LAPACK 中有这个函数用于对角化

*

我正在寻找它的 GPU 实现。我正在尝试查找此功能是否已在 CUDA(或 OpenCL)中实现,但只找到了 CULA,它不是开源的。

因此,CUBLAS 存在,我想知道我怎么知道这个子例程的 BLAS 或 CUBLAS 等价物是否可用。