- 
 1. Data: 2010-01-23 01:28:58
 Temat: no to ile czasu matlab mnozy te duze macierze?
 Od: Mariusz Marszałkowski <m...@g...com>
 Witam 
 
 Mam kod w C/C++. Kod jest caly czas kodem napisanym na szybkiego, jak
 ktos znajdzie bledy, to poprawimy. Kod oczywiscie realizuje mnozenie
 macierzy.
 
 Testowalem dla macierzy [1024,1024] x [1024,1024].
 Sprzet: Intel Atom N270 (energooszczedny, w rankingu wypada 15-20 razy
 gorzej niz i7)
 Kompilator gcc pod windows (mingw) wersja 4.4.0
 
 Polecenie kompilacj:
 g++ -O3 *.cpp
 czas dla double: 9-10s
 czas dla float: 9-10s
 Polecenie kompialcji:
 g++ -O3 -march=native -mtune=native *.cpp
 czas dla double: 6-7s
 czas dla float 6-7s
 
 Bede wdzieczny jak ktos poda czasy dla matlaba na podbym sprzecie.
 Podoby
 sprzet to np. AMD Sempron 2300+ 1.6GHz. Osobiscie nie podaje czasow
 dla matlaba, bo nie mam wykupionej licencji.
 
 W kodzie jest tez zamieszczony algorytm z naiwnym dostepem do
 pamieci, dzialal okolo 20 razy wolniej. Moja wersja algorytm z
 lepszym
 trafianiem w pamiec cache korzysta z dodatkowej kopii i pamieci, a
 wiec ma gorsza zlozonosc pamieciowa, ale to z powodu mojego
 lenistwa. Algorytm moze dzialac w miejscu malym kosztem czasu.
 Jesli ktos zechce napisac wersje transponujaca macierz w miejscu, to
 bedziemy mieli jeszcze lepsze rozeznanie.
 
 Zakomentowane sa metody show, po odkomentowaniu zostana wyswietlone
 macierze na standardowe wyjscie, mozna wrzucic do innego programu i
 sprawdzic
 czy wyniki sie zgadzaja (dla mniejszych N,M,K rzecz jasna)
 
 Pozdrawiam serdecznie i czekam az to ktos porowna do matlaba.
 
 
 
 
 
 #include <cstdio>
 #include <cmath>
 #include <cstdlib>
 #include <ctime>
 
 #define N (9)
 #define M (8)
 #define K (7)
 
 typedef double m_typ;
 
 static m_typ mat_a[N][K];
 static m_typ mat_b[N][M];
 static m_typ mat_c[M][K];
 
 static void init() {
 int i,j;
 for(i=0;i<N;i++)
 for(j=0;j<M;j++)
 mat_b[i][j] = (rand()%129-64) * (m_typ)0.05;
 for(i=0;i<M;i++)
 for(j=0;j<K;j++)
 mat_c[i][j] = (rand()%129-64) * (m_typ)0.05;
 }
 
 static void mmat() {
 int i,j,k;
 for(i=0;i<N;i++)
 for(j=0;j<K;j++) {
 mat_a[i][j] = 0;
 for(k=0;k<M;k++)
 mat_a[i][j] += mat_b[i][k] * mat_c[k][j];
 }
 }
 
 static void mmat_trans() {
 int i,j,k;
 static m_typ c_trans[K][M];
 
 for(i=0;i<M;i++)
 for(j=0;j<K;j++)
 c_trans[j][i] = mat_c[i][j];
 
 for(i=0;i<N;i++)
 for(j=0;j<K;j++) {
 mat_a[i][j] = 0;
 for(k=0;k<M;k++)
 mat_a[i][j] += mat_b[i][k] * c_trans[j][k];
 }
 
 }
 
 void show(const m_typ *const m, const int r,const int c) {
 int i,j;
 for(i=0;i<r;i++) {
 for(j=0;j<c;j++)
 printf("%+7.3lf ",(double)m[i*c+j]);
 printf("\n");
 }
 printf("\n");
 }
 
 int main(int argc, char *argv[])
 {
 clock_t t;
 init();
 // show( (m_typ*)mat_b , N , M );
 // show( (m_typ*)mat_c , M , K );
 
 t = clock();
 mmat_trans();
 t = clock() - t;
 printf("czas = %d\n",(int)(t/CLOCKS_PER_SEC));
 
 // show( (m_typ*)mat_a , N , K );
 
 getchar();
 return 0;
 }
 
- 
 2. Data: 2010-01-23 01:33:42
 Temat: Re: no to ile czasu matlab mnozy te duze macierze?
 Od: Mariusz Marszałkowski <m...@g...com>
 
 Poprawka, powinno być:
 
 #define N (1024)
 #define M (1024)
 #define K (1024)
 
 Wrzucalem do excela na malych rozmiarach i przez
 pomylke zostawilem. Sorry.
 
 
- 
 3. Data: 2010-01-23 09:21:27
 Temat: Re: no to ile czasu matlab mnozy te duze macierze?
 Od: Mariusz Marszałkowski <m...@g...com>
 On 21 Sty, 09:41, bartekltg <b...@g...com> wrote: 
 > On 21 Sty, 09:22, thrunduil <t...@w...pl> wrote:
 > 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
 powinno chyba być c=a*b ?
 
 
 > Elapsed time is 2.585347 seconds.
 Na jakim sprzecie matlab mial taki wynik?
 
 Pozdrawiam
 
 
- 
 4. Data: 2010-01-23 10:01:28
 Temat: Re: no to ile czasu matlab mnozy te duze macierze?
 Od: Wit Jakuczun <w...@g...com>
 On 23 Sty, 02:28, Mariusz Marszałkowski <m...@g...com> wrote: 
 > Witam
 >
 > Mam kod w C/C++. Kod jest caly czas kodem napisanym na szybkiego, jak
 > ktos znajdzie bledy, to poprawimy. Kod oczywiscie realizuje mnozenie
 > macierzy.
 >
 > Testowalem dla macierzy [1024,1024] x [1024,1024].
 > Sprzet: Intel Atom N270 (energooszczedny, w rankingu wypada 15-20 razy
 > gorzej niz i7)
 > Kompilator gcc pod windows (mingw) wersja 4.4.0
 >
 Jak to się ma do przykładów z tego konkursu? Może porównaj Twój kod z
 kodem
 z konkursu. Będziesz miał od razu porównanie z ATLASem. Matlab
 powinien być
 na poziomie ATLASu (nie gorzej).
 
 Pozdrawiam,
 Wit Jakuczun
 
- 
 5. Data: 2010-01-23 10:07:46
 Temat: Re: no to ile czasu matlab mnozy te duze macierze?
 Od: Mariusz Marszałkowski <m...@g...com>
 On 23 Sty, 11:01, Wit Jakuczun <w...@g...com> wrote: 
 > On 23 Sty, 02:28, Mariusz Marszałkowski <m...@g...com> wrote:> Witam
 >
 > > Mam kod w C/C++. Kod jest caly czas kodem napisanym na szybkiego, jak
 > > ktos znajdzie bledy, to poprawimy. Kod oczywiscie realizuje mnozenie
 > > macierzy.
 >
 > > Testowalem dla macierzy [1024,1024] x [1024,1024].
 > > Sprzet: Intel Atom N270 (energooszczedny, w rankingu wypada 15-20 razy
 > > gorzej niz i7)
 > > Kompilator gcc pod windows (mingw) wersja 4.4.0
 >
 > Jak to się ma do przykładów z tego konkursu? Może porównaj Twój kod z
 > kodem
 > z konkursu. Będziesz miał od razu porównanie z ATLASem. Matlab
 > powinien być
 > na poziomie ATLASu (nie gorzej).
 
 Ten konkurs jest bardzo niejasno opisany, dlatego postanowiłem
 porownac czas wykonania bezpośrednio z czasem matlaba.
 
 Cytuje:
 "poniższa sekwencja jest przykładowa i w testach może
 ulec zmianie: istotne jest, że występuje w niej kilka kolejnych
 wywołań bestdgemm() */
 
 Nie wiem ile wywolan dla jakich macierzy o jakich rozmiarach bylo.
 
 Pozdrawiam
 
- 
 6. Data: 2010-01-23 10:18:56
 Temat: Re: no to ile czasu matlab mnozy te duze macierze?
 Od: Wit Jakuczun <w...@g...com>
 On 23 Sty, 11:07, Mariusz Marszałkowski <m...@g...com> wrote: 
 
 > Ten konkurs jest bardzo niejasno opisany, dlatego postanowiłem
 > porownac czas wykonania bezpośrednio z czasem matlaba.
 >
 > Cytuje:
 > "poniższa sekwencja jest przykładowa i w testach może
 > ulec zmianie: istotne jest, że występuje w niej kilka kolejnych
 > wywołań bestdgemm() */
 >
 > Nie wiem ile wywolan dla jakich macierzy o jakich rozmiarach bylo.
 >
 Ja sugerowałem, żebyś wziął np. najlepszą metodę z tego konkursu (kod
 źródłowy) i skompilował ją u siebie a następnie porównał czas dla
 testu,
 który podajesz powyżej.
 
 Pozdrawiam,
 Wit Jakuczun
 
- 
 7. Data: 2010-01-23 10:19:53
 Temat: Re: no to ile czasu matlab mnozy te duze macierze?
 Od: Mariusz Marszałkowski <m...@g...com>
 On 23 Sty, 11:18, Wit Jakuczun <w...@g...com> wrote: 
 > On 23 Sty, 11:07, Mariusz Marszałkowski <m...@g...com> wrote:
 >
 > > Ten konkurs jest bardzo niejasno opisany, dlatego postanowiłem
 > > porownac czas wykonania bezpośrednio z czasem matlaba.
 >
 > > Cytuje:
 > > "poniższa sekwencja jest przykładowa i w testach może
 > > ulec zmianie: istotne jest, że występuje w niej kilka kolejnych
 > > wywołań bestdgemm() */
 >
 > > Nie wiem ile wywolan dla jakich macierzy o jakich rozmiarach bylo.
 >
 > Ja sugerowałem, żebyś wziął np. najlepszą metodę z tego konkursu (kod
 > źródłowy) i skompilował ją u siebie a następnie porównał czas dla
 > testu,
 > który podajesz powyżej.
 >
 Dobry pomysl.
 
- 
 8. Data: 2010-01-23 10:37:34
 Temat: Re: no to ile czasu matlab mnozy te duze macierze?
 Od: Mariusz Marszałkowski <m...@g...com>
 On 23 Sty, 11:19, Mariusz Marszałkowski <m...@g...com> wrote: 
 > On 23 Sty, 11:18, Wit Jakuczun <w...@g...com> wrote:
 >
 > > On 23 Sty, 11:07, Mariusz Marszałkowski <m...@g...com> wrote:
 >
 > > > Ten konkurs jest bardzo niejasno opisany, dlatego postanowiłem
 > > > porownac czas wykonania bezpośrednio z czasem matlaba.
 >
 > > > Cytuje:
 > > > "poniższa sekwencja jest przykładowa i w testach może
 > > > ulec zmianie: istotne jest, że występuje w niej kilka kolejnych
 > > > wywołań bestdgemm() */
 >
 > > > Nie wiem ile wywolan dla jakich macierzy o jakich rozmiarach bylo.
 >
 > > Ja sugerowałem, żebyś wziął np. najlepszą metodę z tego konkursu (kod
 > > źródłowy) i skompilował ją u siebie a następnie porównał czas dla
 > > testu,
 > > który podajesz powyżej.
 >
 > Dobry pomysl.
 
 Niestety mój kompilator nie kompiluje najszybszego programu. Z jakiś
 powodów mingw32 w wesji 4.4.0 nie zostalo wyposazone w pthread.
 Poza tym najszybszy kod uzywa SSE2, nie wiem czy maszyna na
 ktorej to kompiluje ma SSE2, mingw najwyrazniej tez nie ma. Kolejna
 sprawa: najszybszy algorytm ten uzywa strassena (a przynajmniej ma
 procedure o takiej nazwie)
 
 Wiec na razie bazuje na tym, ze moj kod (napisany na kolanie)
 dziala 6s na intel atom N270, a matlab 2.5s na niewiadomym
 sprzecie.
 
 Pozdrawiam serdecznie.
 
- 
 9. Data: 2010-01-24 10:18:04
 Temat: Re: no to ile czasu matlab mnozy te duze macierze?
 Od: thrunduil <t...@w...pl>
 On 23 Sty, 11:37, Mariusz Marszałkowski <m...@g...com> wrote: 
 
 
 > Wiec na razie bazuje na tym, ze moj kod (napisany na kolanie)
 > dziala 6s na intel atom N270, a matlab 2.5s na niewiadomym
 > sprzecie.
 
 dany kod dla AxB gdzie A,B = 1024x1024, czas = 2.13 sec.
 matlab dla AxB, czas = .168 sec
 
 czyli matlab jest 12x szybszy.
 
- 
 10. Data: 2010-01-24 12:45:24
 Temat: Re: no to ile czasu matlab mnozy te duze macierze?
 Od: Mariusz Marszałkowski <m...@g...com>
 On 24 Sty, 11:18, thrunduil <t...@w...pl> wrote: 
 > On 23 Sty, 11:37, Mariusz Marszałkowski <m...@g...com> wrote:
 >
 > > Wiec na razie bazuje na tym, ze moj kod (napisany na kolanie)
 > > dziala 6s na intel atom N270, a matlab 2.5s na niewiadomym
 > > sprzecie.
 >
 > dany kod dla AxB gdzie A,B = 1024x1024, czas = 2.13 sec.
 > matlab dla AxB, czas = .168 sec
 >
 > czyli matlab jest 12x szybszy.
 
 Jak był kod kompilowany?
 Jaka maszyna?
 Pozdrawiam
 


 do góry
 do góry![Jak najkorzystniej wysyłać i odbierać przelewy walutowe w EURO [© Production Perig - Fotolia.com] Jak najkorzystniej wysyłać i odbierać przelewy walutowe w EURO](https://s3.egospodarka.pl/grafika2/przelewy-bankowe/Jak-najkorzystniej-wysylac-i-odbierac-przelewy-walutowe-w-EURO-205900-150x100crop.jpg) 
 
![Jak zwiększyć otwieralność mailingu? 6 sposobów na wysoki Open Rate [© jakub krechowicz - fotolia.com] Jak zwiększyć otwieralność mailingu? 6 sposobów na wysoki Open Rate](https://s3.egospodarka.pl/grafika2/mailing/Jak-zwiekszyc-otwieralnosc-mailingu-6-sposobow-na-wysoki-Open-Rate-222959-150x100crop.jpg) 
![Jaki podatek od nieruchomości zapłacą w 2026 r. właściciele mieszkań i domów? [© wygenerowane przez AI] Jaki podatek od nieruchomości zapłacą w 2026 r. właściciele mieszkań i domów?](https://s3.egospodarka.pl/grafika2/podatki-i-oplaty-lokalne/Jaki-podatek-od-nieruchomosci-zaplaca-w-2026-r-wlasciciele-mieszkan-i-domow-268193-150x100crop.png) 
 Elektromobilność dojrzewa. Auta elektryczne kupujemy z rozsądku, nie dla idei
Elektromobilność dojrzewa. Auta elektryczne kupujemy z rozsądku, nie dla idei 
 
 
 
![Milion na koncie? Wystarczyło inwestować po około 2 tysiące miesięcznie [© wygenerowane przez AI] Milion na koncie? Wystarczyło inwestować po około 2 tysiące miesięcznie](https://s3.egospodarka.pl/grafika2/oszczedzanie-pieniedzy/Milion-na-koncie-Wystarczylo-inwestowac-po-okolo-2-tysiace-miesiecznie-269397-150x100crop.jpg) 
![Wynajem mieszkania w Warszawie pochłania 44% pensji. Zobacz, jak wypadamy na tle Europy [© pixabay] Wynajem mieszkania w Warszawie pochłania 44% pensji. Zobacz, jak wypadamy na tle Europy](https://s3.egospodarka.pl/grafika2/rynek-najmu/Wynajem-mieszkania-w-Warszawie-pochlania-44-pensji-Zobacz-jak-wypadamy-na-tle-Europy-269391-150x100crop.jpg) 
![Lot z niespodzianką - jak overbooking zmienia podróż i jakie prawa mają pasażerowie? [© wygenerowane przez AI] Lot z niespodzianką - jak overbooking zmienia podróż i jakie prawa mają pasażerowie?](https://s3.egospodarka.pl/grafika2/prawa-pasazera/Lot-z-niespodzianka-jak-overbooking-zmienia-podroz-i-jakie-prawa-maja-pasazerowie-269384-150x100crop.jpg) 
![Lider z sercem: empatia i zaufanie jako klucz do sukcesu zespołu [© wygenerowane przez AI] Lider z sercem: empatia i zaufanie jako klucz do sukcesu zespołu](https://s3.egospodarka.pl/grafika2/lider/Lider-z-sercem-empatia-i-zaufanie-jako-klucz-do-sukcesu-zespolu-269133-150x100crop.png) 
![Bańka AI za 5 bilionów dolarów: Kiedy inwestorzy powiedzą: sprawdzam? [© wygenerowane przez AI] Bańka AI za 5 bilionów dolarów: Kiedy inwestorzy powiedzą: sprawdzam?](https://s3.egospodarka.pl/grafika2/AI/Banka-AI-za-5-bilionow-dolarow-Kiedy-inwestorzy-powiedza-sprawdzam-269382-150x100crop.png) 
 


