-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: " " <f...@g...pl>
Newsgroups: pl.comp.programming
Subject: Re: cache friendly
Date: Mon, 30 Jan 2012 12:19:53 +0000 (UTC)
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 115
Message-ID: <jg61t9$1cd$1@inews.gazeta.pl>
References: <jg5net$qmn$1@inews.gazeta.pl> <jg5rhv$ahm$1@inews.gazeta.pl>
NNTP-Posting-Host: localhost
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1327925993 1421 172.20.26.241 (30 Jan 2012 12:19:53 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Mon, 30 Jan 2012 12:19:53 +0000 (UTC)
X-User: fir
X-Forwarded-For: 31.61.130.246
X-Remote-IP: localhost
Xref: news-archive.icm.edu.pl pl.comp.programming:194934
[ ukryj nagłówki ]M.M. <m...@g...pl> napisał(a):
> <f...@N...gazeta.pl> napisał(a):
>
> > na czym polega pisanie cache friendly?
> Stosuje tylko bardzo proste zasady, bez wnikania w
> szczegoly, a przyspieszenie bywa ogromne, rzedu 10-30 razy.
>
> Ladnie to widac na mnozeniu macierzy. Operacje sa proste,
> bo tylko mnozenie i dodawanie, ale pamieci duzo. Wiec przerzuty
> pomiedzy poziomami cache moga byc waskim gardlem.
>
> Generalnie jesli sa np. dwie tablice:
> typ1 tab1[N];
> typ2 tab2[N];
>
> I przewidujesz ze zaraz po obliczeniu na tab1[i] program bedzie
> wykonywal obliczenia na tab2[i], to lepiej upakowac w strukture:
> struct X {
> typ1 t1;
> typ2 t2;
> } tab[N];
>
>
> Jesli obliczenia zaczynaja sie od t2, to lepiej odwrocic kolejnosc:
> struct X {
> typ2 t2;
> typ1 t1;
> } tab[N];
>
>
> Generalnie dane ukladamy tak, aby program nie musial skakac na wpol
> losowo po duzej przestrzeni adresowej, ale zeby mogl pracowac w
> miare sekwencyjnie.
>
tylko takie zasady ? a jak duzych skokow nalezy unikac
wlasnie nie wiem jak jest dokladnie z tymi zasadami
kojarze tylko ze linijka cache ma mw 256 bajtow
(lub cos takiego),tak ze nawet nie wiem czy trzeba unikac
- GRUBOZIARNISTY ROZRZUT (?? powinno czy nie powinno robic rozxnicy)
- DROBNOZIARNISTY ROZRZUT (?? powinno czy nie powinno robic rozxnicy)
rozrzutu w przestrzeni adresowej czy chodzi o wyczerpywanie
- WYCZERPYWANIE
sie cache - nie wiem tez czy odwrocona kolejnosc
- ODWROCONA_KOLEJNOSC (??)
np dostepy sekwencyjne w tyl po adresach mialyby byc
wolniejsze czy nie
inna sprawa to kwestia tego by wogole unikac trzymania
- RAM DOSTEPY
np danych posrednich w ramie a c tego raczej jakos nie
nie wspiera, kwestie:
- czy jesli nie uzywam jawnego definiowania zmiennych
posrednich przy obliczaniu wyrazen to mam pewnosc ze
kompilator sam nie wrzuci mi niektorych posrednich etapow
wyliczen do jakichs komorek w ramie tylko wszystko
wyliczy na rejestrech i stacku fpu
- i tak nie wiadomo jak wtedy pogodzic przydatnosc
przechowywania wynikow czesciowych z przydatnoscia
nie uzywania przy tym ramu
int temp1 = x*x; // potrzebne tylko jako posrednie wyniki
int temp2 = y*y; // do dalszych wyliczen ale nie powinno byc w ram
int a = temp1+temp2;
int b = temp1-temp2;
sam uzywam zwykle duzych tablic sporych (kilkadziesiat
do kilkaset bajtow) rekordow
po czym zwykle gesto uzywam tylko malej czesci pol
o tych samych offsetach (np tych blizej poczatku
struktury a reszta jest uz bardziej sporadycznie) -
tym samym marnuje zdaje sie cache na cala tablice
- przy czym dla malej ilosci danych ona calo moze
sie moze miescic w cache a dla duzej juz nie miescic
ew jakbym znal dokladniej te reguly to moglbym dla
eksperymantu pisac specjalnie pod cache
- a jak sie ma sprawa z alignmentem? sam nie uzywam
alignmentu i zakladam niejako ze c nie robi 'paddingu'
ze tak powiem
char x; // adr pola = pocz_stukturyr + 0
float y; // adr pola = pocz_stukturyr + 1 a nie + 4
int z; // adr pola = pocz_struktury + 5 a nie + 8
(globalne wyrownywanie w b55 jest ustawione na
4 bajty tak ze nowe encje jak mysle sa wyrownywane
do 4 ale zakladam ze same pola w srodku nie sa rozstawiane
i 'padowane'
mechanizmy kontroli nad tym by sie przydaly bo np duze tablice
warto by wyrownywac chyba nawet do 4096
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Następne wpisy z tego wątku
- 31.01.12 02:46 M.M.
Najnowsze wątki z tej grupy
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-05 Shrek, wzrośnie cena prądu :-)
- 2025-07-05 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-07-05 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-05 Środa Wielkopolska => SAP FI/CO Konsultant wewnętrzny <=
- 2025-07-06 Płacić za wodę ze studni
- 2025-07-06 Kolejny inżynier...
- 2025-07-05 UE ustępuje pod presją Trumpa. Socjaldemokraci: oddaliśmy miliardy
- 2025-07-04 od kiedy można obrażać Plastusia i do kiedy Batyra?
- 2025-07-05 UE ustępuje pod presją Trumpa. Socjaldemokraci: oddaliśmy miliardy
- 2025-07-03 Trybik
- 2025-07-04 Renault Symbioz
- 2025-07-04 Architektura IIIRP: Wyjątkowa, a prymitywniejsza niż stodoła pod zaborami
- 2025-07-04 Warszawa => International Freight Forwarder <=
- 2025-07-04 Wrocław => SAP ABAP Developer <=
- 2025-07-04 Warszawa => Mid/Senior IT Recruiter <=