Inwersja dużej macierzy

Patrzę na przyjęcie odwrotności dużej matrycy, wspólnej wielkości 1000 x 1000, ale czasami przekracza 100000 x 100000 (która obecnie nie działa z powodu czasu i pamięci). Wiem, że normalnym sentymentem jest „nie bierz odwrotności, znajdź jakiś inny sposób, by to zrobić”, ale w tej chwili nie jest to możliwe. Powodem tego jest wykorzystanie oprogramowania, które już zostało stworzone i oczekuje odwrócenia macierzy. (Uwaga: szukam sposobów zmiany tego, ale zajmie to dużo czasu)

W tej chwili używamy metody dekompozycji LU z rekombinacji numerycznych i obecnie testuję bibliotekę eigen. Biblioteka eigen wydaje się być bardziej stabilna i nieco szybsza, ale wciąż jestem w fazie testów pod kątem dokładności. Rzuciłem okiem na inne biblioteki, takie jak ATLAS i LAPACK, ale nie przeprowadziłem jeszcze żadnych istotnych testów.

Wydaje się, że biblioteka eigen nie korzysta z równoczesnych metod obliczania odwrotności (choć ma to miejsce w przypadku odwrotnej części faktoryzacji LU) i o ile mogę powiedzieć, ATLAS i LAPACK są podobne w tym ograniczeniu. (Obecnie testuję różnicę prędkości dla eigen z openMP i bez.)

Pierwsze pytanie brzmi: czy ktoś może wyjaśnić, jak można zoptymalizować odwrócenie macierzy przez równoległość. Znalazłem artykułtutaj to mówi o równoległych algorytmach inwersji macierzy, ale nie zrozumiałem. Wydaje sięto artykuł mówi o innej metodzie? Nie jestem też pewien, czy scaLAPACK lub PETSc są przydatne?

Drugie pytanie, czytamto artykuł dotyczący wykorzystania procesorów graficznych w celu zwiększenia wydajności, ale nigdy nie kodowałem GPU, więc nie mam pojęcia, co próbuje przekazać, ale wykresy na dole wyglądały raczej niepokojąco. Jak to jest możliwe, i jak mogę zacząć wdrażać coś takiego, jeśli ma być prawdziwe.

Ja też znalazłemto artykuł, mieliśmy jeszcze czas, aby go przeczytać, aby zrozumieć, ale wydaje się to obiecujące, ponieważ pamięć jest aktualnym problemem w naszym oprogramowaniu.

Wszelkie informacje o tych artykułach lub ogólnie o problemach byłyby bardzo pomocne. I znowu przepraszam, jeśli to pytanie wydaje się niejasne, postaram się rozszerzyć w razie potrzeby.

questionAnswers(5)

yourAnswerToTheQuestion