问题标签 [magma]

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 回答
314 浏览

c - 如何使用 Fortran 接口调用包含用户定义类型的 C 函数

事实上,我想从 fortran 中调用岩浆。所以我添加了magma.lib并创建了一个接口来使用magma的C函数:

但是参数 uplo 是 C 代码中的用户定义类型(magma_uplo_t uplo):

magma_int_t = int,有谁知道如何为它创建接口?提前致谢

0 投票
1 回答
66 浏览

matrix - 从“magma_dgeqrf2_gpu”(这是一个通用矩阵)的结果中提取上三角矩阵而不传输到主机

我正在构建一个内核,其中使用 Magma 函数 magma_dgeqrf2_gpu 来执行 QR 分解。这会将上三角矩阵 R 输出到 GPU 设备上的通用矩阵 d_A 中。

在不将 d_A 传输回主机(因为我需要 GPU 进行进一步操作)的情况下,是否有一种 lib 方法可以将 d_A 减少或提取到设备上的上三角矩阵 R 中?

0 投票
1 回答
404 浏览

cuda - MAGMA:函数“magma_dgels_gpu”-> 错误“magma_trans_t”

我正在尝试通过 MAGMA 库的“magma_dgels_gpu()”函数解决最小二乘问题。我的 GPU 是“Tesla C2050 / C2075”,我已经安装了 MAGMA。

我正在尝试编译以下代码“testMagmaDGELS.cu”,但出现错误:

我编译如下:

nvcc -arch=sm_20 testMagmaDGELS.cu -o testMagmaDGELS -lcublas -I/opt/magma/1.7.0/openblas/gcc/include

我得到这些错误:

有人可以帮我吗?

0 投票
1 回答
51 浏览

gpu - 为 cuSolverSp 例程处理具有大动态范围的矩阵的特殊方法?

我有类似这个链接的矩阵:

https://www.dropbox.com/s/tte3rlfsrprgtt8/ExampleMatrix.txt?dl=0

此示例是一个 9x9 稀疏矩阵,其中元素的值在大小上存在显着差异。例如,最小元素的大小为 7.130249e-17,最大元素的大小为 1.944061e-07。

该矩阵是我需要求解的一组线性方程 Ax=b 中的 A 矩阵。在我的应用程序中 A 是 cuDoubleComplex 类型。

目前,我使用 magma_zgesv_batched (一次计算多个(当前 25 个),每个批次的 A 和 B 不同)执行此操作,它通过部分旋转和行交换进行 LU 分解。这有效并提供了与我试图加速的原始代码的输出相匹配的正确输出。我有信心这行得通。

然而,在“现实生活”中,我需要解决的矩阵会更大,~2000*2000 并且 magma_zgesv_batched 存在问题,因为它被设计用于小矩阵。它非常慢,并且会警告使用本机版本。我所做的搜索表明人们已经使用 magma_zgesv_batched 达到了 1024*1024 的矩阵大小,但我自己还没有对此进行测试。

由于矩阵 A 是稀疏的(并且随着大小的增加将变得更加稀疏),我研究了使用 cuSovlerSp 例程,特别是 cusolverSpZcsrlsvluHost(具有部分旋转的传统 LU),因为它与 magma_zgesv_batched 最相似。

但是,这并没有像 magma_zgesv_batched 一样给出正确的结果。但同样,我有信心我已经用 csr 格式等正确地编码了问题。我已经测试了一个虚拟矩阵,其“正常”(1 阶)数字与上面的 9*9 矩阵位于相同的位置,并运行等效的 Matlab A \b 具有相同的(密集)虚拟 A 和 b 这确实为虚拟数据提供与 cusolverSpZcsrlsvluHost 相同的输出。所以我确信这是我在大动态范围问题中所拥有的特定数据的问题。

所以我的问题是问是否有其他人在使用具有大动态范围的矩阵元素之前遇到过这样的问题,如果是这样,如何处理它们?有没有可以应用于矩阵的技巧/缩放?

magma_zgesv_batched 和 cusolverSp 例程有什么区别?他们是否以不同的方式进行矩阵求逆等?

我是否应该坚持使用 magma_zgesv_batched 来减少尺寸问题,因为我知道这可行?

非常感谢任何建议!

谢谢

0 投票
1 回答
222 浏览

c - cuda magma 矩阵-矩阵加法内核

我尝试使用与 magmablas_sgeadd_q 内核类似的格式,但是我没有得到正确的输出,而且每次运行它时,我都会得到不同的输出。我使用的代码如下:

我得到的输出:

4 行 2 列的矩阵加法 将输入数据从主机内存复制到 CUDA 设备 CUDA 内核启动 4 块 2 线程 将输出数据从 CUDA 设备复制到主机内存 A为 0.000000,B 为 0.364784,C 为 0.364784 A IS 0.000000,B为0.952230,C为0.9522230 A IS 0.000000,B IS 0.000000,C IS 0.000000 A IS 0.000000,B IS 0.000000,B IS 0.000000,C IS 0.000000 A IS 0.840188,B IS 0.840188,B IS 0.394383,C IS 0.394383,C IS 1.234571 A IS 0.78830999,B IS 0.7883099,BB 0.798440,C 是 1.581539 A是 0.911647,B 是 0.197551,C 是 1.109199 A是 0.335223,B 是 0.768230,C 是 1.103452

矩阵 A

0.840188 0.783099 0.911647 0.335223 0.277775 0.477397 0.364784 0.952230

矩阵 B

0.394383 0.798440 0.197551 0.768230 0.553970 0.628871 0.000000 0.000000

矩阵 C

0.0000000.000000 0.0000000.000000 0.0000000.000000 0.0000000.000000

如果您发现代码有问题,请告诉我。

谢谢

0 投票
1 回答
212 浏览

c - Magma 2.0 错误:CUDA 驱动程序版本对于 CUDA 运行时版本不足

在运行程序以添加两个简单矩阵时,出现以下错误

CUDA 运行时错误:CUDA 驱动程序版本对于 interface_cuda/interface.cpp:547 的 magma_getdevice 中的 CUDA 运行时版本 (35) 不足 错误:magmablasGetQueue 需要首先调用 magma_init() 以实现 MAGMA v1 兼容性。

我检查了其他程序,如稀疏矩阵计算或特征值函数正在工作,但在添加两个矩阵时遇到问题。我还使用了错误提到的 magma_init() 。使用以下功能。

我正在使用带有 magma 2.0 的 Cuda 7.5 版本。

如果有人对错误有任何想法,请回答,这对我解决它真的很有帮助。

0 投票
0 回答
105 浏览

gpu - magma_dgetri 如何使用多个 GPU

我刚刚安装了岩浆,我注意到有些例程有_mgpu版本,而有些则没有。例如,对于 LU 逆,有 4 个函数:

没有_mgpuLU逆的函数,这些gpu函数中也没有相关的输入参数来表示要使用的GPU数量。这是否意味着没有'_mpu'后缀的功能不能使用多个GPU?如果答案是否定的,该怎么办?

这是文档的链接:http: //icl.cs.utk.edu/projectsfiles/magma/doxygen/group__magma__getri.html

非常感谢!

0 投票
1 回答
451 浏览

fortran - Running Magma library

I'm trying to run one of the examples given with the source. for the MAGMA library (http://icl.cs.utk.edu/magma/) on my GPU. I installed MAGMA through the arch user repository and after setting the paths correctly I can built it fine:

But when I run it I get:

This is the whole makefile: http://pastebin.com/dhrszsP4

How can I run the MAGMA examples?

0 投票
1 回答
25 浏览

blas - gpu上的matrix max a la matlab

我正在从 Matlab 移植一些代码以在 Nvidia GPU 上运行。我想不出一种方法来执行以下操作:

其中 A 和 B 是矩阵。换句话说,我需要用零替换矩阵中的负值。我知道如何编写一个内核函数,但如果可能的话,我想坚持使用 cuBLAS 或 magma 调用(以避免将 nvcc 添加到我的构建过程中)。

0 投票
1 回答
148 浏览

icc - 用 icc 和 MAGMAmic 编译找不到“复杂”的系统文件

我正在尝试使用 icc 编译器和 MAGMAmic 库编译源文件。但是我收到以下错误:

MAGMAmic 库已正确编译,我可以运行它进行测试。我查看了 testing_dgesv_mic.cpp 示例的编译方式并使用了相同的包含和链接,但是在我的情况下,我得到了上述错误。

为了获取英特尔编译器和库的环境变量,我在 .bashrc 文件中添加了以下内容:

有什么想法可能导致 icc 无法包含“复杂”文件?

文件复合体确实存在于“/opt/intel/compilers_and_libraries_2017.2.174/linux/compiler/include/complex”中

ICC版本是:

magmamic 版本是 magmamic-1.4.0

编辑:删除了不必要的代码注释 EDIT2:添加了版本信息。