问题标签 [cublas]

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 投票
1 回答
459 浏览

c++ - 您可以使用 cublasDdot() 在非 GPU 内存中使用 blas 操作吗?

所以我有一个执行矩阵乘法的代码,但问题是当我使用库 -lcublas 和编译器 nvcc 时它只返回零;但是,当我使用编译器 g++ 和库 -lblas 时,只需对函数名称进行一些调整,代码就运行良好。

您可以使用 -lcublas 库从不在 GPU 上的内存中执行矩阵乘法吗?

以下是返回 0 的代码:

我使用以下命令编译它:nvcc program -lcublas

但是,这确实有效:

编译g++ program -lblas

0 投票
1 回答
344 浏览

cuda - 使用 CUDA 的矩阵乘法的特例

我正在寻找一些专用于典型密集矩阵乘法的特殊函数(CUDA),例如 A*B,其中 A 的大小为 6*n,B 的大小为 n*6,n 非常大(n=2 ^24)。我已经使用 CUBLAS 和其他一些库来测试这个示例,在 CUBLAS 中,对于这个示例,我们使用 6*6=36 个线程,这与 GPU 的总并行度相差甚远,所以我将 A 和 B 拆分为子矩阵(向量)然后对它们中的每一个实现点积函数,性能得到了很好的提升。问题是,在这种情况下,我们需要启动 36 个 CUDA 内核,并且在它们之间有很多相同的数据足迹(相同的数据已经从 GPU 的全局内存中访问过多次)。所以我问这种问题是否存在任何解决方案。

0 投票
2 回答
9882 浏览

cuda - 使用 CUDA 进行逐元素向量乘法

我已经在 CUDA 中构建了一个基本内核来执行两个复向量的元素向量向量乘法。内核代码插入在 ( multiplyElementwise) 下方。它工作正常,但由于我注意到其他看似简单的操作(如缩放矢量)在 CUBLAS 或 CULA 等库中进行了优化,我想知道是否可以通过库调用替换我的代码?令我惊讶的是,CUBLAS 和 CULA 都没有这个选项,我试图通过使其中一个向量成为对角矩阵向量乘积的对角线来伪造它,但结果真的很慢。

作为最后的手段,我尝试自己优化这段代码(见multiplyElementwiseFast下文),将两个向量加载到共享内存中,然后从那里开始工作,但这比我的原始代码慢。

所以我的问题:

  1. 是否有可以进行元素向量-向量乘法的库?
  2. 如果没有,我可以加速我的代码(multiplyElementwise)吗?

任何帮助将不胜感激!

0 投票
1 回答
416 浏览

cuda - 如何在 Cublas 中使用常量内存?

当我将 cublasIsamax 与常规内存分配器一起使用时 - 它工作正常。

但是,如果尝试使用常量内存,它会失败并出现未知错误 N14。怎么了?复制到常量内存成功,但执行失败。

0 投票
1 回答
2357 浏览

algorithm - 矩阵逆使用线性系统求解器通过 cublas、cublasCreate 异常或其他

我正在尝试通过 cublas CUDA 库使用线性方程求解器对矩阵求逆。

原方程的形式为:

我想执行 LU 分解,收到以下信息:

这是一个很好的例子,可以展示我正在尝试做的事情:

http://www.youtube.com/watch?v=dza5JTvMpzk

为了便于讨论,假设我已经对 A 进行了 LU 分解。(A = LU)。我试图在两步系列中找到逆:

现在我不知道我在这里做错了什么。可能有两个假设,要么我没有正确使用 cublas,要么 cublas 无缘无故抛出异常。

见附上我的代码,最后有Matlab代码:

Matlab 代码 - 完美运行:

MATLAB 输出

上矩阵 =

下矩阵 =

身份矩阵 =

y =

y =

上矩阵 =

下矩阵 =

身份矩阵 =

y =

上矩阵 =

下矩阵 =

身份矩阵 =

y =

y =

我不知道我在这里做错了什么,我怀疑 cublasCreate 操作。每次我点击命令:

stat 和 handle 变量都是有效的。

但是 VS10 输出了几个错误信息,具体如下:

0x 处的第一次机会异常... 内存位置 0x 处的 Microsoft C++ 异常 cudaError_enum ...

有人可能会说这是一个内部 cublas 错误消息,由库本身处理。

0 投票
1 回答
286 浏览

matlab - 如何在 Thrust 或 Cublas 中找到两个矩阵 W 和 X 之间的行到所有行的距离矩阵?

我有以下matlab代码;

其中 X 是 nxm 而 W 是 kxm 矩阵。一个是数据,另一个是权重矩阵。我用给定的代码找到距离矩阵 D。我正在观看此操作的有效 Cublas 或 Thrust 实施。我D = -2*(X * C.');通过 cublas 继承了这条线,但作为新手,剩余部分仍然是一个问题?任何人都可以提供片段或提供建议吗?

到目前为止,这是我所拥有的: 编辑:我添加了更多代码,并且我需要 bsxfun 之类的求和实现。将向量 V 与所有列相加,并将 V2 与所有行相加作为最后一步。

0 投票
1 回答
355 浏览

matlab - 通过 CUBLAS 或 THRUST 在 CUDA 上编程 bsxfun?

我有一个包含 nx1 个项目的向量 V 和一个包含 nxm 个项目的矩阵 M。我想用 CUDA 将 V 与 M 的所有列相加。THRUST 或 CUBLAS 中是否有任何方法可以帮助我解决问题?

0 投票
3 回答
5015 浏览

cuda - Converting Octave to Use CuBLAS

I'd like to convert Octave to use CuBLAS for matrix multiplication. This video seems to indicate this is as simple as typing 28 characters:

Using CUDA Library to Accelerate Applications

In practice it's a bit more complex than this. Does anyone know what additional work must be done to make the modifications made in this video compile?

UPDATE

Here's the method I'm trying

in dMatrix.cc add

#include <cublas.h>

in dMatrix.cc change all occurences of (preserving case)

dgemm

to

cublas_dgemm

in my build terminal set

the error I receive is:

0 投票
1 回答
2745 浏览

cuda - 未定义对符号“cudaStreamCreate”的引用

使用 CMake 构建我的项目我收到以下链接器错误并且不知道如何解决它。使用make VERBOSE=1显示生成的命令对我来说看起来不错:

和链接器错误:

0 投票
1 回答
1149 浏览

cuda - 如何配置 cublas{t}symm() 函数参数

此函数使用 CUDA 执行对称矩阵-矩阵乘法。虽然,我成功使用了非对称版本“cublas{t}gemm()”,但我无法正确使用“cublas{t}symm()”函数。

我知道 CUBLAS 库使用以列为主的矩阵存储。我正在使用行主要 C/C++ 矩阵,我知道如何通过替换输入矩阵等来解决“cublas{t}gemm()”的这个问题。但是,我无法解决对称情况。问题是即使我使用以列为主的矩阵存储,我也会发现意想不到的结果。矩阵包含复数浮点数 (cuComplex)。我假设我有行主矩阵。这是代码和输出:

我想我有以下乘法矩阵:

一个=

乙 =

并期望获得

A*B =

但是得到的OUTPUT如下:

我在这段代码中缺少什么?可能“cublasCsymm”函数的参数是错误的。

谢谢, 卡根