问题标签 [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 回答
832 浏览

cuda - 使用 CUDA 的 cusolverSpDcsrlsvlu 或 QR 方法

我已经搜索了整个世界,但无法解决这个问题!“cusolver test.exe 中 0x00007FFF3AD3D430 (cusolver64_70.dll) 处未处理的异常:0xC0000005:访问冲突读取位置 0x0000000400960004。” 我想使用最小二乘求解器或 Qr 方法求解 Ax=B .... 我的代码编译没有错误,但后来我得到了这个错误!代码在此代码的最后一行中断!我的代码是

0 投票
3 回答
1152 浏览

c++ - 各种 b 的稀疏带状 Ax=b 的批量 CUDA 解决方案

我有一个稀疏带状矩阵 A,我想(直接)求解 Ax=b。我有大约 500 个向量 b,所以我想求解相应的 500 个 x。我是 CUDA 的新手,所以我对我有哪些可用选项感到有些困惑。

cuSOLVER 有一个批量直接求解器 cuSolverSP 用于稀疏 A_i x_i = b_i在这里使用 QR 。(我对 LU 也很好,因为 A 的条件很好。)但是,据我所知,我无法利用我所有的 A_i 都相同的事实。

另一种选择是首先在 CPU 或 GPU 上确定稀疏 LU (QR) 分解,然后在 GPU 上并行执行反向替换(分别为反向替换和矩阵 mult)?如果cusolverSp< t >csrlsvlu()用于一个 b_i,是否有标准方法可以为多个 b_i 批量执行此操作?

最后,由于我对此没有直觉,考虑到必要的开销,我是否应该期望这些选项中的任何一个在 GPU 上加速?x 的长度约为 10000-100000。谢谢。

0 投票
1 回答
2623 浏览

c++ - Cuda cusolver 无法在 Visual Studio 2013 中链接

我基本上已经尝试了所有方法,但我无法让 vs2013 编译和链接到 cusolver 库。我已经尝试了 cuda 安装包附带的所有示例项目,并且基本上所有示例都可以正常工作。虽然没有使用 cusolver 的样本。包含文件工作得很好。链接器出错了,所有其他 cuda 东西都链接得很好。我尝试将一行 cusolver 代码添加到一个完美运行的 cuda 示例中,但它会中断。这是代码片段:

构建输出是:

我尝试在项目属性-> vc++ 和链接器选项中添加目录,但没有帮助。有任何想法吗?这 1 个库不起作用,这太奇怪了。

(另外,如果您对如何使用 gpu 编程求解具有最小二乘的方程组有任何其他想法,这将很有帮助)

编辑更新:您不能通过在其他链接器选项(如 cudaLinker 或 vc++ 目录)中添加额外的库或额外的包含目录来包含额外的 .h 文件或额外的库

0 投票
4 回答
2642 浏览

c++ - 在 CUDA 中求解稀疏正线性系统

cuSOLVER我们在使用's函数时遇到问题cusolverSpScsrlsvchol,可能是由于对cuSOLVER库的误解。

动机:我们-divgrad x = b在一个矩形网格上求解泊松方程。在2带有5-stencil的维度中(1, 1, -4, 1, 1),网格上的拉普拉斯算子提供了一个(相当稀疏的)矩阵A。此外,网格上的电荷分布给出了一个(密集的)向量bA是正定且对称的。

现在我们解决A * x = b使用CUDA 7.0 附带x的 nvidia 新库的问题。cuSOLVER它提供了一个函数cusolverSpScsrlsvchol,应该对浮点数进行稀疏 Cholesky 分解。

注意:我们能够使用替代稀疏 QR 分解函数正确求解系统cusolverSpScsrlsvqr。对于边缘上的4 x 4所有条目和其余条目的网格,我们得到:b10x

我们的问题:

  1. cusolverSpScsrlsvchol返回错误的结果x

    /li>
  2. (已解决,请参见下面的答案)将 CSR 矩阵转换A为密集矩阵并显示输出会给出奇怪的数字(10^-44等等)。CSR 格式的相应数据是正确的,并使用 python numpy 进行了验证。

  3. (已解决,请参见下面的答案)甚至找不到替代的稀疏LU和部分旋转:cusolverSpScsrlsvlu

    /li>

我们做错了什么?谢谢你的帮助!

我们的 C++ CUDA 代码:

0 投票
1 回答
1473 浏览

python - 使用 PyCUDA 连接 cuSOLVER-sparse

我正在尝试使用 PyCUDA 连接稀疏 cuSOLVER 例程cusolverSpDcsrlsvqr() (>= CUDA 7.0) 并且面临一些困难:我尝试以与密集 cuSolver 例程包装在 scikits-cuda 中相同的方式包装方法(https:// /github.com/lebedov/scikits.cuda/blob/master/scikits/cuda/cusolver.py)。

但是,调用 cusolverSpDcsrlsvqr() 函数时,代码会因分段错误而崩溃。使用 cuda-gdb ( cuda-gdb --args python -m pycuda.debug test.py; run;bt) 进行调试会产生以下堆栈跟踪,

#0 0x00007fffd9e3b71a in cusolverSpXcsrissymHost () from /usr/local/cuda/lib64/libcusolver.so #1 0x00007fffd9df5237 in hsolverXcsrqr_zeroPivot () from /usr/local/cuda/lib64/libcusolver.so
#2 0x00007fffd9e0c0007fffd9e0c0c76 /local/cuda/lib64/libcusolver.so
#3 0x00007fffd9f160a0 in cusolverXcsrqr_analysis () from /usr/local/cuda/lib64/libcusolver.so
#4 0x00007fffd9f28d78 in cusolverSpScsrlsvqr () from /usr/local/cuda/lib64/libcusolver.so

这很奇怪,因为我不调用 cusolverSp S csrlsvqr() 也不认为它应该调用主机函数(cusolverSpXcsrissym Host)。

这是我正在谈论的代码 - 感谢您的帮助:

0 投票
1 回答
611 浏览

c++ - 我没有使用 cuSolver 在设备上找到 LU 分解

我需要用 cuda 计算矩阵(双精度数组)的行列式,我想使用 LU 分解来做到这一点。我没有找到设备功能,cusolverSp.h只有主机功能cusolverSpDcsrlsvluHost。我查看 cuda 7.0 和 cuda 7.5。

我不明白为什么我找不到它,因为它在官方文档中有所描述:http: //docs.nvidia.com/cuda/cusolver/index.html#api

设备上的 Cholesky 分解等其他功能也有效。

实施了吗?如果是,我在哪里可以找到它?

感谢您的帮助!

0 投票
1 回答
932 浏览

c++ - CUDA 7.0,cuSolver 示例:未解决的 cudense.h 包含

我正在浏览文档中的cuSolver 示例并收到以下错误:

致命错误:cudense.h:没有这样的文件或目录

编译和链接,“make -n”:

nvcc -c -I/usr/local/cuda-7.0/include main.cpp

nvcc -o cusolver_run main.o -L/usr/local/cuda-7.0/lib64 -lcublas -lcusolver

在包含目录中找不到 cudense.h,而 cublas_v2.h 在那里。有没有办法得到这个头文件?

  • Cuda 工具包 7.0
  • Ubuntu 14.04
0 投票
1 回答
1301 浏览

python - 使用 scikit-cuda 通过 cuSOLVER 计算奇异值分解

我正在尝试将 scikit-cuda 的包装器用于 cuSOLVER 函数,特别是我想执行 cusolverDnSgesvd 来计算实数矩阵上的全矩阵单精度 SVD。

使用此处此处的代码作为参考,我设法做到了这一点:

但是代码不起作用,可能是因为我弄乱了类型。

我应该如何提供所有参数以便以正确的方式执行 SVD?

UPDATE1: 使用这个问题作为参考后,我编辑了我的代码,我得到了一个新的错误。

我遇到了一个新错误

现在看来我对 devInfo 做错了什么

0 投票
1 回答
415 浏览

cuda - CUDA:cuSolver 引发异常

我正在尝试使用 cusolver 库来求解许多线性方程,但引发了一个非常奇怪的异常。该代码仅使用库中的一个函数,其余的是内存分配和内存复制。功能是

我认为我的问题可能在于 tol - reorder - 奇点参数,因为其余的是矩阵参数这里是代码:

0 投票
1 回答
776 浏览

c++ - 状态:从 CUDA 库调用 cusolverDnDgeqrf 时执行失败

我尝试使用 CUDA 的 cusolver 库在 GPU 上执行 QR 分解。

我将我的问题简化为下面的示例。

基本上,这几个步骤是:

  1. 我分配内存并在主机上用 1 初始化了一个 [5x3] 矩阵,
  2. 我分配内存并在设备上复制矩阵
  3. 我初始化求解器处理程序cusolverDnCreate
  4. 我确定所需工作空间的大小cusolverDnDgeqrf_bufferSize
  5. 最后,尝试使用 QR 分解cusolverDnDgeqrf

不幸的是,最后一个命令通过返回CUSOLVER_STATUS_EXECUTION_FAILED(int value = 6) 系统地失败了,我不知道出了什么问题!

这是错误的代码:

您是否会在我的代码中看到任何明显的错误,请告诉我!非常感谢。