Προς το περιεχόμενο

PhysX - (more) Tales from the Crypt


tmjuju

Προτεινόμενες αναρτήσεις

Δημοσ.

PhysX - more Tales from the Crypt

 

Σύνοψη από το tech report

Nvidia has long promoted its PhysX game physics middleware as an example of a computing problem that benefits greatly from GPU acceleration, and a number of games over the past couple of years have featured PhysX with GPU acceleration. Those games have often included extra physics effects that, when enabled without the benefit of GPU acceleration, slow frame rates to a crawl. With the help of an Nvidia GPU, though, those effects can usually be produced at fluid frame rates.

We have noted in the past that some games implement PhysX using only a single thread, leaving additional cores and hardware threads on today's fastest CPUs sitting idle. That's true despite the fact that physics solvers are inherently parallel and are highly multithreaded by nature when executing on a GPU.

Now, David Kanter at RealWorld Technologies has added a new twist to the story by analyzing the execution of several PhysX games using Intel's VTune profiling tool. Kanter discovered that when GPU acceleration is disabled and PhysX calculations are being handled by the CPU, the vast majority of the code being executed uses x87 floating-point math instructions rather than SSE. Here's Kanter's summation of the problem with that fact:

x87 has been deprecated for many years now, with Intel and AMD recommending the much faster SSE instructions for the last 5 years. On modern CPUs, code using SSE instructions can easily run 1.5-2X faster than similar code using x87. By using x87, PhysX diminishes the performance of CPUs, calling into question the real benefits of PhysX on a GPU.

Kanter notes that there's no technical reason not to use SSE on the PC—no need for additional mathematical precision, no justifiable requirement for x87 backward compatibility among remotely modern CPUs, no apparent technical barrier whatsoever. In fact, as he points out, Nvidia has PhysX layers that run on game consoles using the PowerPC's AltiVec instructions, which are very similar to SSE. Kanter even expects using SSE would ease development: "In the case of PhysX on the CPU, there are no significant extra costs (and frankly supporting SSE is easier than x87 anyway)."

So even single-threaded PhysX code could be roughly twice as fast as it is with very little extra effort.

Between the lack of multithreading and the predominance of x87 instructions, the PC version of Nvidia's PhysX middleware would seem to be, at best, extremely poorly optimized, and at worst, made slow through willful neglect. Nvidia, of course, is free to engage in such neglect, but there are consequences to be paid for doing so. Here's how Kanter sums it up:

The bottom line is that Nvidia is free to hobble PhysX on the CPU by using single threaded x87 code if they wish. That choice, however, does not benefit developers or consumers though, and casts substantial doubts on the purported performance advantages of running PhysX on a GPU, rather than a CPU.

Indeed. The PhysX logo is intended as a selling point for games taking full advantage of Nvidia hardware, but it now may take on a stronger meaning: intentionally slow on everything else.

 

 

http://techreport.com/discussions.x/19216

 

 

 

Ολόκληρο το άρθρο θα το βρείτε εδώ:

 

PhysX87: Software Deficiency

 

http://realworldtech.com/page.cfm?ArticleID=RWT070510142143

 

 

 

Έχω περίπου την ίδια άποψη με τον David

Ότι αντίστοιχες πρακτικές βλάπτουν την αγορά, τους προγραμματιστές και προπάντων τους καταναλωτές.

  • Απαντ. 65
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Ντάξι, η δουλειά βρωμούσε από μακρυά... Σιγά την έξτρα δύναμη που έχει μια κάρτα τετραετίας, σε σχέση με τα σημερινά τέρατα CPUs και μπορεί να επιταχύνει καλύτερα το PhysX... Βλακώδες μάρκετινγκ ήταν... πάλι καλά που δεν επένδυσαν πολλά παιχνίδια σε αυτό...

Παίζω τον batman με physx High και σέρνεται το σύμπαν με την Ati κάρτα μου, ενώ ο 4πύρηνος 965 δουλεύει στο 30%...

Είναι τουλάχιστον αντίστοιχη απάτη με τους Ati gpu-accelerated codecs που δεν χρησιμοποιούν gpu, απλά κάνουν πιο γρήγορα και πολύ χειρότερης ποιότητας μετατροπή με τον CPU και σου λένε οτι το κέρδος έρχεται από την κάρτα, η οποία χρησιμοποιείται το πολύ 10%...

Έ ρε ξύλο που θέλουν...

Δώστε optimised κώδικα στον λαό, και πληρώστε επιτέλους μηχανικούς με @@ που ξέρουν να προγραμματίζουν σε system level και όχι Ινδους που γράφουν κώδικα με τα πόδια... γιατί σε λίγα χρόνια, τα πάντα θα σέρνονται παρόλο που οι CPUs θα έχουν 100cores

Δημοσ.

Μα καλα σοβαρολογουμε ? Καταρχην η AGEIA δημιουργισε το PhysX, η NVIDIA απλα το πηρε και το εκανε συμβατο με τις καρτες της μεσω CUDA. Δλδ οταν επρεπε καποιος να εχει AGEIA καρτα για να παιξει ενα PhysX Accelerated Game ηταν καλυτερα ? Ναι τοτε οι τιτλοι ηταν ελαχιστοι σε σχεση με τωρα αλλα ας σοβαρευτουμε. Ειναι σαν να λεει ο David στην NVIDIA, ναι, μπραβο, καλα κανατε και εξαγορασατε με τοσα εκκατομυρια δολλαρια την τεχνολογια της AGEIA αλλα καλλο θα ηταν να επιτρεψετε στα CPU να κανουν την ιδια δουλεια ? Μα καλα σοβαρολογει ? Ποια εταιρεια θα εκανε κατι τετοιο ? Εχει ξαναγινει κατι αναλογο ? Θα το εκανα εγω, εσεις η κανενας αλλος ? Ας ειμαστε ρε γαμωτο και λιγακι ρεαλιστες και μην λεμε οτι κατεβαινει στο μυαλο μας με βαση το τι μας συμφερει.

Δημοσ.

Μια χαρά τα γράφει ο David ξαναδιάβασε σε παρακαλώ το άρθρο.

Nvidia has no obligation to optimize for their competitor’s products.
PhysX uses x87 because Ageia and now Nvidia want it that way.
Δημοσ.

Ναι, κατακρινει πρωτα καλα καλα το πως δουλευει το PhysX, λεει πως δεν βολευει τους δημιουργους παιχνιδιων κτλ κτλ κτλ και στο τελος πεταει ενα no obligation to optimize for ther competitor's products.....ΚΑΙ ? Τοτε ποιος ο λογος ΟΛΟΥ αυτου του αρθρου ?

 

Μαλλον προκειται για μια analogh περιπτωση linuxa που μιλαει για τα Windows.....

Δημοσ.
Ναι, κατακρινει πρωτα καλα καλα το πως δουλευει το PhysX, λεει πως δεν βολευει τους δημιουργους παιχνιδιων κτλ κτλ κτλ και στο τελος πεταει ενα no obligation to optimize for ther competitor's products.....ΚΑΙ ? Τοτε ποιος ο λογος ΟΛΟΥ αυτου του αρθρου ?

 

Μαλλον προκειται για μια analogh περιπτωση linuxa που μιλαει για τα Windows.....

 

Δε κατακρίνει στον αέρα, δεν είναι flame.

Στοιχεία καταθέτει σα μηχανικός.

Προσωπικά καιρό ήθελα να δω αντίστοιχη ανάλυση … καθώς βαριέμαι να κάνω αντίστοιχα κόλπα τώρα πια.

Τεσπα, εάν θες πάρε απλά τα δεδομένα από τα πινακάκια του και κρίνε τα εσύ με πιο επιστημονικό τρόπο.

Βλέπεις με τον ίδιο τρόπο έχουν αναλυθεί πολλά applications, και κάθε μηχανικός βγάζει τα συμπεράσματα του.

 

---------- Προσθήκη στις 11:15 ---------- Προηγούμενο μήνυμα στις 11:10 ----------

 

Μαλλον προκειται για μια analogh περιπτωση linuxa που μιλαει για τα Windows.....

 

Offtopic

Μάλιστα δεύτερο case

Πριν είχαμε τους ινδούς προγραμματιστές

Τώρα έχουμε και τους linuxakides που λένε για windows

Όλο στερεότυπα :D

/offtopic

Δημοσ.

Και ο λογος της αναλυσης ηταν ποιος ? Ο κοσμος δεν γνωριζει πως για να εχεις PhysX πρεπει να εχεις καρτα NVIDIA ? Η μηπως ειναι παραξενο το οτι η τεχνολογια στηριζεται σε αυτες τις καρτες ? Μηπως θα ηταν λογικο να δουλευε το PhysX το ιδιο μονο χρησιμοποιοντας τον CPU ? Δεν νομιζω πως ο κοσμος ειναι χαζος, ειναι φως φαναρι πως αυτο ειναι ενα ακομα αρθρο απο καποιον που δεν χωνευει ειτε την NVIDIA ειτε το PhysX και τπτ παραπανω.

Δημοσ.

Όταν λέω για ινδους, δεν εννοώ την εθνικότητα, αλλά ήθελα να περιγράψω την ιδέα του προγραμματισμού από ανειδίκευτους προγραμματιστες, μαζικά με εξευτελιστικές τιμές. Φυσικά οι Ινδοί είναι τρελα μυαλά και αυτό αποδεικνύεται από τα επιτεύγματα τους στο cs και την απόδειξη αλγοριθμων που ταλαιπωρούσαν για δεκαετίες...

Παρεξηγηθηκα ( αν και όχι αδίκως γιατί δεν εξήγησαν τι εννοώ )...

 

 

Sent from my iPod touch using Insomnia.app

Δημοσ.

Προέρχομαι από ένα κόσμο που είναι υπερήφανος για το efficiency του κώδικα που γράφει.

χ87 χρησιμοποιούσα το '80.

Δε ξέρω τι δεν έχεις καταλάβει από το άρθρο

Η nV μπορεί να είναι υπερήφανη για άλλα κομμάτια κώδικα

Αλλά για το συγκεκριμένο… θα έπρεπε να ντρεπόταν

 

---------- Προσθήκη στις 11:36 ---------- Προηγούμενο μήνυμα στις 11:33 ----------

 

Όταν λέω για ινδους, δεν εννοώ την εθνικότητα, αλλά ήθελα να περιγράψω την ιδέα του προγραμματισμού από ανειδίκευτους προγραμματιστες, μαζικά με εξευτελιστικές τιμές. Φυσικά οι Ινδοί είναι τρελα μυαλά και αυτό αποδεικνύεται από τα επιτεύγματα τους στο cs και την απόδειξη αλγοριθμων που ταλαιπωρούσαν για δεκαετίες...

Παρεξηγηθηκα ( αν και όχι αδίκως γιατί δεν εξήγησαν τι εννοώ )...

 

 

Sent from my iPod touch using Insomnia.app

 

Και εγώ λίγη πλακίτσα έκανα. Δε σε παρεξήγησα γιαυτό και το :D

Και εμένα μου βγαίνουν άθελα καμιά φορά.

Δημοσ.

Μα γιατι να ντρεπεται ? Λογικο ειναι να μην θελουν το PhysX να δουλευει απλα με εναν CPU, το περιεργο που ειναι ?

Δημοσ.
Μα γιατι να ντρεπεται ? Λογικο ειναι να μην θελουν το PhysX να δουλευει απλα με εναν CPU, το περιεργο που ειναι ?

 

Το περίεργο είναι (το οποίο είναι πέρα για πέρα ξεκάθαρο) πως βάζεις ένα benchmark για physx το οποίο θα σε κάνει να πιστέψεις οτι με την GPU σου (Nvidia) θα τρέξει καλύτερα απο το να έτρεχε σε "software mode" επάνω σε μια SSE capable CPU, ενώ αν καποιος έμπενε στον κόπο να ξαναγράψει τον κώδικα (σωστά αυτή τη φορά - hence...efficiency) χρησιμοποιώντας SSE εντολές, θα έστελνε την εκάστοτε GPU, σε επίπεδο physX σπίτι της για διακοπές.

Παλαιότερα (εποχή 386) κυκλοφορούσαν FPU's (387) τα οποία είχανε benchmarks που σου έδειχναν το "με" μαθηματικό συνεπεξεργαστή και το "χωρίς". Τότε καταλάβαινες πως ο FPU επιταχύνει κάποια πράγματα, τα οποία το CPU (όσο optimised και efficient να ήταν ο κώδικας) δεν μπορούσε να κάνει εξίσου καλά.

Η διαφορά με το τώρα είναι οτι τα benchmarks σου δείχνουν τι "κάνει" μια PhysX capable κάρτα γραφικών, χωρίς όμως να σου αναφέρει οτι με σωστό κώδικα θα μπορούσε να το κάνει εξίσου καλά (αν όχι καλύτερα) και μια μοντέρνα SSE capable CPU.

Κατάλαβες με το παράδειγμα που σου έδωσα? Αυτό περίπου προσπαθεί να εξηγήσει και ο αρθρογράφος...

Δημοσ.

Μα το παραδειγμα που δινεις ειναι κουτο στην καλυτερη των περιπτωσεων.... Τι με νοιαζει εμενα η τον καθενα το ΑΝ θα ετρεχε το ιδιο καλα το PhysX σε επεξεργαστες ΑΝ η Nvidia ξαναγραφε τον κωδικα που ΔΕΝ την συμφερει και ΔΕΝ βγαζει νοημα αφου αυτο ειναι κατι που ΔΕΝ εχει ξαναγινει ?

 

Και ξαναλεω, Σοβαρολογουμε ?

Δημοσ.

Είναι κάτι παραπάνω απο προφανές, οτι δεν νοιάζεσαι (σε αντίθεση με άλλους) για το πόσο efficient είναι μια εφαρμογή και το κατα πόσο μπορεί αυτή να εκμεταλλευτεί (κατα το καλύτερο δυνατόν) τους πόρους ενός υπολογιστή (είτε αυτός λέγεται CPU είτε GPU).

Ενδεχομένως η πρόταση της physX να είχε νόημα οταν τα CPU's δεν ήταν αρκετά δυνατά, ωστε να δουλεύουν την "φυσική" των παιχνιδιών. Τώρα όμως που οι πολλαπλοί πυρίνες έχουν μπει στην ζωή μας, η ύπαρξη μιας dedicated κάρτας για την "φυσική" στα παιχνίδια είναι τουλάχιστον ανόητη. Εξίσου ανόητο είναι να γράφεις κώδικα σε cuda (αν μπορείς να τον χαρακτηρίσεις κώδικα, με αυτά που κάνει) όταν μπορείς να κάνεις την ίδια δουλειά και καλύτερα ακόμη με την βοήθεια μίας CPU πλεον.

Τα θύματα του μάρκετινγκ και τα φαν μπόυς θα συνεχίζουν να πίνουν νερό στο physX της Nvidia και οι σοβαροί (developers κυρίως) θα πάψουν να ασχολούνται. Οπότε στο μέλλον οι τίτλοι που θα διαφημίζουν το physX θα ελαττωθούν (και θα σταματήσουν τελείως, οταν η NV πάψει να τους χαρτζηλικώνει)

Δημοσ.

Ενταξει τοτε, εμεις που δεν νοιαζομαστε θα αφησουμε ολους Εσας που νοιαζεστε να μαζεψετε μερικες δεκαδες εκκατομυρια ευρω ωστε να εξαγορασετε την τεχνολογια PhysX, να ξαναγραψετε τον κωδικα και να τον πασαρετε Αφιλοκερδος............

Ως τοτε ομως αν κοιταξεις τα προσεχως παιχνιδια θα δεις πως αυξανονται δραματικα αντι να μειωνονται οπως λες.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...