Ask Your Question
1

Ako spocitat CPI programu?

asked 2015-11-22 17:42:54 +0100

anonymous user

Anonymous

updated 2015-11-22 18:00:23 +0100

Ako sa da realne spocitat CPI programu napisaneho v C?

(ide o vypocet MFLOPS/MIPS daneho algoritmu.)

edit retag flag offensive close delete

Comments

Š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 )edit

Btw.: Proč anonymní otázka?

Josef Kokeš ( 2015-11-22 18:16:47 +0100 )edit

2 Answers

Sort by » oldest newest most voted
0

answered 2015-11-22 17:53:59 +0100

Nejjednodušší cesta je pomocí programu perf - https://perf.wiki.kernel.org/index.php/Tutorial Pro program vypíše statistiky: perf stat program

edit flag offensive delete publish link more

Comments

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 )edit
0

answered 2015-11-22 17:55:53 +0100

Josef Kokeš gravatar image

Podle 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.

edit flag offensive delete publish link more

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

Add answer

[hide preview]

Question tools

Follow
1 follower

Stats

Asked: 2015-11-22 17:42:54 +0100

Seen: 203 times

Last updated: Nov 22 '15