- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Ubuntu 16.04LTS; SuiteSparse 4.5.5; CUDA 8.0.61(性能更新); Nvidia 驱动程序 384.98;
我已将 GPU 加速的 CHOLMOD 成功实现到我的代码中,并正常工作了几个月。然后最近突然(没有更改源代码),我开始在输出中看到这些错误:
GPU failure in cholmod_gpu: gpu_memorysize 8.38861e+06 0 MB
CHOLMOD error: gpu memorysize failure
. file: ../GPU/cholmod_gpu.c line: 384
CHOLMOD error: CUBLAS initialization. file: ../GPU/cholmod_gpu.c line: 433
CHOLMOD error: cudaMemcpy(d_Ls). file: ../Supernodal/../GPU/t_cholmod_gpu.c line: 129
CHOLMOD error: CUDA stream. file: ../Supernodal/../GPU/t_cholmod_gpu.c line: 140
我怀疑第三方库在无人值守的情况下自行更新。但我对 CHOLMOD/Demo/cholmod_l_demo(导出 CHOLMOD_USE_GPU=1)的测试证明 CHOLMOD 本身工作得很好,并且正在使用完整的 GPU(使用 nvidia-smi 监视事件)。同样,Cuda/样本都工作得很好。我已经清除并重新安装了所有内容,包括 Cuda、Nvidia 驱动程序和 SuiteSparse。我尝试过 Cuda 8.0 和 Cuda 9.0 的各种组合。无济于事,Cuda/samples 和 CHOLMOD/Demos 仍然工作得很好,但我的 CHOLMOD 实现抛出了同样的错误。
我已将问题追溯到 cudaMemGetInfo() 函数。由于某种原因,它报告 GPU 上有 0 个可用字节,导致第一个错误 (gpu_memorysize)!其余的错误似乎是从第一个错误中级联出来的。 CHOLMOD/Demo/cholmod_l_demo 脚本中没有发生此错误,这表明我的实现有问题。然而,我的实现没有任何改变。有谁知道为什么 cudaMemGetInfo() 会报告 0 个可用字节吗?我认为这个问题的答案将有助于指导我找到解决方案。
我查看了我的无人值守升级历史记录,似乎在我开始看到错误时更新了一些 linux-headers 和 nvidia 驱动程序。但我不太确定 nvidia 驱动程序更新是罪魁祸首,因为 CHOLMOD/Demo/cholmod_l_demo 工作得很好。所以我怀疑这可能是一个 linux-headers 问题......
我的实现分布在多个文件中,因此可能值得查看 Github commit 。但正如我提到的,与过去几个月 CHOLMOD GPU 加速工作时相比,我没有更改任何源文件。
非常感谢任何建议!
最佳答案
cudaMemGetInfo() 报告 0 个可用字节的原因是因为我的程序对 libcublas 和 libcudart 没有可执行权限。一旦我运行前面带有“sudo”的程序,就会使用 GPU,并且 CHOLMOD 会像几周前一样工作。
我不确定内核是否更改了权限,或者某些 .so 安装是否需要新权限。这有点神秘。但解决方案是使用“sudo”来运行程序。
关于c++ - 尽管通过了所有演示测试,SuiteSparse CHOLMOD 仍抛出 gpu_memorysize 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47164023/
我最近安装了 Cholmod 以便在某些 C++ 代码中执行稀疏 cholesky 分解。然后我想使用分解来计算矩阵逆(我有以下问题: d^T . (A^-1 + B^-1)^-1 . d 其中d是一
我在 SuiteSparse 中使用 CHOLMOD 来因式分解 N通过 N相对稀疏的大带对角矩阵,即它仅包含一些非零对角线。矩阵的稀疏性由协方差长度参数设置 l .较大的l非零的非对角线元素的数量越
我正在使用通过 macports 安装的 SuiteSparse @4.2.1_3 并希望分配 cholmod_dense 结构。考虑以下代码: /* start CHOLMOD */ cholmod
任何人都可以给我一个简单的例子,说明如何使用 CHOLMOD 将元素添加到三元组矩阵吗? . 我试过这样的: cholmod_triplet *A; int k; void add_A_entry(i
我已经问过类似的问题,但这次我会更具体一些。 我需要在 for 循环内执行一个通常较大的正定对称矩阵(大约 1000x1000)的 Cholesky 分解。现在,为了做到这一点,我一直在尝试: 1)
如何在超节点 L L^T 分解中乘以 cholmod_factor L?我不想转换为单纯形,因为超节点表示会导致更快的反解,而且我不想复制因子,因为两个副本可能不适合 RAM。 最佳答案 我最终从 t
我正在尝试在 SuiteSparse 4.4.4 中使用 CHOLMOD 和 CUDA 加速。我按照用户指南编译,可以成功运行Demo文件夹下的gpu.sh,这说明GPU已经完成了部分工作。但是,当我
我有一个 cholmod_dense 数据结构: cholmod_dense* ex = cholmod_l_solve(CHOLMOD_A, L, B, &com); 我想提取这些值并将它们复制到另
我一直在使用 CHOLMOD 分解矩阵 A 并求解系统 Ax = b,因为 A 是 Hessian 矩阵(打印在下面)并且 b = [1, 1, 1] 由 cholmod_ones函数。 不幸的是,x
在SparseSuiteQR ,我能找到的所有示例都使用标准输入或读取的文件来创建稀疏矩阵。有人可以提供一个简单的示例来说明如何直接在 C++ 中创建一个吗? 更好的是,在 CHOLMOD 文档中,提
Ubuntu 16.04LTS; SuiteSparse 4.5.5; CUDA 8.0.61(性能更新); Nvidia 驱动程序 384.98; 我已将 GPU 加速的 CHOLMOD 成功实现到
有一段时间我试图从 SuiteSparse 创建一个静态 CHOLMOD 库每个其他库(例如 Umfpack)都可以从 IDE 轻松编译(我在 Linux 上使用 Code::Blocks,在 Win
我已从以下位置下载了 SuiteSparse 的 .zip GitHub 。我正在尝试在 Ubuntu 中安装/编译 C/C++ 库。我正在使用适用于 Linux 的 Windows 子系统并从 Mi
我正在尝试使用 Eigen::CholmodSupernodalLLT然而,对于 Cholesky 分解,我似乎无法得到 matrixL()和 matrixU() .如何提取matrixL()和 ma
它只是报告: Cholmod error 'X and/or Y have wrong dimensions' at file ../MatrixOps/cholmod_sdmult.c, line
我是一名优秀的程序员,十分优秀!