问题标签 [cusolver]

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

c++ - 用 C++ 解决稀疏线性系统的最佳方法 - GPU 可能吗?

我目前正在做一个我们需要解决的项目

|Ax - b|^2.

在这种情况下,A是一个非常稀疏的矩阵A'A,每行最多有 5 个非零元素。

我们正在处理图像,其中 NA'ANxN像素数。在这种情况下N = 76800。我们计划去RGB然后维度将是3Nx3N

在 matlab 中求解(A'A)\(A'b)大约需要 0.15 秒,使用双精度。

我现在已经对Eigens稀疏求解器进行了一些实验。我努力了:

和一些不同的顺序。迄今为止最好的是

这需要0.35 - 0.5使用AMDOrdering.

例如,当我使用ConjugateGradient它时,它大致需要6 s0用作初始化。

解决问题的代码是:

这是我第一次在 C++ 及其求解器中使用稀疏矩阵。对于这个项目,速度至关重要,以下0.1 s是最低要求。

我想得到一些反馈,这将是最好的策略。例如,一个应该能够使用SuiteSparseand OpenMPin Eigen。你对这些类型的问题有什么经验?例如,有没有一种提取结构的方法?真的应该conjugateGradient那么慢吗?

编辑:

感谢您提出宝贵意见!今晚我在 Nvidia 上阅读了一些关于 cuSparse 的内容。它似乎能够进行分解甚至解决系统。特别是似乎可以重用模式等等。问题是这能有多快,可能的开销是多少?

鉴于我的矩阵 A 中的数据量与图像中的数据量相同,内存复制不应该是这样的问题。几年前我做了实时 3D 重建软件,然后你复制每一帧的数据,一个慢版本仍然以超过 50 Hz 的速度运行。那么,如果因式分解要快得多,那么它可能会加速吗?特别是该项目的其余部分将在 GPU 上,所以如果可以直接在那里解决它并保留解决方案,我想这不是缺点。

Cuda 领域发生了很多事情,而我并不是最新的。

这是我找到的两个链接:基​​准?, MatlabGPU

0 投票
1 回答
395 浏览

cuda - Fortran 上的 CuSolver 稀疏接口

我正在尝试编写一个程序来将 cusolverSp 连接到 fortran。尽管我对用 C 编写 cuda 并不陌生,但我不确定如何在 fortran 上使用它。

以下是我的代码:

我构建期间的当前错误是

错误 S0188:参数号 # 到 cusolverspcreate/etc:类型不匹配

我不知道如何解决它。该程序是对工作 cusolverDn 的修改,我确信这意味着我犯了很多错误,因为我可以参考的接口示例并不多。

0 投票
1 回答
836 浏览

cuda - 使用工具包中提供的库编译我的 CUDA 程序

我编写了简单的 CUDA c++ 程序来模拟二维矩阵上的扩散。当我尝试使用 Toolkit 中提供的一些库时遇到了麻烦。我想用 cuBlas 的东西替换我效率极低的矩阵转置内核,也想用求解线性系统的 cuSolvers 实现替换 implCU。麻烦的是我不知道如何使用这些函数或编译它们。它与 Nvidia 提供的示例代码上的 Makefiles 一起工作。如果有人能帮助我,最好向我展示在编写 .cu 文件时应该如何使用这些功能,我将不胜感激。

这是代码: http: //pastebin.com/UKhJZQBz

我在 Ubuntu 16.04 上,并且按照官方指南中的说明导出了 PATH 变量(因此它们包括 /usr/local/cuda-8.0/bin)。

这是来自的输出nvcc -I /usr/local/cuda-8.0/samples/common/inc/ difusion2d.cu

0 投票
1 回答
146 浏览

cuda - 什么版本的 CUDA 引入了 cuSolverRF?

我可以使用 CUDA 7.5 的机器,但我认为它缺少 cuSolverRF 库。

当前标记为版本 DU-06709-001_v8.0 的文档说“此外,cuSolver 提供了一个新的重构库,可用于解决具有共享稀疏模式的矩阵序列”大概是 cuSolverRF 库,表明它是在 8.0 中引入的,但我找不到任何确认这一点的发行说明。

0 投票
1 回答
382 浏览

cuda - 正确使用 cudaFortran cuSolver 函数

我目前正在将一些 Fortran 代码迁移到 cudaFortran。具体来说,该任务涉及对海量矩阵进行谱分析,以便将它们对角化。这是我到目前为止编写的代码

编译和mem-check输出如下:

看起来我实际上并没有cusolverDnDsyevd正确调用函数,很可能我没有使用正确类型的变量。但是由于我在编程方面是半文盲,并且我必须遵循的唯一示例是用 C 编写的(使用那些花哨的 void** 东西)我不知道什么是正确的。

编辑:完整输出deviceQuery

0 投票
1 回答
192 浏览

tensorflow - 你可以在 tensorflow 中使用来自 cuSOLVER 的 GPU QR 分解算法吗?

我可以看到它在https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/cuda_solvers.h (Geqrf) 中被引用,但是https://github.com/tensorflow上的 tensorflow QR op /tensorflow/blob/master/tensorflow/core/kernels/qr_op_float.cc未注册用于 GPU 使用。我可以使用 Geqrf 以某种方式制作自己的操作,还是有其他方法?

0 投票
1 回答
560 浏览

cuda - cuSolverDN 或其他 CUDA 库是否有用于密集矩阵的批处理版本的 QR 分解来求解 A*x = b?

我正在尝试解决 A*x = b 其中 A 具有复杂值且密集的问题。

我使用 cuSolverDN 库中的 cusolverDnCgeqrf() 方法对一组线性方程组进行 QR 分解。但是,我想多次这样做以加快处理速度。

这种方法有“批处理”版本吗?或者我可以使用另一个 CUDA 库吗?

0 投票
1 回答
98 浏览

matrix - cusparseSdense2csr 转换

我正在尝试使用 cusparseSdense2csr API 将密集矩阵转换为稀疏矩阵,密集矩阵如下:

预期的结果稀疏矩阵应该是:

但我得到的输出是

为什么会这样?背后的原因是什么?

0 投票
1 回答
379 浏览

cuda - cuSOLVER 自动并行计算许多矩阵?

我必须进行相同的计算(例如,获取 的特征值A1, A2, ...on many(>10^15)矩阵,所以我希望尽可能多地使用线程。

但我找不到说明线程数的 cuBLAS 或 cuSOLVER 代码。如果我使用 for 循环和 cuSOLVER 函数编写代码,cuSOLVER 会自动分配资源和并行计算吗?
或者是否有任何 cuSOLVER 或 cuBLAS API 可以控制线程数和并行化函数?……

0 投票
1 回答
452 浏览

matrix - What is the most efficient way to compute the inverse of a general matrix using cuSolver?

I have in mind to to use getrf and getrs from the cuSolver package and to solve AB=X with B=I.

  • Is this the most best way to solve this problem?

  • If so, what is the best way to create the col-major identity matrix B in device memory? It can be done trivially using a for loop but this would 1. take up a lot of memory and 2. be quite slow. Is there a faster way?

Note that cuSolver does not provide getri unfortunately. Therefore I must to use getrs.