.[ ČeskéHry.cz ].
Detekce frekvence CPU

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Deluxe



Založen: 31. 07. 2007
Příspěvky: 235
Bydliště: Oslavany

PříspěvekZaslal: 14. květen 2009, 19:01:10    Předmět: Detekce frekvence CPU Odpovědět s citátem

Ahoj, nevite o nejakym spolehlivym zpusobu jak zjistit frekvenci CPU? Vyzkousel sem uz par ruznejch zpusobu vjetsina pouziva asm RDTSC a funguje pekne, ale nejsou spolehlivy, obcas to vyflusne "kravinu". Nemusi to byt multiplatformni, staci pro Windows. Potrebuju to kvuli co nejpresnejsimu casovaci na "profilovani" kodu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MD



Založen: 29. 07. 2007
Příspěvky: 437
Bydliště: Praha

PříspěvekZaslal: 14. květen 2009, 19:24:48    Předmět: Odpovědět s citátem

Podivej se na funkce QueryPerformanceCounter a QueryPerformanceFrequency z winapi, ty jsou urcene pro presne profilovani.
_________________
- play with objects - www.krkal.org -
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 14. květen 2009, 23:43:59    Předmět: Odpovědět s citátem

Ale performance counter může vyžadovat svázání vlákna s jedním z CPU. Viz SetThreadAffinityMask. Je možné, že toto už v novějších Windows nebude potřeba...

Instrukce RDTSC vyžaduje to samé. Problém je v tom, že vlákno ti může skákat mezi dvěma CPU a každý z nich ti může dát jiný hodnoty. Nedivil bych se, kdyby performance counter byl implementován právě pomocí této instrukce.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Deluxe



Založen: 31. 07. 2007
Příspěvky: 235
Bydliště: Oslavany

PříspěvekZaslal: 15. květen 2009, 06:58:07    Předmět: Odpovědět s citátem

Jo asi to bude ono, pak to zkusim... Jisty je ze na ty hodnoty mneli vliv zmnely prioryty procesu, civ vyzsi priorita tim min chyb... Takze to bude bud tim (zkousim to na Athlonu X2) a nebo ze se pri tom mnereni pozastavi to vlakno.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MD



Založen: 29. 07. 2007
Příspěvky: 437
Bydliště: Praha

PříspěvekZaslal: 15. květen 2009, 12:32:52    Předmět: Odpovědět s citátem

Ono mozna nejjistejsi bude pouzit starou dobrou metodu mereni, kdy danou cast das to forcyklu a pustis ji treba 1000x Wink
_________________
- play with objects - www.krkal.org -
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 15. květen 2009, 13:08:04    Předmět: Odpovědět s citátem

Bacha na to, co pisal Eosie. Ak chces pouzivat performance counter, musis nastavit pre istotu (process/thread) affinity mask tak, aby to bezalo len na jednom CPU. Mam skusenosti z Win 2003 x64 aj Win xp x64 na roznych dualcore Athlonoch, ze ti dve volania QueryPerformanceCounter vratia hodnoty, kde druha bude mensia (cize zaporny casovy rozdiel). To prave vtedy, ked nechas scheduler aby ti to vlakno prehadzoval po jadrach ako sa mu zachce.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Deluxe



Založen: 31. 07. 2007
Příspěvky: 235
Bydliště: Oslavany

PříspěvekZaslal: 15. květen 2009, 14:10:24    Předmět: Odpovědět s citátem

Jo, bylo to tim, hodil sem to jen na jedno CPU a vali to vyborne. dik.
Takze to stejne dela i na Win XP x86.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tringi



Založen: 28. 07. 2007
Příspěvky: 290

PříspěvekZaslal: 16. květen 2009, 18:57:31    Předmět: Odpovědět s citátem

S performance countery je to trochu problém. Četl jsem na blogu některého z vývojářů jádra Windows, že po dodavateli ovladače k desce/procesoru vyžadují aby prostředky, nad kterými toto stojí, vracely konstantní frekvenci, bez ohledu na plynule měněnou frekvenci procesoru a stejné hodnoty, bez ohledu na kterém jádře vlákno právě běží, ale bohužel většina jich nesplňuje ani jednu z těchto podmínek.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna