问题标签 [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.
cuda - 使用 CUDA 的 cusolverSpDcsrlsvlu 或 QR 方法
我已经搜索了整个世界,但无法解决这个问题!“cusolver test.exe 中 0x00007FFF3AD3D430 (cusolver64_70.dll) 处未处理的异常:0xC0000005:访问冲突读取位置 0x0000000400960004。” 我想使用最小二乘求解器或 Qr 方法求解 Ax=B .... 我的代码编译没有错误,但后来我得到了这个错误!代码在此代码的最后一行中断!我的代码是
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。谢谢。
c++ - Cuda cusolver 无法在 Visual Studio 2013 中链接
我基本上已经尝试了所有方法,但我无法让 vs2013 编译和链接到 cusolver 库。我已经尝试了 cuda 安装包附带的所有示例项目,并且基本上所有示例都可以正常工作。虽然没有使用 cusolver 的样本。包含文件工作得很好。链接器出错了,所有其他 cuda 东西都链接得很好。我尝试将一行 cusolver 代码添加到一个完美运行的 cuda 示例中,但它会中断。这是代码片段:
构建输出是:
我尝试在项目属性-> vc++ 和链接器选项中添加目录,但没有帮助。有任何想法吗?这 1 个库不起作用,这太奇怪了。
(另外,如果您对如何使用 gpu 编程求解具有最小二乘的方程组有任何其他想法,这将很有帮助)
编辑更新:您不能通过在其他链接器选项(如 cudaLinker 或 vc++ 目录)中添加额外的库或额外的包含目录来包含额外的 .h 文件或额外的库
c++ - 在 CUDA 中求解稀疏正线性系统
cuSOLVER
我们在使用's函数时遇到问题cusolverSpScsrlsvchol
,可能是由于对cuSOLVER
库的误解。
动机:我们-divgrad x = b
在一个矩形网格上求解泊松方程。在2
带有5
-stencil的维度中(1, 1, -4, 1, 1)
,网格上的拉普拉斯算子提供了一个(相当稀疏的)矩阵A
。此外,网格上的电荷分布给出了一个(密集的)向量b
。A
是正定且对称的。
现在我们解决A * x = b
使用CUDA 7.0 附带x
的 nvidia 新库的问题。cuSOLVER
它提供了一个函数cusolverSpScsrlsvchol
,应该对浮点数进行稀疏 Cholesky 分解。
注意:我们能够使用替代稀疏 QR 分解函数正确求解系统cusolverSpScsrlsvqr
。对于边缘上的4 x 4
所有条目和其余条目的网格,我们得到:b
1
0
x
我们的问题:
/li>cusolverSpScsrlsvchol
返回错误的结果x
:(已解决,请参见下面的答案)将 CSR 矩阵转换
A
为密集矩阵并显示输出会给出奇怪的数字(10^-44
等等)。CSR 格式的相应数据是正确的,并使用 python numpy 进行了验证。(已解决,请参见下面的答案)甚至找不到替代的稀疏
/li>LU
和部分旋转:cusolverSpScsrlsvlu
我们做错了什么?谢谢你的帮助!
我们的 C++ CUDA 代码:
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)。
这是我正在谈论的代码 - 感谢您的帮助:
c++ - 我没有使用 cuSolver 在设备上找到 LU 分解
我需要用 cuda 计算矩阵(双精度数组)的行列式,我想使用 LU 分解来做到这一点。我没有找到设备功能,cusolverSp.h
只有主机功能cusolverSpDcsrlsvluHost
。我查看 cuda 7.0 和 cuda 7.5。
我不明白为什么我找不到它,因为它在官方文档中有所描述:http: //docs.nvidia.com/cuda/cusolver/index.html#api
设备上的 Cholesky 分解等其他功能也有效。
实施了吗?如果是,我在哪里可以找到它?
感谢您的帮助!
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
cuda - CUDA:cuSolver 引发异常
我正在尝试使用 cusolver 库来求解许多线性方程,但引发了一个非常奇怪的异常。该代码仅使用库中的一个函数,其余的是内存分配和内存复制。功能是
我认为我的问题可能在于 tol - reorder - 奇点参数,因为其余的是矩阵参数这里是代码:
c++ - 状态:从 CUDA 库调用 cusolverDnDgeqrf 时执行失败
我尝试使用 CUDA 的 cusolver 库在 GPU 上执行 QR 分解。
我将我的问题简化为下面的示例。
基本上,这几个步骤是:
- 我分配内存并在主机上用 1 初始化了一个 [5x3] 矩阵,
- 我分配内存并在设备上复制矩阵
- 我初始化求解器处理程序
cusolverDnCreate
- 我确定所需工作空间的大小
cusolverDnDgeqrf_bufferSize
- 最后,尝试使用 QR 分解
cusolverDnDgeqrf
不幸的是,最后一个命令通过返回CUSOLVER_STATUS_EXECUTION_FAILED
(int value = 6) 系统地失败了,我不知道出了什么问题!
这是错误的代码:
您是否会在我的代码中看到任何明显的错误,请告诉我!非常感谢。