Tak ohledně té cache, tak jste dobrý teoretikové. Samozřejmě, že sekvenční zpracovávání je dobré, ale
1) zpomalení cache versus paměť je jen lineární. Blbě zvolenej algoritmus je daleko horší zlo, protože ten prostě na větších datech nedoběhne.
Třeba takový Coppersmith-Winogradův algoritmus je nepoužitelný jen a jen kvůli tomu "nedůležitému" lineárnímu zpomalení. To lineární zpomalení bývá občas tak veliké, že jakákoliv rozumná data nejsou dost velká.
2) napsat i jen tak blbou věc jako násobení matic tak, aby se správně využila cache je věc velmi netriviální, dobrá implementace matematický knihovny je na roky práce. Takže napsat, že každej programátor by to měl zvládat je dobrej hospodskej kec.
Neříkám, že by měl být každý programátor schopný napsat efektivní násobení matic. Ale každý programátor by měl minimálně vědět, proč by měl jednu aspoň transponovat aby nepřenášel z paměti 8x víc dat, než je třeba. Stačí ten krok od tragického k rozumnému.
[/quote]
3) Každá architektura procesorů má tu cache organizovanou trochu jinak. Takže znalosti typu rozměr cache, Xcestnost atd...., pokud neladíte program na jednu konkrétní architekturu, jsou k ničemu. A to do toho ještě dělá dost velkej binec HW prefetch, kterej dost běžnejch cache-nepravostí umí vyřešit.
4) pro normálního programátora úplně stačí, když tak nějak tuší, že sekvnenční zpracování je plus.
A to píšu jako člověk, kterej zrovna teď dává dohromady maticový výpočty, kde když se na cache kašle, tak jde výkon do kytek....
[/quote]
Já v principu souhlasím. Jde mi o ten základ. O "své" architektuře by měl programátor minimálně vědět, jak má velké řádky cache. Nějaký prefetch a spol. až tak důležitý není.