Pytanie:
Jakie wydajne implementacje macierzy są dostępne dla języka Java
demongolem
2014-02-05 07:50:11 UTC
view on stackexchange narkive permalink

Od czasu do czasu potrzebuję biblioteki, która może wykonać za mnie mnożenie macierzy. Wydaje mi się, że ostatnio korzystałem z EJML, ale niekoniecznie jest to najłatwiejszy pakiet podczas pracy z wektorami cech. Posiadanie dobrego pakietu może oznaczać różnicę w godzinach oczekiwania na zakończenie obliczeń. Jakie są więc najbardziej wydajne pakiety? Czy istnieją dobre testy porównawcze do obsługi takich twierdzeń różnych pakietów, które mogą istnieć?

Dwa odpowiedzi:
#1
+6
demongolem
2014-02-12 08:58:15 UTC
view on stackexchange narkive permalink

Cóż, pozwól mi odpowiedzieć, ponieważ to pytanie jest trochę ciche. Ze strony internetowej EJML znalazłem ten wykres:

enter image description here

Zatem, zgodnie z tym, EJML najlepiej sprawdza się przy użyciu czystego kodu Java dla mniejszych macierzy, a MTJ jest najlepszy dla dużych rozmiarów matryce. Ponownie trzeba uważać na zgłoszenie jednego z kandydatów, ale daje to pewien wgląd w różne dostępne pakiety.

To jest rodzaj odpowiedzi, która sprawia, że ​​myślę, że ta strona naprawdę mogłaby działać
#2
+1
damienfrancois
2014-02-05 13:12:27 UTC
view on stackexchange narkive permalink

JBLAS jest odpowiednikiem standardowej biblioteki BLAS C / FORTRAN i jest bardzo szybki. Zawiera prekompilowane pliki binarne i wykorzystuje sprzęt tak wydajnie, jak to możliwe, przełączając implementację w zależności od typu sprzętu.

Inną alternatywą jest JAMA.

Głosuję za tobą, jednak szukałem więcej szczegółów na temat tego, co sprawia, że ​​są wydajni / jak wydajni są między sobą.
Co masz na myśli standardowego blas C / Fortran? Masz na myśli NetBlas? (Który IIRC istnieje tylko jako odniesienie i jest zbudowany wokół pętli i jest powolny.) Czy masz na myśli Atlas, który jest skompilowany dla twojego własnego systemu? Czy masz na myśli wysoce zoptymalizowany OpenBlas? Czy masz na myśli, że sprawdza, jaką masz bibliotekę BLAS zainstalowany i zapewnia owijkę wokół tego? Nie ma standardu C BLAS.
Mam na myśli oryginalną definicję API netBLAS.


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...