-
11. Data: 2010-01-18 19:20:15
Temat: Re: matlab taki wydajny?
Od: "Wiktor S." <wswiktor&poczta,fm@no.spam>
> Dlaczego mam sie nie dziwic? Matlab chyba jest cholernie drogi?
Mnie zastanawia, jakie sa zastosowania, w których sie faktycznie OPLACA
wybulic TAKI majatek na Matlaba... bo jakies chyba sa, skoro program zyje?
--
Azarien
-
12. Data: 2010-01-18 19:26:12
Temat: Re: matlab taki wydajny?
Od: Mariusz Marszałkowski <m...@g...com>
On 18 Sty, 19:55, bartekltg <b...@g...com> wrote:
> On 18 Sty, 13:15, Mariusz Marszałkowski <m...@g...com> wrote:
>
> > Witam
>
> > Od dość dawna słyszę opinie że procedury zaimplementowane w
> > matlabie są bardzo wydajne. Nie znam matlaba, ale wczoraj przez
> > przypadek miałem go pod ręką, no i tyle ile można się nauczyć
> > przez godzinę sprawdziłem.
>
> > Program w matlabie robił coś takiego:
> > for i=1:20000
> > v = a * m1;
> > a = v * m2;
> > end;
>
> U mnie 520 (tzn petla do 2000 zajela 52).
> Natomiast rownowazne
> tic;a=a*(m1*m2)^(20000-1); v = a * m1; a = v * m2; toc
>
> zajelo 50s. Czyli 10 razy mniej:)
Niemożliwe aby jedna pętla zajmowała porównywalną ilość
czasu do 6mln operacji. Może matlab użył innego algorytmu?
Albo czegos nie zrozumialem....
> > gdyż robił ciut więcej obliczeń. No i w C
> > wykonywało to 70s.
>
> 100 do 70? cos mierna ta roznica.
>
> > Więc to tylko plotki że matlab jest taki wydajny?
>
> Po pierwsze, porownaj powazne procedury. Chocby mnozenie maciezy.
Nie rozumie, a co ja porównałem jak nie mnożenie macierzy?
> Po drugie, czy matlab w tym miejscy nie korzysta z c blas/lapack?
> Ze napisales ogolne procedury wydajniejsze - nie wierze;)
Napisałem wydajniej to co opisałem: mnożenie macierzy o
rozmiarze Nx1 przez macierz MxN. Super wydajny pakiet powinien
mieć specjalną implementację do takich macierzy.
> Sprawa zapewne rozbija sie o lepsze uzycie procesora,
> programiki z c je wykorzystuje, matlab raczej nie
> (czy daja wersje pod rozne procesory, nie wiem, moj jest uczelniany
> i bebecham malo mnie obchodza, ale watpie).
Też mnie to nie bardzo obchodzi, ale od co najmniej roku slysze
ze matlab jest baaardzo wydajny i jak uzyje jego procedur to
bede mail szybsze niz swoje. A tu prosze, podstawowa procedura i
jest prawie dwa razy wolniej. Nie bawilem sie opcjami gcc, moze by
wyszlo ponad dwa razy. Slyszalem nawet ze matlab wykorzystuje
CUDA, a na tamtym kompie byla karta grafiki z ta technologia.
> Skontaktuj sie z nimi i zapytaj o podiane bibliotek na superprocek.
Nie chce mi sie, pokazalem ze na najprostszym przykladzie radzi
sobie gorzej, wiec dlaczego mam dawac waire ze na zaawansowanych
procedurach radzi sobie lepiej?
> Po trzecie. Wydajnosc matlaba to sprawa drugorzedna. 70% to
> niezly wynik.
To inna sprawa z ktora sie zgadzam. Po prostu czesto mnie
zasypywano informacjami o super wydajnosci matlaba, a teraz
wiem ze wydajnosc raczej ma przecietna.
> Matlab to taka pierwsza linia frontu:) Mozesz sobie poeksperymentowac,
> wszytko masz pod reka, a jesli dane do obliczen/symulacji/obrobki
> beda duze i zalezec Ci bedzie na tym czynniku rzedu 2, posiedzisz
> dwa tygodnia lub miesiace i napiszesz to w c/c++/fortranie.
Z tym sie tez zawsze zgadzalem, to inna sprawa.
Pozdrawiam serdecznie
-
13. Data: 2010-01-18 19:41:57
Temat: Re: matlab taki wydajny?
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Wiktor S. <wswiktor&poczta,fm@no.spam> napisał(a):
> Mnie zastanawia, jakie sa zastosowania, w których sie faktycznie OPLACA
> wybulic TAKI majatek na Matlaba... bo jakies chyba sa, skoro program zyje?
Matlab ma pierdyliard funkcji, sporo zastosowań się znajdzie :)
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 0 days, 1 hours, 6 minutes and 21 seconds
-
14. Data: 2010-01-18 19:50:52
Temat: Re: matlab taki wydajny?
Od: Mariusz Marszałkowski <m...@g...com>
On 18 Sty, 20:20, "Wiktor S." <wswiktor&poczta,f...@no.spam> wrote:
> > Dlaczego mam sie nie dziwic? Matlab chyba jest cholernie drogi?
>
> Mnie zastanawia, jakie sa zastosowania, w których sie faktycznie OPLACA
> wybulic TAKI majatek na Matlaba... bo jakies chyba sa, skoro program zyje?
>
Nie wiem... może są, może nie ma... Dziś do jednego zadania czesto
istnieje
dużo rozwiązań, od darmowych po cholernie drogie, albo wrecz po pisane
specjalnie
na zamowienienie. Ciekzko powiedziec obiektywnie w jakim stopniu zycie
drogich pakietow zalezy od niewiedzy klientow, a w jakim od
faktyczniej
przydatnosci i braku alternatywnego taniszego rozwiazania. Zycie
pokazuje
ze dobry i tani produkt moze umrzec z powodu zlego marketingu, a
kiepski i
drogi moze przynosic zyski dzieki dobrej reklamie.
Pozdrawiam
-
15. Data: 2010-01-18 20:24:06
Temat: Re: matlab taki wydajny?
Od: Michoo <m...@v...pl>
Mariusz Marszałkowski pisze:
>
>> Po trzecie. Wydajnosc matlaba to sprawa drugorzedna. 70% to
>> niezly wynik.
> To inna sprawa z ktora sie zgadzam. Po prostu czesto mnie
> zasypywano informacjami o super wydajnosci matlaba, a teraz
> wiem ze wydajnosc raczej ma przecietna.
Napisz teraz to samo mnożenie macierzy w javie i porównaj wyniki. Okaże
się, że matlab jest wyjątkowo szybki. ;)
--
Pozdrawiam
Michoo
-
16. Data: 2010-01-18 22:08:18
Temat: Re: matlab taki wydajny?
Od: "Wiktor S." <wswiktor&poczta,fm@no.spam>
>> Mnie zastanawia, jakie sa zastosowania, w których sie faktycznie
>> OPLACA wybulic TAKI majatek na Matlaba... bo jakies chyba sa, skoro
>> program zyje?
> Matlab ma pierdyliard funkcji, sporo zastosowań się znajdzie :)
Ale nie za fafdziesiąt tysięcy... no chyba że piracimy, wtedy tak.
--
Azarien
-
17. Data: 2010-01-19 01:52:07
Temat: Re: matlab taki wydajny?
Od: bartekltg <b...@g...com>
On 18 Sty, 20:26, Mariusz Marszałkowski <m...@g...com> wrote:
> Niemożliwe aby jedna pętla zajmowała porównywalną ilość
> czasu do 6mln operacji. Może matlab użył innego algorytmu?
> Albo czegos nie zrozumialem....
Tak, liczymy to inaczaj. Macierz potegowana jest matoda
binarna. Obliczenia k tej potegi zajmuje cos rzedu log_2 k
mnozej naszych kwadratowych macierzy n*n. (chyba 3log k)
Czyli mamy n^3 *log k + nieistotne
Dla duzych k moze byc to szybsze niz Twoja metoda,
czyli k*n^2.
[i tu znow wychodzi glowna zaleta takich pakietow, napisanie
tego uzywajac np BLAS'a zajelo by chwile, jesli nie masz w tej
bibliotece wprawy, nie mowiac juz o napisanie calosci samemu.]
> Nie rozumie, a co ja porównałem jak nie mnożenie macierzy?
Porownales wektor * macierz. Ja zastanawialem sie nad porownaniem
mnozenia 2 macierzy kwadratowych (i nieco wiekszych niz 1000).
> Napisałem wydajniej to co opisałem: mnożenie macierzy o
> rozmiarze Nx1 przez macierz MxN. Super wydajny pakiet powinien
> mieć specjalną implementację do takich macierzy.
A nie jest to wydajne? Masz czas tego samego rzedu co w jezyku
kompilowalnym (i to skompilowanem pod swoj system i procek!).
Chcesz z maksymalna moca swojego komputera robic ceizkie
obliczenia gdzie te 30% jest istotne.. chyba bedzie trzeba
zatrudnic programiste. Albo doktoranta:)
A skad te glosy ze jest super wydajne? Moze od ludzi,
ktorzy robili to w Ja.. jakims podejrzanym jezyku skryptowym
bez uzycia bilioteki. Albo od ludzi, ktorym mnozenie macierzy
pisal ow doktorant:)
Porownalem z pythonem i bibliotekami numpy i scipy,
mnozenie 2 macierzy. Wyniki identyczne jak w matlabie.
BTW, rozumeim, ze pusciels oba parokrotnie i porownales
najlepszy z najlepszym.
> > Sprawa zapewne rozbija sie o lepsze uzycie procesora,
> > programiki z c je wykorzystuje, matlab raczej nie
> > (czy daja wersje pod rozne procesory, nie wiem, moj jest uczelniany
> > i bebecham malo mnie obchodza, ale watpie).
>
> Też mnie to nie bardzo obchodzi, ale od co najmniej roku slysze
> ze matlab jest baaardzo wydajny i jak uzyje jego procedur to
> bede mail szybsze niz swoje. A tu prosze, podstawowa procedura i
> jest prawie dwa razy wolniej. Nie bawilem sie opcjami gcc, moze by
Moze rzeczywiscie pisali mnozenie macierzy w javie;)
A jestes pewien, ze niewielkim nakladem pracy zbudujesz dobry
algorytm numeryczny. Wydajne PCG dla macierzy rzadkich,
roznego rodzaju rozklady, czy uniwersalna szukaczke minimow.
To, ze podstawowe operacje sa ciut wolniejsze nie oznacza,
ze osoba majaca kontakt z numeryka tylko przy okazji
napisze szybszy kod.
> wyszlo ponad dwa razy. Slyszalem nawet ze matlab wykorzystuje
> CUDA, a na tamtym kompie byla karta grafiki z ta technologia.
Podejrzewam, ze trzeba mu kazac (byc moze sa to osobne funkcje).
I miec wersje (toolboxa?) pozwalajaca na to.
> > Skontaktuj sie z nimi i zapytaj o podiane bibliotek na superprocek.
>
> Nie chce mi sie, pokazalem ze na najprostszym przykladzie radzi
> sobie gorzej, wiec dlaczego mam dawac waire ze na zaawansowanych
> procedurach radzi sobie lepiej?
Szczerze mowiac, wybrales zagadneinie nad ktorym srednio sie
pochylali. Patrz koniec postu.
A bardziej zaawansowane algorytmy to cos wiecej niz dwie/trzy petle.
Jak chesz naprawde porownac matlaba i swoj kod, zrob to
na czyms powazniejszym, LUP (wbudowana), znajdowanie
wektortow wlasnych (wbudowana, cholski i QZ) albo PCG (skrypt).
Pewnie da sie napisac w c szybiej (trzecia na pewno;))
zwlaszcza na konkretny procek, ale wymagac bedzie juz odrobiny
wysilku.
> > Po trzecie. Wydajnosc matlaba to sprawa drugorzedna. 70% to
> > niezly wynik.
>
> To inna sprawa z ktora sie zgadzam. Po prostu czesto mnie
> zasypywano informacjami o super wydajnosci matlaba, a teraz
> wiem ze wydajnosc raczej ma przecietna.
Ja nadal uwazam, ze jesli pakiet numeryczny daje ten sam rzad
wielkosci, to jest przyzwoity wynik.
W miare mozliwosci (trzeba napisac) zrob to porownanie przy mnozeniu
dwuch macierzy 1000x1000. Roznica powinna sie znacznie zmniejszyc.
Przy okazji:
Zrobilem tez prosty test. Macierz 1000x1000 mnoze przez
256 wektorow, ale na rozne sposoby. Mnoze 2^j razy paczki
po 256/2^j wektorow.
a=rand(1000);
t=[];
for j=8:-1:2,
v=rand(2^(8-j),1000);
tic;
for k=1:2^j,
v*a;
end;
t=[t;toc];
end;
Wyniki:
petli wektorow w pakiecie czas
256 1 3.6121
128 2 2.2496
64 4 1.3139
32 8 0.80334
16 16 0.65687
8 32 0.53299
4 64 0.5166
Za kazdym razem mnozylismy tyle samo wektorow.
Sredni czas na wektor dosc mocno spadal, jesli robilismy
to na raz. Przyszpieszylismy szesciokrotnie!
Teraz zaczynam sie dziwic, dlaczego Twoj program
byl tylko niecale dwa raza szybszy (jemu wszytko jedno
czy mnozymy po koleji, czy hurtem).
pozdrawiam
bartekltg
-
18. Data: 2010-01-19 02:19:49
Temat: Re: matlab taki wydajny?
Od: bartekltg <b...@g...com>
On 18 Sty, 23:08, "Wiktor S." <wswiktor&poczta,f...@no.spam> wrote:
> >> Mnie zastanawia, jakie sa zastosowania, w których sie faktycznie
> >> OPLACA wybulic TAKI majatek na Matlaba... bo jakies chyba sa, skoro
> >> program zyje?
> > Matlab ma pierdyliard funkcji, sporo zastosowań się znajdzie :)
>
> Ale nie za fafdziesiąt tysięcy... no chyba że piracimy, wtedy tak.
A moze uzyc dosc czestego tu argumentu z watków
'czemu nikt nie pisze wydfajengo oprogramowania'
Mamy jajoglowego. Jego praca tez cos kosztuje.
Lepiej, aby marnowal czas babrzac sie w kodowanie
po raz n-ty w skali swiata algorytmu kogostam-kogostam,
wynajac programiste*), czy kupic mu narzedzie, ktore
jest znacznie prostrze (nie mowie prostrze, ale jajoglowy
to sie nauczy) a zaoszczedzi czas na grzebanie sie
nie tam gdzie trzeba.
*) jesli bawimy sie w symulowanie, modelowanie etc
na odpowiednim pozioime, to i oni beda konieczni,
ale na etapie posrednim bardziej przydaje sie ktos
obaznany z numeryka, a i wtedy ma raczej myslec
nad algorytmami a nie bawic sie w kodowanie.
pozdrawiam
bartekltg
-
19. Data: 2010-01-19 06:15:15
Temat: Re: matlab taki wydajny?
Od: Mariusz Marszałkowski <m...@g...com>
On 19 Sty, 02:52, bartekltg <b...@g...com> wrote:
> On 18 Sty, 20:26, Mariusz Marszałkowski <m...@g...com> wrote:
>
> > Nie rozumie, a co ja porównałem jak nie mnożenie macierzy?
>
> Porownales wektor * macierz. Ja zastanawialem sie nad porownaniem
> mnozenia 2 macierzy kwadratowych (i nieco wiekszych niz 1000).
Nie wiem czy się skuszę (mam masę innych rzeczy do testowana) na
taki test, ale może... Nie znam tego algorytmu który ma mniejszą
złożoność niż N^3. Obecnie jakie jest dokładne teoretyczne
ograniczenie?
Może jakbym miał przystępnie opisany ten algorytm to bym napisał w
gołym C.
Zapodajcie linka do dobrego algorytmu, może spróbuję.
> > Napisałem wydajniej to co opisałem: mnożenie macierzy o
> > rozmiarze Nx1 przez macierz MxN. Super wydajny pakiet powinien
> > mieć specjalną implementację do takich macierzy.
>
> A nie jest to wydajne? Masz czas tego samego rzedu co w jezyku
> kompilowalnym (i to skompilowanem pod swoj system i procek!).
Zależy jak oceniać. Słyszałem opinie z których wynikało że
matlab to wszystko robi z 50 razy szybciej. W świetle tamtych
opinii wypadł śmiesznie, i głównie to chciałem sprawdzić. A
czy jest 2 razy szybszy czy 2 razy wolniejszy to osobiście
zgadzam się że nie powód do oceniania pakietu. Chciałem się
tylko upewnić czy nie jest 50 razy lepszy :)
> Chcesz z maksymalna moca swojego komputera robic ceizkie
> obliczenia gdzie te 30% jest istotne.. chyba bedzie trzeba
> zatrudnic programiste. Albo doktoranta:)
Przy jednym z moich projektów miesięczny rachunek za energię
na komputery liczące to około 1000zł. Dużo nie brakuje aby
starczyło na wypłatę dla nastepnego programisty...
> A skad te glosy ze jest super wydajne? Moze od ludzi,
> ktorzy robili to w Ja.. jakims podejrzanym jezyku skryptowym
> bez uzycia bilioteki. Albo od ludzi, ktorym mnozenie macierzy
> pisal ow doktorant:)
Właśnie od różnych ludzi i z różnych środowisk, w
końcu mnie sprowokowali.
> BTW, rozumeim, ze pusciels oba parokrotnie i porownales
> najlepszy z najlepszym.
Tak. Właściwie mój brat jeszcze zaczął kompilować projekt w
gcc z różnymi opcjami aby jeszcze przyspieszyć, ale już
nic nie pomagało.
> Moze rzeczywiscie pisali mnozenie macierzy w javie;)
Sadze ze w ogole nie pisali i w ogole nie porownywali czasow,
tylko ulegli marketingowi matlaba.
> A jestes pewien, ze niewielkim nakladem pracy zbudujesz dobry
> algorytm numeryczny. Wydajne PCG dla macierzy rzadkich,
> roznego rodzaju rozklady, czy uniwersalna szukaczke minimow.
Niewielkim to niemozliwe, no chyba ze znam algorytm i juz
kiedys go implementowalem.
> Podejrzewam, ze trzeba mu kazac (byc moze sa to osobne funkcje).
> I miec wersje (toolboxa?) pozwalajaca na to.
Nie wiem, mozliwe.
> > > Skontaktuj sie z nimi i zapytaj o podiane bibliotek na superprocek.
>
> > Nie chce mi sie, pokazalem ze na najprostszym przykladzie radzi
> > sobie gorzej, wiec dlaczego mam dawac waire ze na zaawansowanych
> > procedurach radzi sobie lepiej?
>
> Szczerze mowiac, wybrales zagadneinie nad ktorym srednio sie
> pochylali. Patrz koniec postu.
Ale mogil sie postarac a wrecz powinni. Wystarczy rozpoznac
ze mnozymy wektor przez macierz i dac goto do wyspecjalizowanej
procedurki. Tak samo jesli mnozymy macierz [NxK] przez [KxM] dla
M i N znacznie wiekszych niz K, to jakas wyspecjalizowana procedura
wymnozylaby duzo szybciej niz ogolna.
> A bardziej zaawansowane algorytmy to cos wiecej niz dwie/trzy petle.
> Jak chesz naprawde porownac matlaba i swoj kod, zrob to
> na czyms powazniejszym, LUP (wbudowana), znajdowanie
> wektortow wlasnych (wbudowana, cholski i QZ) albo PCG (skrypt).
> Pewnie da sie napisac w c szybiej (trzecia na pewno;))
> zwlaszcza na konkretny procek, ale wymagac bedzie juz odrobiny
> wysilku.
Zgadza sie, nigdy temu nie zaprzeczalem.
> Ja nadal uwazam, ze jesli pakiet numeryczny daje ten sam rzad
> wielkosci, to jest przyzwoity wynik.
Ja tez tak podejrzewam, ale teraz tez wiem ze nie ma
implementacji 50 razy wydajniejszych.
> W miare mozliwosci (trzeba napisac) zrob to porownanie przy mnozeniu
> dwuch macierzy 1000x1000. Roznica powinna sie znacznie zmniejszyc.
Nie obiecuje, ale sprobuje, tylko zapodajcie dobry opis algorytmu,
nigdy
nie implementowalem lepszego algorytmu mnozenia macierzy.
>
> Przy okazji:
>
> Zrobilem tez prosty test. Macierz 1000x1000 mnoze przez
> 256 wektorow, ale na rozne sposoby. Mnoze 2^j razy paczki
> po 256/2^j wektorow.
>
> a=rand(1000);
> t=[];
> for j=8:-1:2,
> v=rand(2^(8-j),1000);
> tic;
> for k=1:2^j,
> v*a;
> end;
> t=[t;toc];
> end;
>
> Wyniki:
>
> petli wektorow w pakiecie czas
> 256 1 3.6121
> 128 2 2.2496
> 64 4 1.3139
> 32 8 0.80334
> 16 16 0.65687
> 8 32 0.53299
> 4 64 0.5166
>
> Za kazdym razem mnozylismy tyle samo wektorow.
> Sredni czas na wektor dosc mocno spadal, jesli robilismy
> to na raz. Przyszpieszylismy szesciokrotnie!
> Teraz zaczynam sie dziwic, dlaczego Twoj program
> byl tylko niecale dwa raza szybszy (jemu wszytko jedno
> czy mnozymy po koleji, czy hurtem).
Może mieć algorytm o lepszej zlozonosci niż N^3 i
jego moc się nie ujawnia gdy mnozymy macierze
podobne do wierszowych.
Pozdrawiam serdecznie
-
20. Data: 2010-01-19 07:40:17
Temat: Re: matlab taki wydajny?
Od: Maciej Pilichowski <P...@g...com>
On Mon, 18 Jan 2010 23:08:18 +0100, "Wiktor S."
<wswiktor&poczta,fm@no.spam> wrote:
>> Matlab ma pierdyliard funkcji, sporo zastosowań się znajdzie :)
>
>Ale nie za fafdziesi?t tysięcy... no chyba że piracimy, wtedy tak.
To zalezy ile pakietow sobie dokupisz. Matlab edu to koszt az 400
zlotych bodajze. Bez przesady.
milego dnia, hej