用户
 找回密码
 立即注册
acone 该用户已被删除
发表于 2013-10-30 20:55:04
139477
维数通常在几百至两万之间,在CUBLAS中有没有现成的函数?是哪个函数?如果是用几个函数才能完成的话能不能给一个大致的流程?谢谢了,我搞了半天也没搞出来,只有向各位大佬请教了。
使用道具 举报 回复
发表于 2013-10-30 22:55:20
楼主您好,我不会用cublas,

建议您等待其他会员、版主、NVIDIA原厂支持,以及总版主为您解答。

感谢您的来访。
使用道具 举报 回复 支持 反对
发表于 2013-10-31 21:21:22
本帖最后由 seumx 于 2013-10-31 21:46 编辑

看你要怎么解,是要用直接法还是迭代,迭代的话以CG为例,主要是要矩阵向量积和范数,cublas里有现成的level-2库可以直接调用算矩阵向量积,至于范数以及其余杂碎操作可以调用level-1库。如果是直接法比如LU分解或求逆矩阵神马的貌似是不行的,LU分解比较好的库是田纳西大学做的MAGMA,效率蛮好。2W双精的话有可能需要GPU核外,那就比较麻烦了,大概流程是分块传递,块与块相互作用CPU/GPU异步。。。
使用道具 举报 回复 支持 反对
发表于 2013-10-31 22:26:53
seumx 发表于 2013-10-31 21:21
看你要怎么解,是要用直接法还是迭代,迭代的话以CG为例,主要是要矩阵向量积和范数,cublas里有现成的leve ...

感谢楼主为我们提供“CUDA解线性方程组”方面的宝贵意见。

您值得赞扬,感谢您为论坛的繁荣而做的努力。

我们永远与你,与所有会员同在。
使用道具 举报 回复 支持 反对
发表于 2013-11-1 07:00:55
看你要怎么解,是要用直接法还是迭代

非常感谢seumx老大给予的帮助,让我一大早就能看到这个好信息。
    (1)我评估了一下,如果用迭代法的话可能不需要太高的精度就能满足要求。老大能不能给我罗列出所用函数的名字?最好能有个源代码哪怕是程序框架也行----我对算法原理以及英语数学名词很陌生,看手册很吃力。
    (2)我在CUDA5.5的手册上看到一个用3.5的计算能力进行LU分解的程序例子,CUBLAS里还有个解线性方程组的函数,但要求是三角方阵,这两者结合起来是不是就可以了?大不了我就买个便宜的3.5的卡。另外我的极限是1W6的单精度。
使用道具 举报 回复 支持 反对
发表于 2013-11-1 17:53:33
本帖最后由 seumx 于 2013-11-1 18:06 编辑
acone 发表于 2013-11-1 07:00
非常感谢seumx老大给予的帮助,让我一大早就能看到这个好信息。
    (1)我评估了一下,如果用迭代法的话 ...

(1)CG非析因形式的源代码那本很老的<GPU高性能运算之CUDA>书上有,照着敲进去就行了。我不知道你矩阵的性态怎么样,如果不太差那这个CG足够你用了
(2)我手上的卡只有3.0的,环境还是4.2,没有具体看过5.5的LU分解,貌似用DP做的。如果你有3.5的卡那就用sample的例子+cublas里的三角解方程调用两次就可以了。多说一句,LU分解是一个很好的CUDA例子,个人并不推荐用DP去实现这么通用性的算法,如果你时间不是很急我个人觉得还是自己实现下LU分解~一样可以实现非常棒的效果
使用道具 举报 回复 支持 反对
发表于 2013-11-2 11:06:51
自己写过一个很粗糙的稀疏线性方程组求解。解有限元系统方程,用的LDL直接法,双精度1.7万的维数,并行求解60个方程组的时间为30秒。另外还有个叫jacket软件的可以让matlab自动调用cuda进行计算,似乎比较简单,效率也还可以。
使用道具 举报 回复 支持 反对
发表于 2013-11-4 23:24:21
深夜里谢谢seumx、pk82418 以及诸位!我动手试一试吧。
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册