Numpy a szybkie algorytmy mnożenia macierzy

0

Witam
Nie mogę nigdzie znaleźć żadnych informacji czy moduł numpy, przy mnożeniu macierzy korzysta z tzw. szybkich algorytmów mnożenia macierzy np. Strassen albo Coppersmith-Winograd. Zwykłe mnożenie w numpy jest dużo szybsze niż jak korzystam z jednego z wcześniej wymienionych algorytmów z użyciem numpy.
Pozdrawiam
Bartek

0

Ale wiesz ze numpy nie implementuje tego w pythonie? ;) A C jest wielokrotnie szybsze od pythona, nawet gdybyś odpalał to przez PyPy.

0

Tak wiem o tym tylko nadal numpy mogę użyć w implementacji z szybkimi algorytmami a mimo wszystko czas jest dużo dłuższy niż w przypadku zwykłego mnożenia. Chociaż tak nawiasem mówiąc to i bez tego modułu po prostu strassen i CW(ten starszy) na macierzach jakie mnoże w pythonie szybciej jakoś nie wypadają

0

A reprezentacja macierzy? Bo numpy to też dobiera odpowiednio i masz tam wydajne implementacje macierzy rzadkich. Poza tym same algorytmy też są pisane w C a nie w pythonie więc mimo wszystko będą szybsze. No i sam rozmiar macierzy tez ma duże znaczenie. Bo notacja asymptotyczna pomija stałe, które mogą mieć duży wpływ na czas wykonania. Notacja asymptotyczna jest prawdziwa dla n-> nieskończoność.

0

hm rozumiem już czyli normalne użycie numpy będzie szybsze ponieważ, jest wykonywane w c a jeżeli używam numpy w szybkich algorytmach to tak czy siak wykonuje w c potem wraca do pythona i znowu do c i tak aż obliczy. To miało by sens. Ale tak dla pewności na pewno numpy nie korzysta z żadnego szybkiego algorytmu?

0

Nie no znając numpy to implementuje najszybsze co jest, chyba ze z jakiegoś powodu byłoby to niemożliwe. Co więcej pewnie robi to adaptacyjnie tak żeby dobrać najlepszą metodę dla konkretnego inputu. Pewnie zupełnie co innego wykona sie dla jakiejś macierzy trójkątnej, co innego dla pełnej a co innego dla rzadkiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1