Sākumlapa › Forumi › Notepad.lv › IT ziņas › Raksti › Vai PhysX uz GPU tiešām ātrāks nekā uz CPU?
[imgr]
1. PhysX kods liek procesoriem veikt peldošā punkta aprēķinus ar x87 instrukcijām nevis ar SSE un to jaunākām revīzijām.
2. PhysX aprēķiniem tiek izmantots tikai viens pavediens (thread) neatkarīgi no pieejamo kodolu vai pavedienu skaita operētājsistēmā.
Veicot fizikas aprēķinus ar arhaiskām x87 instrukcijām tiek mērķtiecīgi bremzēts procesors, neizmantojot pilnīgi tā iespējas. Praktiskais ieguvums ir apmērām 2 reizes1 , bet teorētiskais līdz pat 4 reizēm. Tā kā SSE instrukcijas ir 128 bitu, tad vienā ciklā ar to var veikt četrus 32 bitu aprēķinus (PhysX aprēķinos izmanto 32 bitu peldošo punktu). Zinot, ka SSE instrukcijas tika ieviestas procesoros sākot no PIII laikiem, nav nekāda iemesla tās neizmantot, vēl pievienojot faktu, ka 64 bitu operētājsistēmās x87 instrukcijas ir izņemtas no kodola (kernel), lai gan izmantot tās vēl varot.
Citāds:
“In 64-bit versions of Windows, x87 is deprecated for user-mode, and prohibited entirely in kernel-mode. Pretty much everyone in the industry has recommended SSE over x87 since 2005 and there are no reasons to use x87, unless software has to run on an embedded Pentium or 486.â€
[img]
Mūsdienās praktiski visi procesori ir vismaz divkodolu un liela daļa ir četrkodolu. Jebkurš sevi cienošs spēļuks neizmanto vairāk par diviem kodoliem, pat tos nenoslogojot maksimāli. Teorētiski būtu iespējams veikt fizikas aprēķinus ar atlikušo jaudu vai kodoliem, Nvidia gan tā nedomā. Var jau vainu novelt uz to, ka grūti kodu optimizēt, bet tā kā PhysX labi strādā uz konsolēm un tiek izmantoti visi Cell procesora kodoli (neskaitot Wii, kuram ir vienkodola procesors), pie tam nevienai konsolei nav grafisko procesoru, kas atbalstītu CUDA. Atgādināšu CUDA atbalsts GeForce videokartēm ir tikai sākot no 8. sērijas, kas esot nepieciešams, lai PhysX darbotos. Lai gan tas netraucē PhysX mierīgi darboties uz konsolēm – PlayStation 3 ir tikai NV47 jeb G70 grafiskais procesors, un pārējām divām ir ATI grafiskie procesori. Ļaujot izmantot brīvos procesoru kodolus, varētu panākt praktiski lineāru ātrdarbības pieaugumu atkarībā brīvo kodolu skaita.
Ja šo visu pavērstu otrādi, respektīvi, izmantotu tikai vienu videokartes šeideru procesoru, rezultātā Nvidia`s rezultāti jādala ar 480, 240, 128 vai ar kādu citu skaitli atkarībā no kartes. Klāt ņemot SSE instrukciju neizmantošanu, var panākt vairāk kā tūkstoškārtīgu paātrinājumu, veicot aprēķinus uz procesora nevis videokartes. Š is pētījums kārtējo reizi parāda, ar ko nodarbojas Nvidia`s PR un mārketinga nodaļas pēdējā laikā.
Atbilde ir tāda, ka šos fizikas efektus (ja tā vispār var saukt gan Havok, gan PhysX necilo sniegumu) spēlītēs praktiski neizmanto. Es tā kā neesmu arī redzējis spēlīti, kur šie fizikas vai citi aprēķini tiktu pielietoti puslīdz jēdzīgi. Katrā reviewā gadus desmit par topu spēlītēm jau raksta, ka ūdens ir reālistisks, zāle reālistiska, nokrišņi reālistiski (pēdējie droši vien tāpēc, ka kruti skaitās uzmest uz ekrāna pixelšeiderotas lāses, radot iespaidu, ka es uz to pasaulīti skatos caur stikliem, pat ja man brilles nav uz acīm)… da tas viss ir sviests. Š…emot vērā, ka jaudas (un TDP) pieaugušas ģeometriskā progresijā, kvalitāte gājusi uz augšu baigi lēnām. Modē tagad ir uzskrūvēt kontrastu, muldēt par kkādu HDR (kaut neviens consumer video standarts to neatbalsta un neviens monitors to nevar attēlot, tātad atkal spēlēšanās ar kontrastu tikai) un piemest motion blur (ar viltīgām krāsiņām), lai nebūtu redzamas cūcības.
Vienīgi Bad Company 2 mani pārsteidza ļooti patīkami. DICE meistardarbs, pat auduma šķērssvītrojums uz cepures (kaut tā ir tik tekstūra ar bump-mapping), ir redzama. Havok sniegums gan ir suboptimāls. Taču uz kopējā fona jāsaka, ka tomēr izcils. Metro 2033 gan neesmiečekojis; tam vajadzētu būt vai nu pēdējai naglai vai pirmajam trumpim. Un lieku kreisās kājas īkšķi, ka būs pirmais minētais.
Jebkurš sevi cienošs spēļuks neizmanto vairāk par diviem kodoliem, pat tos nenoslogojot maksimāli.
Š im gan īsti negribētos piekrist, manuprāt, ir tieši otrādi – jo labāka spēle, jo optimālāk cenšas izmantot piedāvātos resursus, tb, izmantot visas kores, un maximāli (labi, varbūt ne maximāli, bet vismaz tā, lai būtu balanss starp cpu:gpu noslodzi), lai panāktu labākus fps.
Neesmu pētījis par šo tēmu, bet kā es to redzu (brīdinu: sekos minējumi) – visticamāk, ka x87 instrukcijas tiek izmantotas, jo tās tiek atbalstītas nvidia gpu, vai arī triviāli translējas uz nvidia gpu instrukcijām. Tātad, visticamāk, problēma ir programmatūrā, kas šīs instrukcijas laiž/kompilē uz cpu draudzīgu kodu. Varbūt slinkums, varbūt nevēlēšanās, varbūt grūti, varbūt visi 3. Bet par to, ka uz konsolēm fizix iet labāk – vai nevarētu būt tā, ka konsoļu proči labāk tiek galā ar šīm x87 lietām? Vēl varētu būt tā, ka konsoļu ražotāji ir iešķiebuši nvidia žūksnīti (vai paši kko saķīlējuši), lai x87 tiktu darbinātas ātrāk. Bet vispār es te tikai spriedelēju, būs brīvākā brīdī jāparesearcho.
Jebkurš sevi cienošs spēļuks neizmanto vairāk par diviem kodoliem, pat tos nenoslogojot maksimāli.
Š im gan īsti negribētos piekrist, manuprāt, ir tieši otrādi – jo labāka spēle, jo optimālāk cenšas izmantot piedāvātos resursus, tb, izmantot visas kores, un maximāli (labi, varbūt ne maximāli, bet vismaz tā, lai būtu balanss starp cpu:gpu noslodzi), lai panāktu labākus fps.
Neesmu pētījis par šo tēmu, bet kā es to redzu (brīdinu: sekos minējumi) – visticamāk, ka x87 instrukcijas tiek izmantotas, jo tās tiek atbalstītas nvidia gpu, vai arī triviāli translējas uz nvidia gpu instrukcijām. Tātad, visticamāk, problēma ir programmatūrā, kas šīs instrukcijas laiž/kompilē uz cpu draudzīgu kodu. Varbūt slinkums, varbūt nevēlēšanās, varbūt grūti, varbūt visi 3. Bet par to, ka uz konsolēm fizix iet labāk – vai nevarētu būt tā, ka konsoļu proči labāk tiek galā ar šīm x87 lietām? Vēl varētu būt tā, ka konsoļu ražotāji ir iešķiebuši nvidia žūksnīti (vai paši kko saķīlējuši), lai x87 tiktu darbinātas ātrāk. Bet vispār es te tikai spriedelēju, būs brīvākā brīdī jāparesearcho.
Crysis – optimizēts kā mana pēcpuse automaģistrālei.Negribās spēlēt to igru,kad paskaties kādi memory leaki un kodolu noslogojums – vobše gafno.
X87 instrukcijas tiek izmantotas no PhysX sākuma, kad vēl viss piederēja Aegia, ar tieši tādu pašu domu, lai pierādītu cik karte laba un ka ar CPU nepietiek priekš “foršiem” efektiem. Nvidia vienk. visu turpina, jo tas liek izskatīties viņu videokartēm labāk nekā ir patiesībā.
Tagad gan lasot PR atbildes uz rakstiem netā var redzēt ka Physx 3.0 versijā tiek solīts SSE un multi-threading atbalsts, šobrīd ir versija 2.wtf.
Bet NV и хочетÑÑ, и колетÑÑ, i` paši nesaprot, ko lai tagad dara – vai pievērsties zinātniski laboratoriskiem aprēķiniem, vai ražot mikrokodolstacijas un mierināt jūizerus, ka “mūsu kartes atbalsta CUDA”, vai arī vienkārši izmantot neglītus paņēmienus ar aprēķinu instrukcijām fiziks-šmiziks tehnoloģijās, kuras nekad nevienam tā īsti nav bijušas vajadzīgas un saprotamas. Š ķiet, NV ķeras pie jebkura salmiņa, tik metožu izvēle tāda stipri apšaubāma…
Tanī pat laikā geimeri neinteresē iespēja darbināt FoldinHome, geimeri interesē, vai uz konkrētas kartes var uzrambāt Dirt 2 bez lagiem.
Esmu ilgus gadus bijis NV fans, bet tas, ko redzu pēdējā laikā, man it nemaz nesimpatizē. Un rakstā minētais mani absolūti neizbrīna. Pat ļoti cienījamas piezīmes atrodamas rakstā. +1
P.S. Holywar’us uzsākt man nav nemazākās vēlēšanās, un pēdējajās dienās notepad parādās tiešām lieliski raksti, jo lasīt par to cik krutu televizoru izlaidusi “vadošā kompānija inovāciju jomā” diez vai kādu tā patiešām interesē
Preses relīzes