Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Test Brzine procesora - "besposlen pop jarice krsti"

[es] :: Linux aplikacije :: Test Brzine procesora - "besposlen pop jarice krsti"

Strane: < .. 1 2 3 4 5 6

[ Pregleda: 26461 | Odgovora: 119 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"07.11.2008. u 08:05 - pre 188 meseci
Stavljajte kod samo u attachmentu, radi preglednosti....
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

combuster
Ivan Bulatovic
Kraljevo

Član broj: 151351
Poruke: 4563
93.86.142.*

Sajt: www.linuxsrbija.org


+104 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"07.11.2008. u 09:44 - pre 188 meseci
Aha, jesmo preterali, potkrali se neki bug-ovi a mi svaki put ko blesavi:
Code:

150 linija koda


Pa nemamo vise ni da postujemo kodove jer smo zavrsili, dakle jos jednom source i bin evo ga ovaj put u attachmentu i to je to....
make love - !war
Prikačeni fajlovi
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p6-76.bvcom.net.



+1064 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"07.11.2008. u 12:26 - pre 188 meseci
Za malu vremensku rezoluciju koristite clock() funkciju i clock_t tip pa rezultat
delite sa CLOCKS_PER_SEC kako bi dobili rezoluciju u sekundama.
Sto se tice problema sa manje od 30mb to je zato sto ako neki thread zavrsi
dva puta pre nego neki drugi a 30mb se zavrsi za malo vremena
dolazi do greske jer se koriste samo dva semafora, tj neki thread
ce biti aktiviran dva puta dok neki nece pa ce izostati potrebna
4 sem_posta kako bi main thread nastavio da signalizira.
U tom slucaju treba staviti po par semafora za svaki thread, a same semafore i mem
blok proslediti thread f-ji preko strukture, recimo struct Data{ sem_t sem,sem1; int* mem; };

Pozdrav!
 
Odgovor na temu

mjux

Član broj: 124150
Poruke: 158
79.101.239.*



+2 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"07.11.2008. u 13:00 - pre 188 meseci
a da neko stavi exe za windows... ili da napise kompajler koji je koristen posto meni nece da se kompajlira... imam msi wind pa bi to da testiram :)
 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"07.11.2008. u 13:16 - pre 188 meseci
Ne furamo windows na ovom forumu... :)
Salim se.

Bilo bi zanimljivo da vidimo ista masina, isti kod - kakve bi razlike bile u brzini izvrsavanja na linuxu i na windowsu.
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
93.86.118.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"07.11.2008. u 13:30 - pre 188 meseci
@mjux - http://www.q-software-solutions.de/pub/lccwin32.exe - skini kompajler ovaj ili neki drugi free izgooglaj, pa kompajliraj na windozi.
 
Odgovor na temu

combuster
Ivan Bulatovic
Kraljevo

Član broj: 151351
Poruke: 4563
93.86.142.*

Sajt: www.linuxsrbija.org


+104 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"07.11.2008. u 13:42 - pre 188 meseci
Ja skidam sad minigw i trebalo bi da do veceras ispostujem 32-bit exe...
make love - !war
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
93.86.118.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"07.11.2008. u 14:29 - pre 188 meseci
-lpthread switch daje podrsku za koriscenje thread-ova koji se u ovom
kodu koriste, pa ako neko bude kompajlirao za windows pazite i na to
koji je kompajler i sta treba ukljuciti za ovo na njemu za ovu podrsku.

(-Wall je manje bitna opcija cini mi se, samo vezana za neka dodatna upozorenja oko kompajliranja)
 
Odgovor na temu

combuster
Ivan Bulatovic
Kraljevo

Član broj: 151351
Poruke: 4563
93.86.142.*

Sajt: www.linuxsrbija.org


+104 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"07.11.2008. u 15:57 - pre 188 meseci
Ne moze... Losi su pthread header-i za windows, semaphore.h je lose napisan i to kolje kompajliranje... Probao sam sa Bloodshed, cygwin, lcc32, visual studiom (skidao sam header-e sa neta) i ne vredi. Uvek zeza semaphore.h koji sam skidao sa dva izvora, jedan direktno sa net-a a drugi preko paketa iz bloodshed-a! Jedino da probam da napravim exe iz linux-a...
Evo i iz linuxa sa mingw-om

Code:

combuster@vostro:~/test$ i586-mingw32msvc-gcc -x c test.c
/tmp/ccGW9wEm.o:test.c:(.text+0x92): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0xa2): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x118): undefined reference to `_sem_init'
/tmp/ccGW9wEm.o:test.c:(.text+0x12c): undefined reference to `_sem_init'
/tmp/ccGW9wEm.o:test.c:(.text+0x1d5): undefined reference to `_pthread_create'
/tmp/ccGW9wEm.o:test.c:(.text+0x1f9): undefined reference to `_pthread_create'
/tmp/ccGW9wEm.o:test.c:(.text+0x21d): undefined reference to `_pthread_create'
/tmp/ccGW9wEm.o:test.c:(.text+0x248): undefined reference to `_pthread_create'
/tmp/ccGW9wEm.o:test.c:(.text+0x258): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x268): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x278): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x288): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x2a8): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x2b8): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x2c8): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x2d8): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x2e8): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x2f8): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x308): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x318): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x338): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x348): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x358): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x368): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x378): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x388): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x398): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x3a8): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x3c8): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x3d8): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x3e8): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x3f8): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x408): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x418): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x428): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x438): undefined reference to `_sem_wait'
/tmp/ccGW9wEm.o:test.c:(.text+0x458): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x468): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x478): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x488): undefined reference to `_sem_post'
/tmp/ccGW9wEm.o:test.c:(.text+0x499): undefined reference to `_pthread_join'
/tmp/ccGW9wEm.o:test.c:(.text+0x4aa): undefined reference to `_pthread_join'
/tmp/ccGW9wEm.o:test.c:(.text+0x4bb): undefined reference to `_pthread_join'
/tmp/ccGW9wEm.o:test.c:(.text+0x4cc): undefined reference to `_pthread_join'
/tmp/ccGW9wEm.o:test.c:(.text+0x589): undefined reference to `_sem_destroy'
/tmp/ccGW9wEm.o:test.c:(.text+0x599): undefined reference to `_sem_destroy'
collect2: ld returned 1 exit status


Slicno mi javlja i na windows-u kada resim probleme sa semaphore.h i sl...

[Ovu poruku je menjao combuster dana 07.11.2008. u 17:24 GMT+1]
make love - !war
 
Odgovor na temu

slobapet
Slobodan Petrovic
www.SoftisPlus.rs
NIS- Cair

Član broj: 31347
Poruke: 91
*.dynamic.sbb.rs.

Sajt: www.SoftisPlus.rs


+1 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"09.11.2008. u 22:00 - pre 188 meseci
hmmm.. meni na ubuntu 32bit 8.04 samo opterecuje jedno jezgro, i to konstantno, znaci ne prebacuje na drugo....
da li je to do koda ne znam, jer ja ne znam da iskompajliram kod mene, ne bavim se toliko time ali resio da probam ...
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
93.86.81.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"10.11.2008. u 02:44 - pre 187 meseci
Napisi koji ti je tacno procesor, koji su rezultati, i koji si od ovih
programa pokrenuo koje smo do sada kacili.

(Ako je 32-bit masina, onda skini i pokreni poslednji fajl uz poruku koji je okacio combuster,
a ako je 64-bit masina, onda skini i pokreni poslednji fajl koji sam ja okacio uz svoju poruku)

Ako nisi siguran koji ti je procesor pokreni u konzoli ove 2 komande:

cat /proc/cpuinfo | grep model
cat /proc/cpuinfo | grep cache


i prenesi sta tacno dobijes kada ih pokrenes.


Dobar program za pracenje opterecenja koji lepo graficki prikazuje opterecenja po jezgrima je gkrellm.
Instaliras ga sa:

sudo apt-get install gkrellm

Jos jednom uploadujem konacnu verziju za 64 bit-a - V 1.0.0 - minorne izmene kozmeticke prirode (source i kompajlirana izvrsna verzija ko nece da kompajlira sam):

Izgleda ovako:

Code:

srdjan@Zverko:~$ ./ProcTest64-v1.0.0 
Test Brzine Procesora - 64-bit - Verzija 1.0.0  - [ES]

Unesite koliko memorije alocirate za test (64 do 512 MB):32

Postavljena vrednost nije dozvoljena. Minimum je 64.

srdjan@Zverko:~$ ./ProcTest64-v1.0.0 
Test Brzine Procesora - 64-bit - Verzija 1.0.0  - [ES]

Unesite koliko memorije alocirate za test (64 do 512 MB):513

Postavljena vrednost nije dozvoljena. Maksimum je 512.

srdjan@Zverko:~$ ./ProcTest64-v1.0.0 
Test Brzine Procesora - 64-bit - Verzija 1.0.0  - [ES]

Unesite koliko memorije alocirate za test (64 do 512 MB):128
Program je alocirao 128 MB RAM-a.
25 procenata komletirano... 
50 procenata komletirano... 
75 procenata komletirano... 
100 procenata komletirano! 

Vreme izvrsavanja je 0 minuta i 11 sekundi.

srdjan@Zverko:~$ 


Ko kompajlira source sam, da podsetimo na komandu (sa opcijama):

gcc -Wall -lpthread -O2 ProcTest64-v1.0.0.c -o ProcTest64-v1.0.0

[Ovu poruku je menjao Kernel-1 dana 10.11.2008. u 06:13 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

combuster
Ivan Bulatovic
Kraljevo

Član broj: 151351
Poruke: 4563
79.101.151.*

Sajt: www.linuxsrbija.org


+104 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"10.11.2008. u 08:25 - pre 187 meseci
Eve ga, kernel je krenuo svojim putem, ovako rano pa "developeri" krenuli razlicitim putevima :D
@sloba5 Skini jedan od ovih novijih source-eva i kompajliraj sa branimirovim stringovima za gcc obavezno...
make love - !war
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
93.86.124.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"10.11.2008. u 08:32 - pre 187 meseci
ako neko nece da ima ogranicenje na 512 max memorije, samo izbacite TACNO ovaj deo koda pre kompajliranja,
ali mislim da nema potrebe za vise od 512 da se maltretira racunar :)

if (mb > 512)
{
printf("\n");
printf("Postavljena vrednost nije dozvoljena. Maksimum je 512.\n");
printf("\n");
return 0;
}


Dognju granicu ostavite iz sigurnosnih razloga.

@combuster - hehe, ne brini ako se odvojim u frakciju, propade moj solo projekat posto C znam malo zesce :)))

[Ovu poruku je menjao Kernel-1 dana 10.11.2008. u 10:07 GMT+1]
 
Odgovor na temu

combuster
Ivan Bulatovic
Kraljevo

Član broj: 151351
Poruke: 4563
91.150.122.*

Sajt: www.linuxsrbija.org


+104 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"10.11.2008. u 18:53 - pre 187 meseci
Sta ti hvali, znas dovoljno da radis reviziju software-a, ti zaelotu jedan sto bi rek'o dimke... Neprijatelju terranske rase (tj nas zemljana). :D Ortak mi sad javnuo da njemu blokira program ako nema dovoljno ram-a tj ne radi mu if !mem uslov, a ne radi ni meni, izgleda mi da trpa u swap... Provericu sutra, radim sad onu bazu... Ili proveri ti veceras ako imas vremena...
make love - !war
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p6-41.BVCOM.NET.



+1064 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"10.11.2008. u 19:22 - pre 187 meseci
malloc vraca null kad nema dovoljno continuous rama te velicine. Medjutim na 64 bitnim
sistemima to je sav ram + swap ;) Na 32 bitnim mislim da ne moze vise od 2gb (mozda i moze).

Pozdrav!

 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
93.86.124.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"10.11.2008. u 20:06 - pre 187 meseci
Kod mene je 4GB rama i swap od oko 1,3GB na 64-bit sistemu, i sad sam mu stavio 4500MB,
poceo je da radi, a onda da drlja po swapu, prekinuo sam ga naravno, verovatno bi zavrsio
za nekih godinu dana ako mi pre toga ne crkne disk :)))

Dakle, ako se alocira onoliko memorije da to zahvata i swap, onda krece disk da drlja
(kada se popuni RAM) ... i to vec onda postaje benchmark izdrzljivosti HDD-a :)

Kada stavim 5000, onda ispise da nema dovoljno memorije (a zajedno sa swap-om imam oko 5,3GB
ali deo te memorije je vec zauzet kojecime, pa onda u tom trenutku nema da alocira 5000 mb valjda)

Ali necemo se sad baviti limesima ;) - ogranicenje od 64 do 512 does the job - a moglo bi i na 128, dosta je...

[Ovu poruku je menjao Kernel-1 dana 10.11.2008. u 21:20 GMT+1]
 
Odgovor na temu

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
*.pool.mediaWays.net.



+27 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"10.11.2008. u 21:08 - pre 187 meseci
Citat:
Branimir Maksimovic:
Code:
int main ()
{
  sem_init(&sema,0,0);
  sem_init(&sema1,0,0);

  int* mem = calloc(4,BLCK_SIZE*sizeof(int));


Ovim će samo jedan procesor (tj. jezgro) rezervisati svu memoriju, što posle može iskvariti performanse ako postoji „afinitet“ memorije po procesoru, tj. ako svaki procesor ima deo memorije kojem najbrže pristupa. Zato, za svaki slučaj, uspostavljanje memorije kad god može treba da ide paralelno na isti način kao i izračunavanje.

Citat:
[...] posto se sada testira i brzina memorije.
[...]

Code:
    int i = 0;
    for(;i<BLCK_SIZE;++i)
    {
      *((int*)p+i) = i;
    }


Neko uobičajeno preznojavanje memorije, zapravo minimalno smisleno odmeravanje brzine podsklopa procesor-keš-memorija, bio bi euklidski skalarni proizvod:
Code:
double a[VSIZE], b[VSIZE];
double sum;

// Uspostavljanje a, b...

// Štoperica počinje ovde.
sum = 0.0;
for(i = 0; i < VSIZE; ++i) {
    sum += a[i] * b[i];
}
// Štoperica staje ovde.

Zatim se ovaj kôd vrti za različite veličine vektora, da bi se iscrtao grafik zavisnosti broja operacija u pokretnom zarezu (FLOP) u sekundi od veličine vektora. Kao ovde. U njemu se ogleda brzina FPU-a procesora, brzina, veličina i broj keševa, i brzina memorije. Kada se izvršava paralelno, onda se rezultat može uporediti sa jednoprocesorskim, odnosno proveriti ubrzanje po segmentima x-ose.

Ceo program u prilogu, zajedno sa skripticom za crtanje grafika (mora da bude instaliran Gnuplot i Imejdžmedžik, tj. naredbe gnuplot i convert u putanji). OpenMP podrazumevno račva onoliko niti koliko ima procesora (tj. jezgara), a određen broj može se zadati promenljivom okruženja OMP_NUM_THREADS:
Code:
$ gcc test-02.c -O3 -fopenmp
$ OMP_NUM_THREADS=1 ./a.out > t1.dat
$ OMP_NUM_THREADS=2 ./a.out > t2.dat
$ OMP_NUM_THREADS=4 ./a.out > t4.dat
$ ./test-02-plot.py t1.dat t2.dat t4.dat
t1~t2~t4.png
$


Ovo je uzgred prvo odmeravanje koje vam pokažu na vežbama, da odmah shvatite koliko je jedan jedini broj kao mera „brzine procesora“ besmislen :) Bar na C2D-u, gornji grafik će pokazati da su za euklidski skalarni proizvod sva jezgra preko jednog bespotrebna, jer i to jedno potpuno zaguši memorijsku magistralu čim veličina vektora premaši kapacitet keša. A to znači, bespotrebna za sve proračune koji uključuju velike sisteme linearnih jednačina (npr. naučno-inženjerske simulacije).

No, da se ne bismo štrecali, probe mogu da se pokreću i sa ./a.out 1, za upotrebu drugog, hipotetičkog (mada beskorisnog) skalarnog proizvoda, ali takvog da izvodi mnogo više računskih operacija po jednom dohvatanju iz memorije. Tada ne dolazi do zagušenja memorije (bar s dve niti, nemam četvorojezgarni procesor pri ruci), i dobija se reklamirano ubrzanje.
Prikačeni fajlovi
 
Odgovor na temu

slobapet
Slobodan Petrovic
www.SoftisPlus.rs
NIS- Cair

Član broj: 31347
Poruke: 91
*.dynamic.sbb.rs.

Sajt: www.SoftisPlus.rs


+1 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"10.11.2008. u 21:22 - pre 187 meseci
evo da dopunim svoju poruku
kao sto sam napisao, u pitanju je 32-bitni Kubuntu 8.04
koristio sam cputest koji je postavio combuster na prvoj strani http://www.elitesecurity.org/p2092218

masina je dual 2 core
model : 15
model name : Intel(R) Pentium(R) Dual CPU T2330 @ 1.60GHz
model : 15
model name : Intel(R) Pentium(R) Dual CPU T2330 @ 1.60GHz
cache size : 1024 KB
cache size : 1024 KB
2GB RAM

i rezultati su sledeci:
sloba@sloba-laptop:~/Desktop$ time ./cputest
25 percent done:
50 percent done:
75 percent done:
100 percent done - Test completed!

real 0m8.247s
user 0m8.233s
sys 0m0.004s

i preko gkreallm i htop vidim da samo opterecuje prvo jezgro...

sto se tice kompajliranja to nisam nikad probao pa ako neko zeli nek pusti na pm objasnjenje kako da odradim, ako je vama bitno...


 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p6-41.BVCOM.NET.



+1064 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"11.11.2008. u 02:39 - pre 187 meseci
Citat:

Ovim će samo jedan procesor (tj. jezgro) rezervisati svu memoriju, što posle može iskvariti performanse ako postoji „afinitet“ memorije po procesoru, tj. ako svaki procesor ima deo memorije kojem najbrže pristupa. Zato, za svaki slučaj, uspostavljanje memorije kad god može treba da ide paralelno na isti način kao i izračunavanje.



Tacno, ali to nece ti biti dovoljno posto moras da znas koji memorijski deo pripada jednom, drugom trecem
procesoru i da alociras tako. Takodje onda moras da bindujes threadove za odredjene procesore
koji su alocirali date blokove, tj ne mozes blok1 da izvrsavas na procesoru2,
a to ne mozes ni sa malloc ni sa calloc niti mozes to da radis preko omp-a koji izvlaci najgore
moguce performanse iz numa arhitekture ),vec sa libnuma na linux-u
i pthreads ako cemo vec tako ;)

Drugo program ti ne skalira bas najbolje, identicne su mi performanse i sa 1 , 2 i 4 threada.
edit: Mada u stvari, ovde bi tako i trebalo da bude posto je jedan bus, i u mjom primeru
mislim da bi 1 thread radio isto kao i 2 ili 4 posto je jedan procesor dovoljan da se saturise
bus, vec drugi mora da deli isti bus pa se ne dobija nista.
edit2: ali definitivno nesto ne valja posto time komanda vraca isto vreme i kad su jedan i kad su dva
threada a imam dual, a meris samo read?
edit3: na osnovu merenja se vidi da omp ima neki overhead koji se eliminise kad je veci
broj ciklusa i to je to, i jos imas efekat kad podaci staju u cache i kad ne staju ;)
E sad sta u stvari meris ovim benchmarkom ;)? brzinu cache-a, memorije? ili procesora.
Cilj bench-a je da se vidi koliko vremena treba nekoj konfiguraciji da to odradi,
a na amd-ovima ti nece nista brze raditi posto ne setujes afinitet i ne alociras
po numa nodama, mada ionako sa dva cpu-a to se i ne primeti.
I na kraju interesantno je sto u globalu program ima isto vreme izvrsavanja za sve kombinacije,
ali to je verovatno zbog toga sto sinhronizujes na vreme izvrsavanja petlje.

Pozdrav!

bmaxa@maxa:~$ time OMP_NUM_THREADS=1 ./flops
# Selected loop: 0
# VSIZE [*] SPEED [MFLOPS] SUMSUM [*]
100 474 16.7
200 807 33.3
500 1315 83.3
1000 1639 166.7
2000 1853 333.3
5000 2076 833.3
10000 2166 1666.7
20000 2264 3333.3
50000 2297 8333.3
100000 2288 16666.7
200000 2287 33333.3
500000 1211 83333.3
1000000 1109 166666.7
2000000 1113 333333.3
5000000 1129 833333.3
10000000 1132 1666666.7

real 0m31.833s
user 0m29.446s
sys 0m2.360s
bmaxa@maxa:~$ time OMP_NUM_THREADS=2 ./flops
# Selected loop: 0
# VSIZE [*] SPEED [MFLOPS] SUMSUM [*]
100 40 16.7
200 85 33.3
500 175 83.3
1000 382 166.7
2000 688 333.3
5000 1108 833.3
10000 1733 1666.7
20000 1766 3333.3
50000 2531 8333.3
100000 2966 16666.7
200000 2896 33333.3
500000 1314 83333.3
1000000 1133 166666.7
2000000 1109 333333.3
5000000 1103 833333.3
10000000 1143 1666666.7

real 0m31.645s
user 0m26.870s
sys 0m9.573s

a evo i za drugu petlju:

bmaxa@maxa:~$ time OMP_NUM_THREADS=2 ./flops 1
# Selected loop: 1
# VSIZE [*] SPEED [MFLOPS] SUMSUM [*]
100 624 20.9
200 899 41.8
500 1340 104.6
1000 1878 209.2
2000 2369 418.4
5000 2434 1046.0
10000 2780 2092.0
20000 2800 4184.0
50000 2269 10460.0
100000 3138 20920.0
200000 2284 41839.9
500000 2287 104599.8
1000000 2931 209199.6
2000000 3934 418399.2
5000000 3928 1045997.9
10000000 3970 2091995.8

real 0m32.107s
user 0m35.638s
sys 0m3.908s
bmaxa@maxa:~$ time OMP_NUM_THREADS=1 ./flops 1
# Selected loop: 1
# VSIZE [*] SPEED [MFLOPS] SUMSUM [*]
100 1805 20.9
200 2046 41.8
500 2182 104.6
1000 2224 209.2
2000 2251 418.4
5000 2268 1046.0
10000 2270 2092.0
20000 2222 4184.0
50000 2260 10460.0
100000 2282 20920.0
200000 2297 41839.9
500000 2228 104599.8
1000000 2221 209199.6
2000000 2296 418399.2
5000000 2298 1045997.9
10000000 2299 2091995.8

real 0m32.210s
user 0m31.654s
sys 0m0.500s


[Ovu poruku je menjao Branimir Maksimovic dana 11.11.2008. u 07:25 GMT+1]

[Ovu poruku je menjao Branimir Maksimovic dana 11.11.2008. u 08:32 GMT+1]
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p6-41.bvcom.net.



+1064 Profil

icon Re: Test Brzine procesora - "besposlen pop jarice krsti"11.11.2008. u 05:07 - pre 187 meseci
Evo malo preradjeni test, detektuje broj procesora i dize broj threadova po tome,
ali i alocira paralelno i setuje afinitet po procesoru tako da ako je malloc numa aware
ovo bi trebalo da sljaka ok i kad je numa. Nisam bas hteo da koristim libnuma,
to bi bilo preterivanje za ovo ;)

Code:

#include <stdlib.h>
#include <semaphore.h>
#include <pthread.h>
#include <stdio.h>

#define BLCK_SIZE 16777216

sem_t sema,sema1;
typedef struct Data{ int blck_size,cpu; } Data_t;

void* tf(void* p)
{
  Data_t* dt = (Data_t*)p;
  int *mem=NULL;
  cpu_set_t set;
  CPU_ZERO(&set);
  CPU_SET(dt->cpu,&set);
  if(sched_setaffinity(0,sizeof(cpu_set_t),&set)<0)
    printf("set affinity failed cpu %d\n",dt->cpu);

  printf("set affinity cpu %d\n",dt->cpu);

  mem = malloc(dt->blck_size*sizeof(int));
  if(!mem)return 0;

  int j = 80;
  while(j--)
  {
    int i = 0;
    unsigned long long sum=0;
    for(;i<dt->blck_size;++i)
    {
      *(mem+i) = i;
    }
    for(i=0;i<dt->blck_size;++i)
    {
      sum += mem[i];
    }
    if(j%20==0)
    {
      printf("thread %lu, sum %llu\n",(unsigned long)pthread_self(),sum);
      sem_post(&sema);
      sem_wait(&sema1);
    }
  }
  free(mem);
  return 0;
}

static void waitT(int count)
{
  while(count--)
  {
    sem_wait(&sema);
  }
}

static void postT(int count)
{
  while(count--)
  {
    sem_post(&sema1);
  }
}

int main (int argc,char* argv[])
{
  int single=0;
  
  int numcpus=0,i;
  pthread_t* tid=NULL;
  cpu_set_t set;

  if(argc>1)single=1;

  sem_init(&sema,0,0);
  sem_init(&sema1,0,0);

  CPU_ZERO(&set);
  CPU_SET(0,&set);
  
  while(sched_setaffinity(0,sizeof(cpu_set_t),&set)==0)
  {
    ++numcpus;
    CPU_ZERO(&set);
    CPU_SET(numcpus,&set);
  }
  printf("numcpus %d\n",numcpus);  
  tid = calloc(numcpus,sizeof(pthread_t));
  Data_t dt[numcpus];
  if(single)numcpus=1;
  for(i=0;i<numcpus;++i)
  {
      dt[i].blck_size = BLCK_SIZE*4/numcpus;
      dt[i].cpu = i;
      pthread_create(tid+i,NULL,tf,dt+i);
  }
  
  waitT(numcpus);
  printf ("25 percent done:\n");
  postT(numcpus);  

  waitT(numcpus);
  printf("50 percent done:\n");
  postT(numcpus);  

  waitT(numcpus);
  printf("75 percent done:\n");
  postT(numcpus);  

  waitT(numcpus);
  printf("100 percent done - Test completed!\n");
  postT(numcpus);  

  for(i=0;i<numcpus;++i)
    pthread_join(tid[i],NULL);

  free(tid);
  sem_destroy(&sema);
  sem_destroy(&sema1);

  return 0;
}



Kompajlira se sa:
gcc -Wall -O2 -D_GNU_SOURCE -lpthread ime.c -o ime

mora _GNU_SOURCE zbog afinitija, ako nekome treba moze dodati i #include <sched.h>
mada meni nije bilo potrebno


bmaxa@maxa:~$ time ./omp 1
numcpus 2
set affinity cpu 0
thread 1092589904, sum 2251799780130816
25 percent done:
thread 1092589904, sum 2251799780130816
50 percent done:
thread 1092589904, sum 2251799780130816
75 percent done:
thread 1092589904, sum 2251799780130816
100 percent done - Test completed!

real 0m9.828s
user 0m9.641s
sys 0m0.144s
bmaxa@maxa:~$ time ./omp
numcpus 2
set affinity cpu 0
set affinity cpu 1
thread 1106848080, sum 562949936644096
thread 1115240784, sum 562949936644096
25 percent done:
thread 1106848080, sum 562949936644096
thread 1115240784, sum 562949936644096
50 percent done:
thread 1115240784, sum 562949936644096
thread 1106848080, sum 562949936644096
75 percent done:
thread 1115240784, sum 562949936644096
thread 1106848080, sum 562949936644096
100 percent done - Test completed!

real 0m8.669s
user 0m15.941s
sys 0m0.160s


edit: Dodao sam i memory read test osim samo write-a a ko hoce moze modifikovati da radi i sa
razlicitim velicinama blokova, stavio sam da se velicina rasporedi po threadovima itd
edit2: potkrala mi se greska morao sam da bacim razilicite data strukture za svaki thread ;)
dodao sam i mogucnost ako se baci neki parametar onda program racuna u samo jednom threadu.

Pozdrav!


[Ovu poruku je menjao Branimir Maksimovic dana 11.11.2008. u 06:25 GMT+1]

[Ovu poruku je menjao Branimir Maksimovic dana 11.11.2008. u 09:21 GMT+1]
 
Odgovor na temu

[es] :: Linux aplikacije :: Test Brzine procesora - "besposlen pop jarice krsti"

Strane: < .. 1 2 3 4 5 6

[ Pregleda: 26461 | Odgovora: 119 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.