-
Data: 2014-07-02 01:20:51
Temat: Re: cpu shading by sse intrinsics
Od: firr <p...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]co jeszcze moge powiedziec o takim programowaniu
tymi intrinsicami
podobaja mi sie takie rzeczy jak
_mm_and_ps(values, _mm_cmplt_ps(zeros, values));
czyli takie porownania jakich nie ma w normalnym asmie (a chyba szkoda, (?)) tj nie
rozgaleziajace kodu a zwracajace 'maski' ktorych pozniej mozna uzyc
wtady mozna pisac bezifowo rozne takie wyrazenia jak
a += 17 & (b>10);
co jest rownowazne
if(b>10) a+=17;
w c tez to mozna napisac (jako ze wyzej jest to wlasnie napisane) ale nie wiem czy w
starym asemblerze (tym bez cmov) dalo sie to zapisac bezifowo - warunek ustawia niby
flagi ale nie
pamietam czy byla komenda ktora populowala flage na np cale slowo jedynek itp
jeszcze inna uwaga, ogolnie jak nawyknac 9juz chyba nawyklem) to to tzw wertykalne
kodowanie w intrisincowym sse jest zupelnie proste za wyjatkiem tego ze trzeba
ukladac te dane i akurat jak ja czytam ten kod wyzej to mozna sie pogubic
na jakiej ilosci danych operuje konkretny operand
(chyab trzeba sie troche do tego przyzwyczaic tak jak do wskaznikow)
nie che mi sie tu tlumaczyc o co mi chodzi ale mw o to
__m128 s1234 = dot(normal, lightDirs);
wiadomo ze to robi dota normalnej z lightDirs
i ustawia wynik jako s1234 ale ile dokladnie tego to bierze i jak nie jest dla mnie
jakos natychmiastowo jasne
(to jest wertykalny kod wiec wiadomo ze dziala na paczkach po 4 ale tutaj jest chyba
podwojnie wertykalny - wlasnie nawet nie wiem czy takich zapisow nie nalezy unikac,
chozi tez o pewna kwestie dotyczaca rozkladu danych
wiadomo ze dane musza byc by to tak nazwac zgrupowane w poprzek np
{x[100], y[100], z[100]}
zamiast
{x,y,z}[100]
(ta skladnia nie jest glupia nie wiem czy nie przydalaby sie nawet tak by okreslac
rozmaite layouty a pozniej uzywac x[i] do abstrakcyjnego latania po tych layoutach)
ale pytanie jest czy grupowac w male paczki po cztaery w poprzek tj
{x[4], y[4], z[4]}[25]
czy zupelnie w poprzek {x[100], y[100], z[100]}
zupelnie w poprzek wydaje sie senswniejsze ale
ten paczkowy layout ma pewne 'zalety' czy tez po prostu wlasnosci, mianowicie takie
ze zeby np
napisac takiego podwojnie wertylkalnego dota
wystarczy podac dwa wskazniki tj na jedna paczke i na drugą dot(&a, &b) a bez
rozkladu paczkowego trzeba podac ich szesc dot(&x,&y,&z, &x2,&y2,&z2) - chociaz ja
optuje chyba raczej za tym drugim zapisem jest o wiele bardziej czytelny
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-06-27 Re: Prywatny parking? Pierwsze 10 minut bezplatnie
- 2024-06-27 A co mnie to koooorwa obchodzi?
- 2024-06-28 nawigacja satelitarna
- 2024-06-28 SmartLife/Tuya i osuszanie -- mordowanie z zimną krwią...
- 2024-06-27 położyłem kafelki
- 2024-06-28 Łódź => International Freight Forwarder <=
- 2024-06-28 Łódź => Spedytor Międzynarodowy <=
- 2024-06-28 Gdańsk => Head of International Freight Forwarding Department <=
- 2024-06-28 Sopot => Team Leader E-Commerce for Foreign Markets <=
- 2024-06-28 Warszawa => Senior React Native Developer <=
- 2024-06-28 Warszawa => Frontend Developer (React) <=
- 2024-06-28 Warszawa => Software .Net Developer <=
- 2024-06-28 Warszawa => Frontend Developer (React) <=
- 2024-06-28 Warszawa => Programista Full Stack .Net <=
- 2024-06-28 Warszawa => Frontend Developer (React) <=