- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个稀疏带状矩阵 A,我想(直接)求解 Ax=b。我有大约 500 个 vector b,所以我想求解相应的 500 个 x。我是 CUDA 的新手,所以我对可用的选项有点困惑。
cuSOLVER 有一个批处理直接求解器 cuSolverSP,用于稀疏 A_i x_i = b_i 使用 QR here . (我对 LU 也很好,因为 A 的条件很好。)但是,据我所知,我无法利用我所有的 A_i 都相同的事实。
另一种选择是先在 CPU 或 GPU 上确定稀疏 LU (QR) 分解,然后在 GPU 上并行执行反向代换(分别为 backsub 和矩阵乘法)吗?如果cusolverSp< t >csrlsvlu()对于一个 b_i,是否有一种标准方法可以为多个 b_i 批量执行此操作?
最后,由于我对此没有直觉,考虑到必要的开销,我是否应该期望这些选项中的任何一个在 GPU 上加速? x 的长度约为 10000-100000。谢谢。
最佳答案
我目前正在做类似的事情。我决定基本上将 CUDA SDK 附带的共轭梯度和 0 级不完全 cholesky 预条件共轭梯度求解器实用程序示例包装到一个小类中。
您可以在路径下的 CUDA_HOME 目录中找到它们:samples/7_CUDALibraries/conjugateGradient
和 /Developer/NVIDIA/CUDA-samples/7_CUDALibraries/conjugateGradientPrecond
基本上,您会将矩阵加载到设备内存中一次(对于 ICCG,计算相应的调节器/矩阵分析),然后使用不同的 b vector 调用求解内核。
我不知道你期望你的矩阵能带结构是什么样的,但如果它是对称的并且是对角线主导的(沿着每行和每列的非对角线带与对角线符号相反并且它们的和小于对角线entry)或正定(没有特征值为 0 的特征向量),那么 CG 和 ICCG 应该是有用的。或者,如果您愿意对它们进行编码,则各种多重网格算法是另一种选择。
如果您的矩阵只是半正定矩阵(例如,至少有一个特征值为零的特征向量),您仍然可以使用 CG 或 ICCG,只要您确保:1) 右侧(b vector )与零空间正交(零空间表示特征值为零的特征向量)。2) 你得到的解与零空间正交。
有趣的是,如果您确实有一个非平凡的零空间,那么不同的数值求解器可以为您提供相同的精确系统的不同答案。解决方案最终会因零空间的线性组合而有所不同...在我最终理解之前,这个问题已经导致我进行了很多工时的调试和挫折,所以意识到它是件好事。
最后,如果您的矩阵有一个 Circulant Band structure您可能会考虑使用基于快速傅立叶变换 (FFT) 的求解器。基于 FFT 的数值求解器通常可以在适用的情况下产生卓越的性能。
关于c++ - 用于各种 b 的稀疏带状 Ax=b 的批量 CUDA 解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107988/
这显然是不寻常的 AX 问题的一周。我在 AX 中有自定义的、与公司无关的表,在第一个 View 中总是显示一个特定的记录。如果您从表单访问它们、直接查看表等,就会发生这种情况。 打开使用故障表之一作
This question already has answers here: How many memory barriers instructions does an x86 CPU have?
Dynamics AX 的新手,如何获取特定 wmslocation 中的所有项目以及 b/w wmslocation 和inventTable 的关系是什么? 最佳答案 执行此操作的最简单方法是为该
from datetime import datetime fig=plt.figure() ax=fig.add_subplot(1,1,1) data=pd.read_csv(r"C:\Users
我正在拼命寻找 Dynamics AX 2009 数据库图表。有人有吗? 谢谢 最佳答案 有关 AX 2009 中的表列表,请参阅 MSDN 文档 Dynamics AX 2009 Tables 要创
我正在寻找一种方法来启用某些表的日志记录更改。 我已经尝试并测试了以编程方式将表添加到数据库日志中,但到目前为止取得了各种成功 - 有时它有效,有时它不起作用(大多数情况下它不起作用) - 似乎只是将
from datetime import datetime fig=plt.figure() ax=fig.add_subplot(1,1,1) data=pd.read_csv(r"C:\Users
我正在学习如何从 osdev 制作引导加载程序。我正在使用 NASM 来组装我的代码,并使用 x86 机器来运行我的引导加载程序。这是一段打印字符并进入无限循环的代码: BITS 16 xor ax,
我正在拼命寻找 Dynamics AX 2009 数据库图表。有人有吗? 谢谢 最佳答案 有关 AX 2009 中的表列表,请参阅 MSDN 文档 Dynamics AX 2009 Tables 要创
“该元素没有原点值。该元素必须有一个非空的原点值。” 我使用Wizard Wizard(微软在这个名字上没有获得任何创意点数..)来创建一个新的Wizard,这个最佳实践错误是在系统生成的表单中。 最
下面两行有什么区别? mov ax, bx mov ax, [bx] 如果bx包含值100h,并且内存地址100h处的值是23,那么第二个是否将23复制到ax? 另外,下面两行有什么区别? mov a
我正在查看程序的反汇编(因为它崩溃了),并注意到很多 xchg ax, ax 我用 google 搜索了一下,发现它本质上是一个 nop,但为什么 Visual Studio 会执行 xchg
任何人都可以向我解释以下行为吗? 当 AX 表中的字段类型设置为枚举时,您可以选择任何枚举值作为该字段的值。 但是,如果您将该字段设置为必填,则无法再通过用户界面选择列表中的第一个枚举值。 显然,这可
有人可以解释一下这三个指令的功能吗? ORG 1000H MOV AX,CS MOV DS,AX 我知道理论上的代码、数据和额外段是什么,但是: 在这个程序中它们是如何实现的? 为什么整个
import matplotlib.pyplot as plt fig, ax = plt.subplots() plt.getp(ax) 为什么ax.patch没有列在plt.getp(ax)的输
我这里有一个小众问题,我找不到任何特定于此的指南。我想知道是否有人知道如何正确处理 matplotlib 包中轴标签的以下文本: ax.set_xlabel(r'$1.005116" per pixe
我正在尝试查找应用程序对象中使用标签的位置。 在标签编辑器中有一个按钮 Used By应该执行此功能。但是,它只会打开一个空对话框。 在此之前是否需要先设置某种索引? 最佳答案 是的,您需要从这里更新
Axapta 中是否有类似于 C# 中著名的 toString() 方法? 我尝试运行底层代码: info(this.dataSource()); 但它给了我这个错误消息:“参数'txt'与所需的类型
我想知道如何使用 C# (.Net Business Connector) 从 AX 调用内核函数。 具体来说,你可以调用像 fieldName2Id、tableName2Id 和 curUserId
在 Matlab 中求解方程最耗时的方法是什么: exp(ax)-ax+c=0 a 和 c 是常量,x 是我要查找的值?目前我正在使用内置的求解器函数,我知道解是单值的,但它花费的时间比我想要的要长。
我是一名优秀的程序员,十分优秀!