armadillo linear system solver (z openblas)

Testowałem różne kody open source do rozwiązywania liniowego układu równań w C ++. Jak dotąd najszybszy znalazłem pancernik, używając również pakietu OPENblas. Aby rozwiązać gęsty liniowy system NxN, gdzie N = 5000 zajmuje około 8,3 sekundy w moim systemie, co jest naprawdę bardzo szybkie (bez zainstalowanych openblas, zajmuje to około 30 sekund).

Jednym z powodów tego wzrostu jest to, że pancernik + openblas wydaje się umożliwiać używanie wielu wątków. Działa na dwóch moich rdzeniach, natomiast pancernik bez openblas używa tylko 1. Mam procesor i7, więc chcę zwiększyć liczbę rdzeni i przetestować go dalej. Używam ubuntu, więc z dokumentacji openblas mogę zrobić w terminalu:

eksport OPENBLAS_NUM_THREADS = 4

jednak ponowne uruchomienie kodu nie zwiększa liczby używanych rdzeni ani prędkości. Czy robię coś złego, czy 2 jest maksymalną kwotą za użycie polecenia „rozwiązać (A, b)” armadillo? Nie byłem w stanie znaleźć kodu źródłowego pancernika w dowolnym miejscu, żeby go obejrzeć.

Nawiasem mówiąc, czy ktoś wie, jakich metod używa armadillo / openblas do rozwiązywania Ax = b (standardowa dekompozycja LU z równoległością lub czymś innym)? Dzięki!

edit: Właściwie liczba rdzeni zatrzymanych na 2 wydaje się być błędem podczas instalacji openblas z menedżerem pakietów synaptycznychSpójrz tutaj. Ponowna instalacja ze źródła pozwala wykryć, ile rdzeni mam w rzeczywistości (8). Teraz mogę zarządzać eksportem OPENBLAS_NUM_THREADS = 4 itd.

questionAnswers(1)

yourAnswerToTheQuestion