-
1. Data: 2012-08-10 17:39:12
Temat: rdtsc i ew dziwne wyniki
Od: " kenobi" <f...@N...gazeta.pl>
mam takie wyniki z rdtsc (na moim starym p4 )
1)
rdtsc
mov ecx, eax
rdtsc
sub eax, ecx
wynik 80 cykli
2)
call dword ptr [_rdtsc]
mov edi,eax
call dword ptr [_rdtsc]
mov ebp,eax
_rdtsc:
rdtsc
ret
120 cykli
3)
call dword ptr [_rdtsc]
mov edi,eax
push offset $ijkagfia
push offset $agkagfia
call dword ptr [_asm_dot_fpu]
add esp,8
fstp dword ptr [esp+60]
call dword ptr [_rdtsc]
mov ebp,eax
_asm_dot_fpu:
push ebp ; 0021 _ 55
mov ebp, esp ; 0022 _ 89. E5
mov eax, dword [ebp+8H] ; 0024 _ 8B. 45, 08
mov edx, dword [ebp+0CH] ; 0027 _ 8B. 55, 0C
fld dword [eax] ; 002A _ D9. 00
fmul dword [edx] ; 002C _ D8. 0A
fld dword [eax+4H] ; 002E _ D9. 40, 04
fmul dword [edx+4H] ; 0031 _ D8. 4A, 04
fld dword [eax+8H] ; 0034 _ D9. 40, 08
fmul dword [edx+8H] ; 0037 _ D8. 4A, 08
faddp st1, st(0) ; 003A _ DE. C1
faddp st1, st(0) ; 003C _ DE. C1
pop ebp ; 003E _ 5D
ret ; 003F _ C3
oscyluje miedzy ok 700 a 1500 cykli
czy te wynika sa sensowne, czy ew nie jest to cos
przyduzo?
moze to efekt niezchacheowanego uruchamiania
(popróboje pozniej w petli) (?) ale wyniki te ew
sa zastanawiajace bo ew cos przyduzo [- chyba ze
niecachowanie to tlumaczy ]
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
2. Data: 2012-08-10 18:30:04
Temat: rdtsc i ew dziwne wyniki
Od: " kenobi" <f...@N...gazeta.pl>
ok, to chyba to bo z kolei
xor ebx,ebx
@935:
push offset $ijkagfia
push offset $agkagfia
call dword ptr [_asm_dot_fpu]
fstp st(0)
add esp,8
inc ebx
cmp ebx,1000
jl short @935
oscyluje 20 - 23 tys - czyli z kolei powiedzialbym
troche krótko: w kazdym razie ciekawa rozpietosc 1500 cykli
na pierwsze uruchomienia a 20 cykli na uruchomienie
w petli (o ile to dokladnie tak jest, swoja droga w
manualach procka zdaje sie podaje tylko czasy do wykonan
w petlach a nie podaje do pierwszych uruchomien - ktore
tez sa przeciez chyba deterministyczne, chyba ze jest to
jakis prosty wzorek typu ilosc dostepow do pamieci * 100 cykli
:?
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
3. Data: 2012-08-10 19:06:35
Temat: Re: rdtsc i ew dziwne wyniki
Od: "Borneq" <b...@a...hidden.pl>
Użytkownik " kenobi" <f...@N...gazeta.pl> napisał w wiadomości
news:k039v0$i63$1@inews.gazeta.pl...
> mam takie wyniki z rdtsc (na moim starym p4 )
Ten stary P4 to jednordzeniowy?
Ale u mnie pojawiały się dziwne wyniki gdy program działał na więcej niż
jednym rdzeniu.
Trzeba wtedy użyć
SetProcessAffinityMask(GetCurrentProcess(), 1);
-
4. Data: 2012-08-10 20:15:59
Temat: Re: rdtsc i ew dziwne wyniki
Od: " " <f...@g...pl>
Borneq <b...@a...hidden.pl> napisał(a):
> Użytkownik " kenobi" <f...@N...gazeta.pl> napisał w wiadomości
> news:k039v0$i63$1@inews.gazeta.pl...
> > mam takie wyniki z rdtsc (na moim starym p4 )
>
> Ten stary P4 to jednordzeniowy?
> Ale u mnie pojawiały się dziwne wyniki gdy program działał na więcej niż
> jednym rdzeniu.
> Trzeba wtedy użyć
> SetProcessAffinityMask(GetCurrentProcess(), 1);
>
ok, teraz sie wyjasnilo, zob drugi post - pierwszy przebieg
jest znacznie wolniejsy niz sie spodziewalem, zapetlone
przebiegi sa z kolei nawet szybsze niz sie spodziewalem
sprawdzilem tez wynik zwyklym timerem i wyniki zgadzaja
sie z rdtsc
glownie interesowala mnie teraz kwestia tego pierwszego
przebiagu - na zapetlonym przebiegu timingi podaja manuale -
ale jaki jest wzorek na pierwszy przebieg ? i jaki wklad
(np procentowo, miewa pierwszy przebieg w stosunku do
calosci, czy maly czy duzy - niby moze jakis miec skoro to
jest 1000x wolniel - ale jak to sensownie oszacowac ?
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
5. Data: 2012-08-10 20:33:49
Temat: Re: rdtsc i ew dziwne wyniki
Od: "Jordan Szubert" <u...@j...us.to>
Dnia 10-08-2012 o 18:30:04 kenobi <f...@n...gazeta.pl> napisał(a):
> ok, to chyba to bo z kolei
>
> xor ebx,ebx
> @935:
> push offset $ijkagfia
> push offset $agkagfia
> call dword ptr [_asm_dot_fpu]
> fstp st(0)
> add esp,8
>
> inc ebx
> cmp ebx,1000
> jl short @935
>
> oscyluje 20 - 23 tys - czyli z kolei powiedzialbym
> troche krótko: w kazdym razie ciekawa rozpietosc 1500 cykli
> na pierwsze uruchomienia a 20 cykli na uruchomienie
> w petli (o ile to dokladnie tak jest, swoja droga w
> manualach procka zdaje sie podaje tylko czasy do wykonan
> w petlach a nie podaje do pierwszych uruchomien - ktore
> tez sa przeciez chyba deterministyczne, chyba ze jest to
> jakis prosty wzorek typu ilosc dostepow do pamieci * 100 cykli
Windows ni Linux nie jest deterministyczny, czas dostępu do danych jest
zależny od tego, gdzie te dane są, jak masz pecha, to będzie miliony albo
i miliardy razy wolniej, niż jak masz szczęscie, a należy zakładać, że nie
wiesz, czy masz szczęscie
<quote src="Felix von Leitner -- Source Code Optimization">
Memory Access Timings, Linux 2.6.31, Core i7
Page Fault, file on IDE disk 1.000.000.000 cycles
Page Fault, file in buffer cache 10.000 cycles
Page Fault, file on ram disk 5.000 cycles
Page Fault, zero page 3.000 cycles
Main memory access 200 cycles (Intel says 159)
L3 cache hit 52 cycles (Intel says 36)
L1 cache hit 2 cycles
The Core i7 can issue 4 instructions per cycle. So a penalty of 2 cycles
for L1 memory access means a missed opportunity for 7 instructions.
</quote>
--
Jordan Szubert
-
6. Data: 2012-08-10 20:55:22
Temat: Re: rdtsc i ew dziwne wyniki
Od: " kenobi" <f...@g...pl>
Jordan Szubert <u...@j...us.to> napisał(a):
> Dnia 10-08-2012 o 18:30:04 kenobi <f...@n...gazeta.pl> napisa=B3(a):
>
> > ok, to chyba to bo z kolei
> >
> > xor ebx,ebx
> > @935:
> > push offset $ijkagfia
> > push offset $agkagfia
> > call dword ptr [_asm_dot_fpu]
> > fstp st(0)
> > add esp,8
> >
> > inc ebx
> > cmp ebx,1000
> > jl short @935
> >
> > oscyluje 20 - 23 tys - czyli z kolei powiedzialbym
> > troche kr=F3tko: w kazdym razie ciekawa rozpietosc 1500 cykli
> > na pierwsze uruchomienia a 20 cykli na uruchomienie
> > w petli (o ile to dokladnie tak jest, swoja droga w
> > manualach procka zdaje sie podaje tylko czasy do wykonan
> > w petlach a nie podaje do pierwszych uruchomien - ktore
> > tez sa przeciez chyba deterministyczne, chyba ze jest to
> > jakis prosty wzorek typu ilosc dostepow do pamieci * 100 cykli
>
> Windows ni Linux nie jest deterministyczny, czas dost=EApu do danych jes=
> t =
>
> zale=BFny od tego, gdzie te dane s=B1, jak masz pecha, to b=EAdzie milio=
> ny albo =
>
> i miliardy razy wolniej, ni=BF jak masz szcz=EAscie, a nale=BFy zak=B3ad=
> a=E6, =BFe nie =
>
> wiesz, czy masz szcz=EAscie
>
> <quote src=3D"Felix von Leitner -- Source Code Optimization">
> Memory Access Timings, Linux 2.6.31, Core i7
> Page Fault, file on IDE disk 1.000.000.000 cycles
> Page Fault, file in buffer cache 10.000 cycles
> Page Fault, file on ram disk 5.000 cycles
> Page Fault, zero page 3.000 cycles
> Main memory access 200 cycles (Intel says 159)
> L3 cache hit 52 cycles (Intel says 36)
> L1 cache hit 2 cycles
> The Core i7 can issue 4 instructions per cycle. So a penalty of 2 cycles=
> =
>
> for L1 memory access means a missed opportunity for 7 instructions.
> </quote>
>
interesuje mnie sytuacja z pominieciem page faultow ;-)
wtedy ten wzorek moze byc przyblizony (jak w fizyce )
ale jakis-tam zapewne jest, jaki to jest wzorek?
(na oko moze to byc tak jak mowilem cos w stylu 150 * r/w
czesciowo pewnie moglbym pomierzyc ale chwilowo jednakże
jestem przemeczony)
--
(down on the highway Im doin it my way)
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/