У меня есть вопрос о собственной -декомпозиции сотен небольших матриц с использованием CUDA.
Мне нужно вычислить собственные значения и собственные векторы сотен (, например. 500 )малых (64 -на -64 )вещественных симметричных матриц одновременно. Я попытался реализовать его методом Якоби, используя порядок шахматных турниров (см. эту статью (PDF)для получения дополнительной информации ).
В этом алгоритме в каждом блоке определено 32 потока, в то время как каждый блок обрабатывает одну маленькую матрицу, и 32 потока работают вместе, чтобы раздуть 32 диагональных элемента -до сходимости. Однако я не очень доволен его работой.
Мне интересно, где есть лучший алгоритм для моего вопроса, то есть собственное -разложение многих 64 -на -64 действительных симметричных матриц. Я предполагаю, что метод домохозяина может быть лучшим выбором, но не уверен, можно ли его эффективно реализовать в CUDA. В сети не так много полезной информации, так как большинство других программистов больше заинтересованы в использовании CUDA/OpenCL для декомпозиции одной большой матрицы, а не множества маленьких матриц.