-
Data: 2010-01-25 06:45:04
Temat: Re: matlab taki wydajny?
Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 24 Sty, 11:23, thrunduil <t...@w...pl> wrote:
> On 23 Sty, 10:11, Mariusz Marszałkowski <m...@g...com> wrote:
>
> > Przy mnozeniu macierzy wierszowej przez prostokatna juz wiem
> > na 100% ze matlab nie jest o zaden rzad wielkosci szybszy, tylko
> > jest dwa razy wolniejszy od procedury napisanej doslownie na
> > kolanie w C++.
>
> to bylo sprawdzane czy sa to tylko domysly?
>
> bo podany kod mnozenia macierzy byl >10x wolniejszy od matlaba.
To byl moj kod wiecz czuje sie wywolany do usprawiedliwien.
Tamten kod byl napisany przed odrobieniem lekcji i skakal
po macierzy nie w tej kolejnosci, w jakiej lubi to cache.
Napisalem trzy wersje mnozenia poziomego wektora przez macierz
naiwna ze zla kolejnoscia petli, naiwna z dobra kolejnoscia
i wariacje na temat blokowego mnozenia macierzy.
n=960. Wszystko, program w cpp i matlab dostawaly piorytet real time.
naiwny, złe petle 51.345
naiwny, ok 7.923
blok32 8.705
blok16 6.865
blok8 4.886
blok4 5.476
MATLAB 8.899
tic,for j=1:960,w=v*M;end;toc
Mam nadzieje, ze tym razem nie strzelilem babola;)
void mnoz (double *w,double *M,double *v,int n)
{//petle ok
for (int i=0;i<n;i++)
{
v[i]=0;
}
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
v[j]=w[i]*M[n*i+j];
}
}
void mnoz_naiw(double *w,double *M,double *v,int n)
{//zle petle
for (int i=0;i<n;i++)
{
v[i]=0;
}
for (int j=0;j<n;j++)
for (int i=0;i<n;i++)
v[j]=w[i]*M[n*i+j];
}
template<class T, int SN>
void blokmnoz (T *w,T *M,T *v,int n)
{
for (int i=0;i<n;i++)
{
v[i]=0;
}
for (int i=0;i<n;i+=SN)
{
for (int j=0;j<n;j+=SN)
{
for (int ii=i;ii<i+SN;ii++)
{
for (int jj=j;jj<j+SN;jj++)
v[jj]=w[ii]*M[n*ii+jj];
}
}
}
}
pozdrawiam
bartekltg
Następne wpisy z tego wątku
- 03.02.10 17:23 Adam Piotrowski
- 03.02.10 21:19 Mariusz Marszałkowski
- 04.02.10 09:31 Roman Werpachowski
- 04.02.10 10:40 Adam Przybyla
- 05.02.10 03:43 Mariusz Marszałkowski
- 05.02.10 06:53 bartekltg
- 05.02.10 06:55 bartekltg
- 05.02.10 16:54 Mariusz Marszałkowski
- 05.02.10 17:17 Mariusz Marszałkowski
- 05.02.10 21:58 bartekltg
- 06.02.10 00:26 Mariusz Marszałkowski
- 06.02.10 01:26 bartekltg
- 06.02.10 05:50 Mariusz Marszałkowski
- 06.02.10 22:22 Roman Werpachowski
- 08.02.10 21:38 bartekltg
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-03-12 Ryga => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i Kad
- 2025-03-12 Poznań => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-03-12 Warszawa => Programista C <=
- 2025-03-12 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-03-12 64 proc. kierowców zrobi dodatkowo maks. 500 m, aby przy okazji zatankować pojazd
- 2025-03-12 Warszawa => Generative AI Engineer <=
- 2025-03-12 Dęblin => Node.js / Fullstack Developer <=
- 2025-03-12 Warszawa => Gen AI Engineer <=
- 2025-03-12 Warszawa => Data Engineer (Tech Lead) <=
- 2025-03-12 Gdańsk => PHP Developer <=
- 2025-03-12 China-Kraków => Production Coordinator / Representant Product Dev <=
- 2025-03-12 Warszawa => JavaScript / Node / Fullstack Developer <=
- 2025-03-12 China-Kraków => Key Account Manager IT <=
- 2025-03-12 Warszawa => Java Developer <=
- 2025-03-12 Warszawa => Junior Digital Product Manager <=