我有一个问题,我需要找到一个小的(通常小于60x60)非对称矩阵的所有正对(如特征值为正)。当特征值小于某个阈值时,我可以停止计算。我知道特征值是真实的。关于可以用来尝试获得最佳性能的算法有何建议?我必须进行数千次分解,因此速度很重要。
先感谢您。
编辑:我需要在共享内存的GPU上执行此操作。矩阵也不必相同大小。我目前不知道有任何图书馆可以这样做。将会提出非常适合该问题的算法建议。
1
如果我做对了,您将拥有一个CUDA内核,可以在共享内存中计算数千个小型矩阵,并且您不愿意将它们复制到全局内存中。在尝试给出答案之前,需要澄清一些要点。在CUDA中,共享内存的生命周期必然会影响块的生命周期:每个矩阵要分解多少个线程?出色的表现真的很重要吗?(期望的特征值提取时间与矩阵生成时间相比如何?)基于什么论点,您知道本征系统是真实的?本征系统会出现缺陷吗?
—
Stefano M
您好Stefano,谢谢您的评论。现在,我将具有最接近要分解的矩阵尺寸的扭曲大小的倍数。矩阵生成时间相差很大,并且在某些情况下矩阵生成时间更昂贵,但是在许多情况下,矩阵生成时间少于分解时间。我知道特征值是真实的,因为矩阵的生成方式。我不想在这里进行详细说明,因为这会损害原始问题。最后,是的,系统可能有故障。
—
Kantoku 2012年