Вычисление собственных значений/собственных векторов сотен малых матриц с использованием CUDA

У меня есть вопрос о собственной -декомпозиции сотен небольших матриц с использованием CUDA.

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

В этом алгоритме в каждом блоке определено 32 потока, в то время как каждый блок обрабатывает одну маленькую матрицу, и 32 потока работают вместе, чтобы раздуть 32 диагональных элемента -до сходимости. Однако я не очень доволен его работой.

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

12
задан Bart 9 July 2012 в 18:53
поделиться