nVidia stie doar sa pacaleasca si sa minta !


        Se pare ca marketingul de la nVidia inca a ramas la capitolul “hai sa pacalim pe toata lumea”.
Dupa ce au facut o prezentare cu o placa video falsa, prinsa in suruburi pentru lemn, (vedeti aici http://overmind.ro/Rev/nVF.html) si dupa ce produsul lor cel faimos a fost o ratare chiar si pentru piata profesonala unde au reusit sa aduca doar jumatate din performanta/watt promisa, se pare ca singurul lucru cu care se mai pot lauda este PhysX.
Lasand la o parte toate gherlele date de driverele lor, din cauza carora am tradus termenul respectic ca Pishix ca e mai aproape de realitatea situatiei, marketingul lor se lauda ca respectiva tehnologie e de 2-4x mai rapida pe GPU-ul lor decat pe un CPU.
        Sa moara ei ?!
In primul rand, se mai face o mare magarie: daca in sistem este detectata o placa non-nVidia, Pishixul este oprit automat chiar daca in sistem exista si o placa nV.
Totusi niste oameni destepti au gasit cum sa modeze driverele astfel incat sa se poata folosi o placa ATi serioase ca principala in acelasi timp cu o reciclabila gen 9600 GT ce se foloseste pentru Pishix.
nVidia, ca sa demonstreze ce bun e Pishixu pe GPU, au folosit demo-uri gen PhysX Soft Body Demo sau Cryostasis. Cine a avut vointa a sapat un pic prin ele.
Pentru ca cu ATi-uri nu se permite intentionat Pishix, a ramas ca asta sa fie procesat de CPU. Ciudat este faptul ca pe CPU performanta Pishix este mult mai redusa decat ar trebui sa fie. Si mai cuidat e ca in demo-uri s-a folosit doar API-ul de la nV pentru a se demonstra acel avantaj de 2-4x. Ia sa vedem ce, cum si de ce.
        La o analiza atenta se observa ca Pishixul foloseste in loc de instructiuni SSE instructinui x87 pentru calculele in virgula mobila.
Culmea: instructiuni x87 in CPU-uri recente nu se mai poarta. De cand AMD-ul a venit cu 3DNow! si intelul cu SSE, s-a renuntat in CPU-uri la instructiunile x87 din cauza de performante reduse fata de cele SSE. Comparativ, SSE-ul are un spor direct de 20% de performanta. Nici sistemele de operare recente x64 nu mai suparta asa ceva.
x87 se bazeaza pe stive, adica pentru a face o instructiune trebuie folosita stiva si trebuie multe operatiuni cu memoria. Vechiul cip Pishix functioneaza pe 32 de biti. Necesitand double precision floating point in GPU-urile G80 inseamna ca pe 128 de biti se pot pune 4 astfel de puncte.
        SEE in schimb, are pentru instructiuni atat variante scalare cat si vectoriale. Scalar se traduce in o data / instructiune, in timp ce pentru vectorial putem avea o instructiune pe 128 de biti, doua pe 64 sau 4 pe 32.
Asadar daca avem 4 instructiuni 32-bit acestea se pot executa de SSE intr-un singur ceas.
Deci deja s-a depasit avantajul de 2-4x mentionat de nV. Intr-un caz cinstit, Pishixul ar trebui sa functioneze cel putin cu 20% mai bine pe un CPU (am avea un raport de minim 5:4 in favoarea CPU).
        Dar trisarile nu se termina aici.
Pshixul pentru CPU este facut a fi procesat ca single-thread, adica de un singur core al unui CPU. Totusi, pe GPU-ul nV, este lasat sa lucreze in paralel. Cum demonstram asta ? Simplu:
daca nV se lauda cu o performanta de pana la 4x mai buna pentru un GTX280 fata de un quad core, inseamna ca pentru a atinge respectiva performanta, ar trebui sa lucreze cam 60 de core-uri din placa video.
Deci 60 de core-uri de placa video sunt echivalentul unui singur core de CPU.
Daca nu ar exista multithread pus bine la punct in GPU, atunci Pishixul s-ar fi miscat mult mai rau pe respectivul GPU.
Sa mai recalculam o data. Daca intr-un quad core s-ar putea folosi multithread, atunci deja performanta Pishix pe CPU ar fi de 5 ori mai mare decat pe GPU (raport 20:4). Pentru un 6-core de 7.5x (raport de 30:4).
Magaria mai este demonstrata si confirmata si de cat de bine functioneaza Pishixul pe console gen PS3, unde nu exista suport hardware pentru Pishix, dar totusi ruleaza la framerate-uri acceptabile.
        Deci vedeti unde-i problema ? Data fiind doar situatia acutala, avantajul de 2-4x ar fi fost anulat de folosirea de core-uri multiple in cazul CPU-urilor.
Evident ca atunci nV n-ar mai fi avut cum sa se laude cu respectivul ‘avantaj’ si erau lasati cu intre 50% si egalitate. Deci implementarea lor exclusiva de Pishix isi pierdea scopul si rostul.
Ca atare, daca nu s-ar folosi cele doua trisari, Pishixul ar fi functionat pe CPU de 4-8x mai repede. Va dati seama cata magaria s-a facut ?
API-urile de la Bullet physics / Havok nu au probleme in acest sens. Dar asta de la nV e mai incapatanat.
Daca s-ar aplica aceleasi trisari si s-ar anti-optimiza codul de Pishix pentru GPU-ul nV ar ajunge pe undeva la de 1000x mai incet dacat pe un CPU modern.
        Rusine ! Tehnolgia Pishix isi merita pe deplin denumirea.

This entry was posted in Mind Wars, Research and Dismemberment and tagged . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s