Ako spocitat CPI programu?
asked 2015-11-22 17:42:54 +0100
Anonymous
Ako sa da realne spocitat CPI programu napisaneho v C?
(ide o vypocet MFLOPS/MIPS daneho algoritmu.)
asked 2015-11-22 17:42:54 +0100
Anonymous
Ako sa da realne spocitat CPI programu napisaneho v C?
(ide o vypocet MFLOPS/MIPS daneho algoritmu.)
Nejjednodušší cesta je pomocí programu perf - https://perf.wiki.kernel.org/index.php/Tutorial Pro program vypíše statistiky: perf stat program
To je podle mě problematická odpověď: Ano, dozvíte se CPI programu. Ale fakticky ta odpověď bude velmi zavádějící, nedá se podle ní nic usuzovat. Výstup je klasický GIGO (garbage in, garbage out).
Josef Kokeš ( 2015-11-22 18:01:03 +0100 )editPodle mě u programu v C obecně nemá smysl uvažovat počty instrukcí a tedy ani CPI nedává smysl.
Někdy může mít smysl, disassemblovat přeložený kód, spočítat instrukce a pak spočítat CPI, ale jde o vysloveně speciální případy - například když to počítáme jen za nějaký blok, který nedělá žádný vstup a výstup ani nevolá knihovní funkce, jen provádí jednoduché aritmeticko-logické operace (násobení matic, optimalizovaný výpočet CRC, optimalizované šifrování AES apod.).
Použití C v BI-APS je podle mě hloupost. BI-APS je určené na to, abyste se seznámil s tím, jak pracuje procesor, tak byste se měl pohybovat v jazyku, který je tomu procesoru blízko.
Asked: 2015-11-22 17:42:54 +0100
Seen: 203 times
Last updated: Nov 22 '15
Šlo by využít technik které používá perf zmíněný @machoma4: Na začátku výpočetního bloku zjistit aktuální stav counteru instrukcí a taktů, na konci výpočetního bloku také, a odečíst to od sebe (jako takty od taktů a instrukce od instrukcí, samozřejmě). Ale jinak vizte moji odpověď, je to spíš blbost (a budete mít velký problém s realizací, jedna strana je, jestli procesor vůbec tyhle informace podporuje, druhá strana je, že když to podporuje, tak už je to asi moderní multijádrový procesor běžící pod multithreadovým systémem, kde tyhle údaje nejdou pro měření doby běhu programu použít)..
Josef Kokeš ( 2015-11-22 18:04:55 +0100 )editBtw.: Proč anonymní otázka?
Josef Kokeš ( 2015-11-22 18:16:47 +0100 )edit