Mam problem, w którym muszę znaleźć wszystkie pozytywne (jak w wartości własnej dodatniej) pary własne małej (zwykle mniejszej niż 60 x 60) macierzy niesymetrycznej. Mogę przestać obliczać, kiedy wartość własna jest mniejsza niż pewien próg. Wiem, że wartości własne są prawdziwe. Jakieś sugestie dotyczące algorytmów, których mógłbym użyć, aby wycisnąć najlepszą wydajność? Muszę wykonać kilka tysięcy tych rozkładów, więc szybkość jest ważna.
Z góry dziękuję.
EDYCJA: Muszę to zrobić na GPU we wspólnej pamięci. Matryce również niekoniecznie mają taki sam rozmiar. W tej chwili nie znam żadnych bibliotek, które to robią. Docenione zostaną sugestie algorytmów, które dobrze pasowałyby do problemu.
performance
eigensystem
gpu
Kantoku
źródło
źródło
Odpowiedzi:
Bez częstych poszukiwań polecam zajrzeć do biblioteki MAGMA . Darmowy kod z ciągłym wsparciem. NVIDIA uznała MAGMA za „Przełom w rozwiązaniach dla problemów z wartością własną”.
Istnieje również biblioteka CULA , która jest ogólnie produktem komercyjnym, chociaż ostatnio została udostępniona bezpłatnie do użytku akademickiego (zobacz szczegóły tutaj ).
źródło
Używaj funkcji w LAPACK, jest mało prawdopodobne, że możesz je pokonać we własnej implementacji.
źródło