-
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
- Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- 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
Najnowsze wątki
- 2026-01-13 STREFA CZYSTEGO TRANSPORTU. O tym nie mówią nam WŁADZE
- 2026-01-13 To nie koniec
- 2026-01-13 Warszawa => Recruiter 360 <=
- 2026-01-13 Katowice => Key Account Manager <=
- 2026-01-13 Warszawa => Senior Backend Java Developer <=
- 2026-01-13 Wrocław => ERP Implementation Consultant <=
- 2026-01-13 Elektryk a otwieranie drzwi :-)
- 2026-01-12 Schemat automatyki
- 2026-01-12 Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- 2026-01-12 Polska Grupa Zbrojeniowa (85% udziałów) Likwiduje Stomil-Poznań - Zakład Działał Od 1928r.
- 2026-01-12 Teoretyczne zagadnienie - ogrzewanie budynku
- 2026-01-12 Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- 2026-01-12 Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- 2026-01-12 Polska Grupa Zbrojeniowa (85% udziałów) Likwiduje Stomil-Poznań - Zakład Działał Od 1928r.
- 2026-01-12 Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]