Hirdetés

2024. május 5., vasárnap

Gyorskeresés

Hozzászólások

(#1) ivana


ivana
Ármester

Mi a kód? :) Már mint a C...

[ Szerkesztve ]

(#2) weiss válasza ivana (#1) üzenetére


weiss
addikt

Az érdemi rész:

#if _M_IX86_FP == 2
/* SSE2 x86 kód */
#elif __arm__ == 1
for (short l = j; l < j + input->w_small; l = l + 4){
add_b = k * input->w_big + l;
add_s = (k - i) * input->w_small + l - j;

__asm__ __volatile__(
"ldr %%r1, [%1];"
"ldr %%r2, [%2];"
"usada8 %0, %%r1, %%r2, %0;"
:"+r" (sad)
: "r" (input->pic_big + add_b), "r" (input->pic_small + add_s)
: "r1", "r2"
);
}
#else
for (short l = j; l < j + input->w_small; l++){
sad += abs(input->pic_big[k * input->w_big + l] - input->pic_small[(k - i) * input->w_small + l - j]);
}
#endif

I did nothing, the pavement was his enemy!

(#3) Vladi


Vladi
nagyúr

Ilyen fasza az rp2. :DD

Más összetettebb kóddal is meg kéne nézni, akkor nem lenne ekkor a különbség.
Milyen proccok vannak ezekben? Ha most modernebben futtatsz kódot, akkor nyilván van ekkora gyorsulás, mint anno sse2-3 és a nélkül futna.

Nem félünk! Nem félünk! Itthon vagyunk e földön. Nem félünk! Nem félünk! Ez nem maradhat börtön!

(#4) Vladi válasza Vladi (#3) üzenetére


Vladi
nagyúr

Megnéztem, azért itt armv6 1 magos és armv7 4 (!) magos áll szemben, szóval nyilván. :U

Nem félünk! Nem félünk! Itthon vagyunk e földön. Nem félünk! Nem félünk! Ez nem maradhat börtön!

(#5) weiss válasza Vladi (#4) üzenetére


weiss
addikt

Igen, de csak egy szálon fut a kód.

I did nothing, the pavement was his enemy!

(#7) Vladi válasza Aron1988 (#6) üzenetére


Vladi
nagyúr

Rendes tőled, hogy ennyit segítesz a srácnak. :DDD

(#5) weiss:

Nem értem. Ott a táblázatban, hogy 1-4 szálon megy a dolog. :F

Nem félünk! Nem félünk! Itthon vagyunk e földön. Nem félünk! Nem félünk! Ez nem maradhat börtön!

(#8) ivana válasza weiss (#2) üzenetére


ivana
Ármester

Fura értem mit csinál, de hogy ez miért lesz jobb több szálon :F Hogy párhuzamosítod? Egymás mellett futatsz csak 4-et?

(#10) weiss válasza ivana (#8) üzenetére


weiss
addikt

Igen, persze. Nyitok n szálat, amely csak ezzel a függvénnyel dolgozik nyilván más-más adatokon.

I did nothing, the pavement was his enemy!

(#11) ivana válasza weiss (#10) üzenetére


ivana
Ármester

Azt hittem valami cache dolog, de így nem lehet az :DDD

(#16) ivana válasza weiss (#14) üzenetére


ivana
Ármester

Rájöttem, hogy simán jó ez a gyorsulási érték. Az, hogy az armv7 ennyivel gyorsabb az simán lehet az armv6 egy foshalmaz. 4 maggal csak 3,71-szerese az egy magnak ami lehetséges ha proci limites kód.

(#17) VirsLee válasza weiss (#10) üzenetére


VirsLee
őstag

Amennyiben csak egy szálad van, akkor is nyitsz új szálat ennek a függvénynek a végrehajtásához?

(#18) weiss válasza VirsLee (#17) üzenetére


weiss
addikt

Igen.

I did nothing, the pavement was his enemy!

(#19) VirsLee válasza weiss (#18) üzenetére


VirsLee
őstag

Véleményem szerint, miután merőben más a két proci 1 vs. 4 mag, így nem annyira pontos a mérésed. Egy magos esetén gyakorlatilag azon a magon osztozol minden, a gépen futó, pl.oprendszer processzekkel is. Amikor ugyanezt a négymagoson futtatod, akkor eleve futhat az 1 szálon futó programod egy dedikált magon, ahova esetleg semmi más nem kerül. Plusz, ha csak egy szálon fut a progid és ehhez a függvényhez nyitsz egy új processzt, akkor lehet, hogy annak a menedzselése is felesleges terhet ró a rendszerre.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.