eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › matlab taki wydajny?
Ilość wypowiedzi w tym wątku: 89

  • 31. Data: 2010-01-21 08:41:02
    Temat: Re: matlab taki wydajny?
    Od: bartekltg <b...@g...com>

    On 21 Sty, 09:22, thrunduil <t...@w...pl> wrote:

    > To jest w zasadzie niemozliwe. Kod mnozenia macierzy jest bardzo

    Nie mow za wczesnie niemozliwe, bo pozniej trzeba bedzie odkrecac:)

    U mnie dzieje sie to samo, przy parametrach jakie podal Mariusz
    mnozenia te nie sa robione zbyt wydajnie.

    > zlozony. Bez naprawde dobrze stuningowanego memory use, wstaweg
    > asemblerowych
    > i dlugiego testowania parametrow optymalizacyjnych nie ma szans na
    > zblizenie sie do wydajnosci Matlaba. Istnieja szybsze implementacje
    > mnozenia macierzy,
    > np GOTO blas jest ok 10% szybszy, ale i tak to jest w zasadzue
    > technologiczny limit na dzisiaj.
    > Kod Matlabla (tj bibliteka MKL, matlab nie napisal tego kodu sam)
    > jest o rzad wielkosci szybszy od dobrze stuningowanego kodu w C.

    Dwie rownowazne operacje (1000 wektorow mnozymy przez macierz 1000 na
    1000),
    tylko raz w petli, a raz zwijamy w paczuszke. Jak wynikalo z
    sasiedniego
    postu, algorytm jest ten sam bo matlab korzysta z n^3.

    >> tic;a*b;toc
    Elapsed time is 2.585347 seconds.

    >> tic,for j=1:1000,a*v;end;toc
    Elapsed time is 15.379616 seconds.

    No to sie okazuje, ze narzut matlaba dla niewielkich wektorkow jest
    spory.
    Intelowski BLAS pokazuje skrzydla dopiero dla konkretnej ilosci
    danych.

    Sam uwzam, ze nie jest to szczegolnie uciezliwe, nie zdarzylo mi sie
    na to narzekac, to nadal malutkie macierze a mnozyc ciagle
    wektor chce raczej przez macierz rzadka (a wektor ma megabajty)
    ale moge sobie wyobrazic zagadnienia, gdzie taka operacja bedzie
    dominujaca.

    pozdrawiam
    bartekltg


  • 32. Data: 2010-01-21 08:54:27
    Temat: Re: matlab taki wydajny?
    Od: bartekltg <b...@g...com>

    On 21 Sty, 09:28, Wit Jakuczun <w...@g...com> wrote:
    > On 21 Sty, 09:18, bartekltg <b...@g...com> wrote:
    >
    > > > 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.
    >
    > > Dla bardzo malych K mozna by sie bawic w rozwijanie petli.
    > > Dla wiekszych - nie ma znaczenia przy algorytmie n^3.
    >
    > Może to rzuci jakieś światło na całą dyskusję (slaj
    16ty):http://www-users.mat.uni.torun.pl/~bala/wyklad
    _arch/wshop2000.pdf
    > Złożoność ciągle jest N^3 ale działa szybciej niż pętelki.

    > Blokowe mnożenie wykorzystuje ATLAS. Idea jest taka, żeby
    > cache maskymalnie efektywnie wykorzystać.
    > Ja kiedyś robiłem porównania ATLAS vs ręczny kod i ATLAS był
    > dużo szybszy. Z tego co pamiętam to oprócz mnożenia rozwiązywałem
    > układy równań.

    Zgoda. Ale to nadal ten sam algorytm, wykonuje sie dokaldnie te same
    mnozenie, jedynie w rozsadniejszej dla procesora kolejnosci.

    > http://www.mimuw.edu.pl/~przykry/matmult.php

    Szkoda, ze nie wiedzialem;)

    pozdrawiam
    bartekltg


  • 33. Data: 2010-01-21 09:03:44
    Temat: Re: matlab taki wydajny?
    Od: Wit Jakuczun <w...@g...com>

    On 21 Sty, 09:54, bartekltg <b...@g...com> wrote:

    > > Może to rzuci jakieś światło na całą dyskusję (slaj
    16ty):http://www-users.mat.uni.torun.pl/~bala/wyklad
    _arch/wshop2000.pdf
    > > Złożoność ciągle jest N^3 ale działa szybciej niż pętelki.
    > > Blokowe mnożenie wykorzystuje ATLAS. Idea jest taka, żeby
    > > cache maskymalnie efektywnie wykorzystać.
    > > Ja kiedyś robiłem porównania ATLAS vs ręczny kod i ATLAS był
    > > dużo szybszy. Z tego co pamiętam to oprócz mnożenia rozwiązywałem
    > > układy równań.
    >
    > Zgoda. Ale to nadal ten sam algorytm, wykonuje sie dokaldnie te same
    > mnozenie, jedynie w rozsadniejszej dla procesora kolejnosci.
    >
    Czyli nie ten sam :). Teoretyczna złożoność taka sama ale praktycznie
    to są różne algorytmy.

    > >http://www.mimuw.edu.pl/~przykry/matmult.php
    >
    > Szkoda, ze nie wiedzialem;)
    >
    Ja wiedziałem ale to wiele nie zmieniło... :D

    Pozdrawiam,
    Wit Jakuczun


  • 34. Data: 2010-01-21 09:07:27
    Temat: Re: matlab taki wydajny?
    Od: bartekltg <b...@g...com>

    On 21 Sty, 10:03, Wit Jakuczun <w...@g...com> wrote:

    > Czyli nie ten sam :). Teoretyczna złożoność taka sama ale praktycznie
    > to są różne algorytmy.

    Nie tylko zlozonosc. Nawet ilosc operacji mnozenia doubli
    taka sama:)

    > > >http://www.mimuw.edu.pl/~przykry/matmult.php
    >
    > > Szkoda, ze nie wiedzialem;)
    >
    > Ja wiedziałem ale to wiele nie zmieniło... :D

    Popatrzylem na najszybszy kod. Odechcailo mi sie:)

    pozdrawiam
    bartekltg


  • 35. Data: 2010-01-21 09:08:27
    Temat: Re: matlab taki wydajny?
    Od: thrunduil <t...@w...pl>

    On 21 Sty, 09:41, bartekltg <b...@g...com> wrote:

    > U mnie dzieje sie to samo, przy parametrach jakie podal Mariusz
    > mnozenia te nie sa robione zbyt wydajnie.

    Co to znaczy, ze nie sa robione zbyt wydajnie?
    MKL jest pisany tak, zeby byc bardzo optymalnym juz przy macierzach
    rzedu 30x30.
    To jest blisko dolnego limitu wielkosci blokow wykorzystywanych w
    Lapacku u musi byc optymalne.

    > No to sie okazuje, ze narzut matlaba dla niewielkich wektorkow jest
    > spory.

    To nie ma nic wspolnego z narzutem Matlaba.
    To sie nie skaluje liniowo. Kod mnozenia gdy prawa strona jest
    macierza robi pewna sztuczke - blocking, podstawowy kod mnozenia ma
    conajmniej szesc zagniezdzonych petli w taki sposob aby potrzebne
    rzeczy byly w pamieci cache.
    Cache misses dla L2 to koszt rzedu 200-300 cykli procesora. Unikniecie
    wiec koniecznosci czytania pamieci daje duze oszczednosci.
    Da sie to zrobic gdy prawa strona jest macierza, Gdy mnozy sie
    wielkokrotnie przez wektor z prawej strony wykorzystanie pamieci jest
    duzo gorsze, stad roznica efektywnosci. Narzut petli powinien byc
    zaniedbywalny.

    > Intelowski BLAS pokazuje skrzydla dopiero dla konkretnej ilosci
    > danych.

    Nie specjalnie pokazuje, peak jest dla macierzy ok 1.5tys x 1.5 tys.
    Pozniej nastepuje pewne zalamanie.


  • 36. Data: 2010-01-21 09:57:49
    Temat: Re: matlab taki wydajny?
    Od: thrunduil <t...@w...pl>

    On 21 Sty, 10:07, bartekltg <b...@g...com> wrote:

    > Popatrzylem na najszybszy kod. Odechcailo mi sie:)

    http://lwn.net/Articles/255364/

    tutaj duzo lepiej widac co sie dzieje


  • 37. Data: 2010-01-21 10:01:42
    Temat: Re: matlab taki wydajny?
    Od: Wit Jakuczun <w...@g...com>

    On 21 Sty, 10:57, thrunduil <t...@w...pl> wrote:
    > On 21 Sty, 10:07, bartekltg <b...@g...com> wrote:
    >
    > > Popatrzylem na najszybszy kod. Odechcailo mi sie:)
    >
    > http://lwn.net/Articles/255364/
    >
    > tutaj duzo lepiej widac co sie dzieje

    Dobry artykuł. Dzięki.


    Pozdrawiam,
    Wit Jakuczun


  • 38. Data: 2010-01-21 10:40:03
    Temat: Re: matlab taki wydajny?
    Od: Mariusz Kruk <M...@e...eu.org>

    epsilon$ while read LINE; do echo \>"$LINE"; done < "thrunduil"
    >MKL jest pisany tak, zeby byc bardzo optymalnym juz przy macierzach
    >rzedu 30x30.

    Co to znaczy "bardzo optymalnym"?


    --
    [------------------------]
    [ K...@e...eu.org ]
    [ http://epsilon.eu.org/ ]
    [------------------------]


  • 39. Data: 2010-01-21 11:33:19
    Temat: Re: matlab taki wydajny?
    Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>

    On 2010-01-21, Mariusz Kruk <M...@e...eu.org> wrote:
    > epsilon$ while read LINE; do echo \>"$LINE"; done < "thrunduil"
    >>MKL jest pisany tak, zeby byc bardzo optymalnym juz przy macierzach
    >>rzedu 30x30.
    >
    > Co to znaczy "bardzo optymalnym"?

    W wolnym tłumaczeniu: "bardzo najlepszy".

    --
    Secunia non olet.
    Stanislaw Klekot


  • 40. Data: 2010-01-21 13:23:56
    Temat: Re: matlab taki wydajny?
    Od: thrunduil <t...@w...pl>

    On 21 Sty, 11:40, Mariusz Kruk <M...@e...eu.org> wrote:

    > Co to znaczy "bardzo optymalnym"?

    wezmy dowolny problem optymalizacji praktycznej -> jest funkcja i
    zbior solverow numerycznych.
    Kazdy solver daje rozwiazanie optymalne, ale jedne bardziej inne mniej.

strony : 1 ... 3 . [ 4 ] . 5 ... 9


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: