Matrix CUDA上的小矩阵求逆

Matrix CUDA上的小矩阵求逆,matrix,cuda,parallel-processing,inversion,Matrix,Cuda,Parallel Processing,Inversion,我需要你给我一点建议,我希望这不会占用你很多时间 所以我的问题是: 我有一个小型方形密集矩阵,可能尺寸为4x4、8x8、16x16, 我想用CUDA反转它 问题的特殊部分是,我有1024个空闲cuda线程来执行此任务。 所以我怀疑像Gauss Jordan这样最广泛的逆方法在这里不能正常工作,因为它们稍微平行,只使用1024个线程中的大约4-16个线程 但除此之外,我如何使用所有可用线程反转此矩阵 谢谢你的关注 对于此类问题,至少有两种可能的现成选项: 使用最新版本的CUBLAS库中提供的批处理

我需要你给我一点建议,我希望这不会占用你很多时间

所以我的问题是: 我有一个小型方形密集矩阵,可能尺寸为4x4、8x8、16x16, 我想用CUDA反转它

问题的特殊部分是,我有1024个空闲cuda线程来执行此任务。 所以我怀疑像Gauss Jordan这样最广泛的逆方法在这里不能正常工作,因为它们稍微平行,只使用1024个线程中的大约4-16个线程

但除此之外,我如何使用所有可用线程反转此矩阵


谢谢你的关注

对于此类问题,至少有两种可能的现成选项:

  • 使用最新版本的CUBLAS库中提供的批处理解算器
  • 使用BSD许可的Gauss Jordan消除设备代码函数,该函数由NVIDIA分发给注册开发者。其目的是使用每个矩阵一个线程来反转小矩阵

  • [此答案由评论组合而成,并作为社区wiki条目添加,以将问题从未回答的队列中删除]

    使用所述的
    CublasGetRibatched
    CublasGetRfBatched
    。如果需要,您可以使用支持动态并行的设备,你甚至可以从设备上调用这些,谢谢。由于其他原因,我不确定它是否适合我的项目,但我会彻底检查它。@IlyaAfanasiev:您可能想查看CUDA注册开发者网站。有可供下载的源代码(BSD许可证)实现了小矩阵的求逆。使用Gauss Jordan,如果我没记错的话,每个线程一个元素。它可以列在“批处理解算器”下。取决于您的项目是否更容易合并到代码库中,否则我同意Robert Crovella的建议。@njuffa如果您想对此做出回答,我会投赞成票