首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何批量处理cusolver cholesky逆(potri)?

如何批量处理cusolver cholesky逆(potri)?
EN

Stack Overflow用户
提问于 2019-07-08 23:35:18
回答 1查看 159关注 0票数 0

与CUBLAS不同,Cusolver具有Cholesky分解。我看到了cusolverDnDpotrsBatchedcusolverDnDpotrfBatched,但不幸的是,我似乎在the documentation中找不到cusolverDnDpotriBatched

有没有什么方法可以在不增加大量开销的情况下批量处理cusolverDnDpotri,或者有什么方法可以做到与API所做的等同?

EN

回答 1

Stack Overflow用户

发布于 2019-07-09 00:01:52

不幸的是,唯一的方法是编写自己的内核,因为没有“自动”方法将非批处理内核转换为批处理内核(编写一个性能良好的批处理版本的内核本身就是一篇科学论文,很容易被高调的HPC会议接受)。

你确定你真的需要反转吗?逆运算通常可以表示为线性系统的解,对于线性系统,您可以使用cusolverDnPotrsBatched

如果您真的需要反转,我能想到的唯一不需要编写CUDA代码的方法就是调用cusolverDnPotrsBatched,并将右侧的Barray设置为一批单位矩阵。这样,系统Ai * Xi = I (其重写Barray)的解Xi是矩阵批次Aarray的逆。它确实需要额外的内存,而且效率不如为逆序编写内核,但应该比按顺序执行更快。

另一种选择是忘记矩阵是对称的,并将其视为一般矩阵。然后,您可以使用MAGMA库及其magma_dgetri_outoflace_batched()函数来反转矩阵(同样不是就地)。不幸的是,MAGMA也不支持对称逆的批处理版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56938289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档