-
Data: 2010-01-21 15:10:59
Temat: Re: matlab taki wydajny?
Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 21 Sty, 10:08, thrunduil <t...@w...pl> wrote:
> > No to sie okazuje, ze narzut matlaba dla niewielkich wektorkow jest
> > spory.
>
> To nie ma nic wspolnego z narzutem Matlaba.
Zakład?
> 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.
To nie ma nic wspolnego z pamiecia, przynajmniej nie tak, jak
sugerujesz.
Jesli by mialo, to moj prosty kod (podany na koncu) tez by mizernie
dzialal.
Ale on nie chec, 1000 roznych mnozen wektorka dlugosci 1000
przez macierz 1000x1000 liczy w niecale 6s.
Dwa razy wolniej niz matlab liczac iloczyn 2 macierzy,
ale tez ponad dwa razy szybciej niz analogiczne petla
w matlabie:
||>> tic,for j=1:1000,a*v;end;toc
||
||Elapsed time is 15.379616 seconds.
Czyli rozdrabnianie wywoluje jakis narzyt nie tylko
przez gorsze wykorzystywanie pamieci.
Chyba, ze cos w kodzie jest zle. Wektor wejsciowy zalezy od
tego, co sie wpisze, wynik jest takze wypisywany ('potrzebny').
W kazdej petli korzystam z innego wektora (kawalka znacznie
dluzszego wektora)..
pozdrawiam
bartekltg
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
void mnoz (double *w,double *M,double *v,int n)
{
for (int j=0;j<n;j++)
{
double t=0;
for (int i=0;i<n;i++)
t+=v[i]*M[j+2*i];
w[j]=t;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
double *w;double *M;double *v;
clock_t start,end;
double dif;
int n,r;
scanf("%d %d",&n,&r);
srand(r);//coby jakos dziwnie nie zoptymalizowalo
w=new double [n*n];
v=new double [n*n];
M=new double [n*n];
for (int i=0;i<n*n;i++)
v[i]=rand()*1.024894;
for (int i=0;i<n*n;i++)
M[i]=rand()*1.894;
start=clock();
for (int i=0;i<n;i++) //n razy podrzucamy rozne wektorki
mnoz(&w[i*n],M,&v[i*n],n);
end=clock();
double aku=1;
for (int i=1;i<n*n;i++)
aku+=w[i]*w[i-1]; //coby wynik byl potrzebny i kod nie wyparowal
printf("\n%.2le \n",aku);
dif = difftime (end,start);
printf ("\n%.2lf \n", double(end-start)/double(CLOCKS_PER_SEC) );
return 0;
}
Następne wpisy z tego wątku
- 21.01.10 15:14 Stachu 'Dozzie' K.
- 21.01.10 15:50 Wit Jakuczun
- 21.01.10 17:53 Mariusz Marszałkowski
- 21.01.10 18:05 Mariusz Marszałkowski
- 21.01.10 18:20 Mariusz Marszałkowski
- 21.01.10 18:21 thrunduil
- 21.01.10 19:00 Wit Jakuczun
- 21.01.10 20:25 bartekltg
- 21.01.10 20:31 bartekltg
- 21.01.10 20:45 Mariusz Marszałkowski
- 21.01.10 21:08 Wit Jakuczun
- 21.01.10 22:10 Mariusz Marszałkowski
- 22.01.10 09:05 lolo
- 22.01.10 09:15 Mariusz Marszałkowski
- 22.01.10 09:34 bartekltg
Najnowsze wątki z tej grupy
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
Najnowsze wątki
- 2025-12-28 PREZENTY OD MINISTRA FINANSÓW. SKĄD PIENIĄDZE?
- 2025-12-27 pompa CO
- 2025-12-27 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-12-27 Ewakuacja ludności
- 2025-12-26 Gdańsk => ERP Microsoft Dynamics 365 Commerce Consultant <=
- 2025-12-26 Kraków => Konsultant Microsoft Dynamics 365 Finance <=
- 2025-12-26 Kraków => Microsoft Dynamics 365 Finance Consultant <=
- 2025-12-26 wymieniłem termostat
- 2025-12-26 Warszawa => Senior Backend Java Developer <=
- 2025-12-25 Finlandia przywraca swastykę
- 2025-12-25 Skuteczność wymiaru sprawiedliwości
- 2025-12-24 Felgi
- 2025-12-24 2,5 x więcej niż Li-Ion
- 2025-12-24 No i kolejny ograniczony
- 2025-12-24 Warszawa => Młodszy Specjalista ds. wsparcia sprzedaży <=




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]