-
41. Data: 2010-01-21 13:29:51
Temat: Re: matlab taki wydajny?
Od: Mariusz Kruk <M...@e...eu.org>
epsilon$ while read LINE; do echo \>"$LINE"; done < "thrunduil"
>> 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.
Sorry, ale to jest bzdura. Któreś solvery (BTW, jest na to jakieś
porządne polskie słowo?) dają rozwiązania suboptymalne.
--
\.\.\.\.\.\.\.\.\.\.\.\.\.\
.\....@e...eu.org.\.\.
\.http://epsilon.eu.org/\.\
.\.\.\.\.\.\.\.\.\.\.\.\.\.
-
42. Data: 2010-01-21 13:34:44
Temat: Re: matlab taki wydajny?
Od: thrunduil <t...@w...pl>
On 21 Sty, 14:29, Mariusz Kruk <M...@e...eu.org> wrote:
> Sorry, ale to jest bzdura. Któreś solvery (BTW, jest na to jakieś
> porządne polskie słowo?) dają rozwiązania suboptymalne.
Kazdy, chyba ze rozumiesz ta jedyna optymalnosc jako optymalnosc z
dokladnoscia do epsilona (nieznanego)
i wydruk wyniku jako pelny dowod.
-
43. Data: 2010-01-21 13:37:14
Temat: Re: matlab taki wydajny?
Od: Mariusz Kruk <M...@e...eu.org>
epsilon$ while read LINE; do echo \>"$LINE"; done < "thrunduil"
>> Sorry, ale to jest bzdura. Któreś solvery (BTW, jest na to jakieś
>> porządne polskie słowo?) dają rozwiązania suboptymalne.
>Kazdy, chyba ze rozumiesz ta
"tę"
>jedyna optymalnosc jako optymalnosc z
>dokladnoscia do epsilona (nieznanego)
Nie ma "optymalność z dokładnością". Optymalny oznacza "najlepszy przy
zadanych kryteriach". A z podstaw TM pewnie pamiętasz, że w zbiorze
uporządkowanym nie ma dwu największych elementów.
--
[------------------------]
[ K...@e...eu.org ]
[ http://epsilon.eu.org/ ]
[------------------------]
-
44. Data: 2010-01-21 13:53:47
Temat: Re: matlab taki wydajny?
Od: thrunduil <t...@w...pl>
On 21 Sty, 14:37, Mariusz Kruk <M...@e...eu.org> wrote:
> epsilon$ while read LINE; do echo \>"$LINE"; done < "thrunduil"
>
> >> Sorry, ale to jest bzdura. Któreś solvery (BTW, jest na to jakieś
> >> porządne polskie słowo?) dają rozwiązania suboptymalne.
> >Kazdy, chyba ze rozumiesz ta
>
> "tę"
>
> >jedyna optymalnosc jako optymalnosc z
> >dokladnoscia do epsilona (nieznanego)
>
> Nie ma "optymalność z dokładnością". Optymalny oznacza "najlepszy przy
> zadanych kryteriach". A z podstaw TM pewnie pamiętasz, że w zbiorze
> uporządkowanym nie ma dwu największych elementów.
Nie. Optymalny znaczy rozwiazujacy problem optymalizacji (w matematyce
tylko). Optymalny to nie jest funkcja: kryteria->wynik.
Jezeli solvery problemow optymalizacyjnych nie daja wyniku optymalnego
(bo wynik jest zwiazany z dokladnoscia i moze nawet lezy w malym
otoczeniu rozwiazania, przynajmniej mozna w to gleboko wierzyc)
to co daja?
Co oznacza optymalny wszedzie poza matematyka?
Moze zaproponujesz jakis slownik pojec matematyki praktycznej?
-
45. Data: 2010-01-21 14:01:01
Temat: Re: matlab taki wydajny?
Od: Mariusz Kruk <M...@e...eu.org>
epsilon$ while read LINE; do echo \>"$LINE"; done < "thrunduil"
>> >> Sorry, ale to jest bzdura. Któreś solvery (BTW, jest na to jakieś
>> >> porządne polskie słowo?) dają rozwiązania suboptymalne.
>> >Kazdy, chyba ze rozumiesz ta
>> "tę"
>> >jedyna optymalnosc jako optymalnosc z
>> >dokladnoscia do epsilona (nieznanego)
>> Nie ma "optymalność z dokładnością". Optymalny oznacza "najlepszy przy
>> zadanych kryteriach". A z podstaw TM pewnie pamiętasz, że w zbiorze
>> uporządkowanym nie ma dwu największych elementów.
>Nie. Optymalny znaczy rozwiazujacy problem optymalizacji (w matematyce
>tylko). Optymalny to nie jest funkcja: kryteria->wynik.
A problem optymalizacji polega na znalezieniu ekstremum funkcji celu.
Ekstremum.
>Jezeli solvery problemow optymalizacyjnych nie daja wyniku optymalnego
>(bo wynik jest zwiazany z dokladnoscia i moze nawet lezy w malym
>otoczeniu rozwiazania,
Ale piszesz o optymalizacji, czy numeryce? Optymalizacja to jedno,
a numeryka z jej zabawami z dokładnością, to jednak coś innego.
(choć owszem, można zaprzęgać jedno do drugiego)
>przynajmniej mozna w to gleboko wierzyc)
>to co daja?
Rozwiązania suboptymalne. Możliwe, że z powodu istnienia czynników
zewnętrznych akceptowalne w danym zastosowaniu, ale jednak suboptymalne.
>Co oznacza optymalny wszedzie poza matematyka?
To samo, co w matematyce. http://sjp.pwn.pl/lista.php?co=optymalny
--
/\-\/\-\/\-\/\-\/\-\/\-\/\
\ K...@e...eu.org /
/ http://epsilon.eu.org/ \
\/-/\/-/\/-/\/-/\/-/\/-/\/
-
46. Data: 2010-01-21 14:05:14
Temat: Re: matlab taki wydajny?
Od: Krzysiek Kowaliczek <k...@g...com>
Użytkownik thrunduil napisał:
> Nie. Optymalny znaczy rozwiazujacy problem optymalizacji (w matematyce
> tylko). Optymalny to nie jest funkcja: kryteria->wynik.
Nie, optymalny znaczy najlepszy.
> Jezeli solvery problemow optymalizacyjnych nie daja wyniku optymalnego
> (bo wynik jest zwiazany z dokladnoscia i moze nawet lezy w malym
> otoczeniu rozwiazania, przynajmniej mozna w to gleboko wierzyc)
> to co daja?
Proste, daje wynik zbliżony do optymalnego.
Pozdrawiam
KK
-
47. Data: 2010-01-21 14:39:55
Temat: Re: matlab taki wydajny?
Od: thrunduil <t...@w...pl>
On 21 Sty, 15:05, Krzysiek Kowaliczek
<k...@g...com> wrote:
> Proste, daje wynik zbli ony do optymalnego.
ta terminologia cieszy sie ogromnym powodzeniem, wszedzie mozna ja
spotkac.)
rozwazmy problem prostszy. Optymalizujemy kod z flagami O1, O2, O3.
Uzyskujemy kod zoptymalizowany ale nie optymalny.
Wynikiem zastosowania procedury optymalizacji, ktora zakonczyla sie
sukcesem uzyskujemy cos co nie jest optymalne.
Spojnosc z terminologia matematyczna jest naprawde powalajaca :)
Czy moze zglosiles bug report: zly wording?
-
48. Data: 2010-01-21 14:56:15
Temat: Re: matlab taki wydajny?
Od: Wit Jakuczun <w...@g...com>
On 21 Sty, 14:23, thrunduil <t...@w...pl> wrote:
> 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.
Sformułowanie "bardziej optymalne" jest błędne w języku Polskim!
Jeśli solver daje rozwiazanie optymalne to z definicji inny nie może
dać rozwiązania
lepszego, to znaczy takiego, że funkcja celu przyjmuje większą/
mniejszą wartość (w zależności
od tego czy maksymalizujemy czy minimalizujemy).
Jeśli solver nie daje rozwiązania optymalnego to znaczy, że daje
rozwiązanie
nieoptymalne.
W mowie potocznej rzeczywiście mówi się, że ktoś coś zrobił bardziej
optymalnie niż
ktoś inny. Ale mowa potoczna często nie jest poprawna...
Pozdrawiam,
Wit Jakuczun
-
49. Data: 2010-01-21 15:03:19
Temat: Re: matlab taki wydajny?
Od: Wit Jakuczun <w...@g...com>
On 21 Sty, 15:39, thrunduil <t...@w...pl> wrote:
> > Proste, daje wynik zbli ony do optymalnego.
>
> ta terminologia cieszy sie ogromnym powodzeniem, wszedzie mozna ja
> spotkac.)
>
To oczywiste, gdyż ta terminologia jest poprawna.
> rozwazmy problem prostszy. Optymalizujemy kod z flagami O1, O2, O3.
> Uzyskujemy kod zoptymalizowany ale nie optymalny.
> Wynikiem zastosowania procedury optymalizacji, ktora zakonczyla sie
> sukcesem uzyskujemy cos co nie jest optymalne.
Normalka w praktyce.
> Spojnosc z terminologia matematyczna jest naprawde powalajaca :)
>
Gdzie tu widzisz brak spójności? Nie każda metoda optymalizacji zwraca
rozwiązanie
optymalne. Powiem więcej, w praktyce, o której wspominałeś, metoda ma
zwróć
dobre rozwiązanie (o wysokiej jakości mierzonej funkcją celu) w
krótkim czasie. Nikt
nie oczekuje rozwiązania optymalnego. Wszyscy oczekują rozwiązania
lepszego od tego,
które teraz jest stosowane.
Pozdrawiam,
Wit Jakuczun
-
50. Data: 2010-01-21 15:10:59
Temat: Re: matlab taki wydajny?
Od: bartekltg <b...@g...com>
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;
}