Crysis en UE laten al heel wat destructable/deformable spul zien, wat aanzienlijk meer rekenkracht vergt dan een paar kratjes.
Een paar blaadjes van de bomen schieten of een deuk in een wagen slaan kost echt geen GFLOPS hoor.
Tsja, als jij dom blijft zeuren over gflops terwijl al meerdere keren is uitgelegd dat het om andere dingen gaat dan alleen rauwe rekenkracht...
Je spreekt ook jezelf hiermee tegen.
Alleen een idoot doet fysische berekeningen wanneer ze niet nodig zijn. Als ik in een lege kamer sta en ik schiet niet hoeft er niks fysisch berekend te worden,
En als je dan naar een volle kamer gaat waar je alles kapot gaat schieten?
Dan moet je toch ineens die physics kunnen berekenen. Ook bij graphics is niet iedere kamer even zwaar, maat het gaat vooral om de minimum framerates. Zo zijn spellen vaak lastig te spelen als er rook-effecten gebruikt worden.
Met physics hetzelfde... als je bv in een huis staat dat ineens instort wil je natuurlijk niet dat je nog maar 3 frames per minuut te zien krijgt.
Die rook-effecten kunnen trouwens ook veel realistischer gemaakt worden als physics in acht genomen worden. Dan kunnen rook en vuur ook echt om objecten heen gaan, en gevoelig worden voor luchtverplaatsing etc.
Daarom ook dat een GPU niet ideaal is voor physics.
Inderdaad, ik zou zelfs beweren dat een GPU er uitermate ongeschikt voor is. Maar de pure kracht van de huidige GPUs en het feit dat ze de CPU ontlasten, maken dat enigszins goed. Ik vind de PPU echter een verreweg superieure oplossing.
Anderzijds is een CPU er perfect voor uitgerust. Vectorinstructies, check. Random geheugentoegang, check. Efficiënte controlestructuren, check. Ontbreekt er iets? En voor de zoveelste keer: een GPU is zo goed in graphics omdat hij texture sampling units heeft en dergelijke terwijl een CPU dit niet heeft. Er is echter niks dat een PPU heeft dat hem beter maakt in physics dan een CPU.
Ja, er ontbreekt iets. Maar je leest mijn posts kennelijk niet.
Maar blijf maar volhouden hoor. Als je het maar vaak genoeg herhaalt, wordt het misschien nog eens waar.
Geld voor een PPU heeft 99% van de gamers niet en zou toch maar voor 1% van z'n tijd effectief de CPU ontlasten. Stomste investering ooit dus.
Zo werkt de game-wereld niet.
Games maken altijd al vroeg gebruik van de nieuwste hardware. Jouw argument is complete onzin. Binnen een paar maanden na de introductie van een nieuwe generatie hardware, zijn er al spellen die er gebruik van maken (bv SSE, hardware T&L, DX8/DX9/DX10). Dit terwijl er op dat moment ook maar heel weinig mensen zijn die daadwerkelijk die hardware in huis hebben.
Omdat ze meerdere detailniveaus ondersteunen, en meerdere codepaden kunnen gebruiken, kunnen ze dit doen zonder de anderen te duperen.
Maar het gemiddelde spel op maximaal detailniveau heeft gewoon absolute top-hardware nodig, en dat is niet de hardware waar de gemiddelde gamer op speelt.
PhysX past prima in dit plaatje, en kan voor een push zorgen, net zoals de andere technologie ook oa door games gepusht is. Als gamers zich bewust worden van de extra features die een PhysX-kaart levert in hun spellen, zullen ze eerder een PhysX-kaart kopen. Net zoals de eerste Voodoo-kaarten zeer succesvol waren met de eerste paar 3d-spellen, ook al kon je die spellen op een snelle CPU net zo goed spelen. Het was alleen wat minder mooi.
Nonsense. GPU's schaalden sneller doordat een toename van het transistorbudget in de eerste plaats gebruikt werd voor extra parallellisme, terwijl voor de CPU dit naar het ondersteunen van hogere kloksnelheden ging.
Maar begrijp je waarom dat zo is? Waarschijnlijk niet.
De GPU leent zich sowieso veel meer voor parallele implementaties dan een CPU, dus is het veel logischer dat men veel eerder die richting kiest. Voor CPUs is dat niet de meest directe weg naar betere prestaties, voor GPUs wel.
Afgezien daarvan is de architectuur van GPUs een aantal keren grondig veranderd om te kunnen zorgen dat ze efficient bleven bij grotere parallelisatie. Een paar 'key-technologies' hierin zijn bv hardware T&L (in het leven geroepen omdat de CPU de GPU niet meer bij kon benen), de hierarchische z-buffer en de unified shaders met dynamische allocatie.
Met multi-core CPU's gebruikt men echter ook een verdubbeling van het aantal transistors voor een verdubbeling van het parallellisme.
Wat tot veel minder prestatiewinst leidt dan bij de GPUs (en dat was mijn punt, waar jij eigenlijk niet op ingaat, maar langs loopt te redeneren. Je begrijpt het niet?).
Beter zelfs, Intel heeft CPU's in de planning die de cores vereenvoudigd om er meer op een chip te krijgen. En hun Tera-Scale experimenten tonen reeds aan dat ze geen moeite hebben om met de technologie van vandaag een TFLOP te halen. Hoewel het nog even duurt eer dat praktische resultaten zal opleveren in de vorm van commerciële CPU's is het meer dan duidelijk dat CPU's een inhaalbeweging maken qua perf/watt en perf/area en GPU's het daar juist lastig mee krijgen
We weten niet of de term 'CPU' van toepassing is voor deze processors.
Het is nog niet duidelijk wat Intel hiermee wil. Er gaan geruchten dat Intel er een grafische processor van wil maken met x86-achtige instructieset. Andere geruchten zeggen weer dat het een netwerkprocessor zou worden voor high-performance corporate switches/routers/firewalls etc.
Dat valt dus niet in de categorie CPU, maar gewoon een dedicated processor net als een GPU of PPU dat is.
Gezien de bijzonder slechte bruikbaarheid/efficientie van de huidige quadcore-processors is het me absoluut niet duidelijk wat ik met 80 cores zou willen binnen nu en een paar jaar.
TFLOPS en zo, allemaal indrukwekkend, maar een CPU moet gewone PC-software draaien, en daar zit hem het probleem.
Natuurlijk kan Intel makkelijk een systeem bedenken met 80 cores, maar dat wil niet zeggen dat dat in de praktijk ook veel sneller is. Het verschil met de GPUs, waar ik dus op doelde, is dat een 8800 ook daadwerkelijk een flinke verbetering is tov een 7800. Sterker nog, hij is ook sneller dan twee 7800s in SLI. En dat in vrijwel alle applicaties.
Dat is het verschil met een CPU. Parallelisatie werkt in sommige applicaties wel goed, maar in de meeste niet. Hogere kloksnelheid/IPC werkt echter wel altijd.
Merk ik niks van. Een 16-bit frame buffer of depth buffer is trager dan 32-bit omdat het extra instructies vergt voor de 'compressie'. Ik zit dus nog steeds gelimiteerd door de rekenkracht.
Ik heb het over schalen van dezelfde code op snellere hardware. Neem maar bv HalfLife 1, wat nog in software 3d te spelen is. Dat is op een CPU van een paar jaar geleden niet veel trager dan op een moderne CPU. Het verschil tussen een high-end Pentium D en een Core2 Duo is zeer klein.
RAM wel ja. Maar de cache schaalt zeer goed mee. Met enkele megabytes L2 kan je héél wat data verwerken voor je terug naar RAM moet.
Behalve dan dat alleen de Core2 Duo de L2-cache geshared heeft. De cores kunnen bij het sharen van data dus niet de snellere L1 gebruiken. Je kunt wel veel data verwerken, maar je kunt het niet zo heel snel verwerken.
Andere processors zijn nog slechter, want die hebben geen shared-cache en moeten via een trage bus de caches synchroon houden. Een PPU is hier vele malen sneller in.
En dat zal altijd zo blijven. Wanneer AGEIA het kapitaal bijeen heeft voor de productie van een 65 nm chip zit Intel aan 32 nm en 8 cores. Jammer voor hen maar het is nu eenmaal de werkelijkheid.
Dat geeft niet. nVidia en ATi lopen ook achter op Intel qua productie.
Ook Creative bv loopt aardig achter qua productietechniek.
Maar ze hebben weinig te vrezen van software-oplossingen, want die kunnen bij lange na niet tippen aan de prestaties van de hardware.
Een game-developer kan dus maar beter z'n physics op de CPU afstemmen in plaats van te wachten op een doorbraak van PPU's die er nooit komt.
Behalve dat ik een game-developer ben, en jij niet, en ik de doorbraak van PPU's juist actief push. Niet zoveel extra moeite op zich, hoor. Dus geen man overboord als het verspilde moeite blijkt.
Hoe dan wel? De klokfrequentie schaalt maar zeer traag en de complexiteit neemt kwadratisch toe met de IPC (versus lineair wanneer men multi-core gaat).
Lees m'n post nog eens door, ik had het al besproken, en heb daar niks aan toe te voegen.
s je compiler multi-threaded? Compileren is vrij goed te parallelliseren (bestand per bestand of functie per functie). Zal niet te lang duren eer dat sneller is dan op een single-core met gelijk aantal transistors.
Veel code is afhankelijk van elkaar.
Ik kan pas de subclasses compileren als de base-classes gecompileerd zijn. Zo moet ik ook eerst de basis-libraries compileren voordat ik de code kan compileren die er gebruik van maakt.
Compileren is dus redelijk slecht te paralleliseren. Zeker via een geautomatiseerd proces, want ik ken nog geen compiler die zelf uit kan zoeken in welke volgorde hij een willekeurig project moet compileren. Ik moet dat nog altijd zelf aangeven. Aangeven welke bestanden tegelijk gecompileerd kunnen worden is nog een stap verder, dan wordt het een hierarchisch verhaal.
Alleen totaal verschillende projecten zouden makkelijk parallel te compileren zijn. Maar ik werk doorgaans maar aan 1 project tegelijk, dus is dat geen interessante oplossing.
Tja, ik zie maar al te vaak op forums mensen klagen over hoe traag hun skinning of shadow volumes zijn op de CPU, en dan schrijven ze liever een shader dan SSE code. "Want assembler is moeilijk en gevaarlijk". Trouwens, Doom 3 gebruikt CPU skinning en shadow volumes (mét SSE).
Doom3 is dan ook mijn pet-peeve. Bijzonder zwaar voor de CPU, en zeer lage framerates. 3DMark03 heeft een vergelijkbare scene qua complexiteit (zelfs nog hogere polycount, en meer shadowcasters, Doom3 heeft bv geen self-shadows op skinned characters, 3DMark03 heeft dat wel), maar dan met GPU-based skinning en shadowvolumes, en haalt ook veel hogere framerates.
Programmeren in assembly en SSE is geen probleem. Maar na onderzoek en wat discussies met Mikko Kallinen kwamen we tot de conclusie dat GPUs gewoon sneller waren op dat moment, en alleen nog maar verder uitlopen. Destijds kwamen we met onze test-cases tot de conclusie dat een XP1800+ ongeveer even snel was als een Radeon 9600Pro (mid-end gaming systeem), en een Pentium 4 2.4 GHz was ruim twee keer zo traag als een 6800Ultra (high-end systeem). We hadden toen al ingeschat dat dit alleen nog maar verder zou uitlopen, en tot dusverre blijkt dat waar te zijn. Het is overigens niet meer relevant, want intussen hebben shadowmaps de shadowvolumes al opgevolgd.
Als je het wél multi-threaded doet is er rekenkracht te over (ettelijke miljoenen vertices/polygonen) en belast je de GPU niet met een bijkomende taak.
Het punt is dat het geen 'bijkomende taak' is. Het ging gewoon 'on the fly'. De shader werd alleen wat langer.
Als je het op de CPU doet, moet je weer met dynamische vertexbuffers gaan werken, die sowieso al veel minder efficient zijn, en kan de GPU niets renderen totdat je de vertexbuffer geupload hebt.
Het is zeer lastig om de CPU en GPU efficient parallel te laten lopen met een dergelijke constructie. Er tellen dus veel meer zaken mee dan alleen hoe snel een CPU in theorie de berekeningen kan uitvoeren.
Een Core 2 Duo heeft al gauw half zoveel GFLOPS als een GeForce 8600 GTS. "Bijzonder zwak" zou ik dit dus niet noemen, en het zou dus dom zijn om dat relatief klein aantal vertices/polygonen niet op de CPU te laten verwerken en de GPU zich te laten concentreren op de pixels.
Dit getuigt dus van een compleet gebrek aan inzicht en ervaring, zie mijn alinea hierboven.
'k Heb hier trouwens een laptop met Radeon X1300 waar software vertex processing meer dan dubbel zo snel is dan hardware.
Omdat het geen hardware is? Veel laptop-GPUs hebben gewoon software vertexprocessors, maar wegens software-compatibiliteit rapporteert de driver wel hardware-support. Het gaat dan wel via recompilatie van GPU-shaders, wat minder efficient is dan een geoptimaliseerde CPU-routine, zoals bv in de implementatie van Doom3.
Dat de physics nog net iets sneller hadden gekunnen op de GeForce 8800 interesseert 95% van de gamers niks. Een developer moet vooral de juiste keuzes maken zodat het ook goed loopt op die 95% andere systemen.
Nogmaals, developers kiezen niet, die delen.
Er worden gewoon meerdere implementaties gemaakt van verschillende delen (renderpad met/zonder schaduwen, HDR, etc... SSE of niet..), en bepaalde content wordt in verschillende detailniveaus meegeleverd (shaders, textures, meshes).
Waarom is die high-end interessant? Omdat spellen en engines op die manier langer mee kunnen gaan, en beter door kunnen schalen.
Je hele redenering is dus gebaseerd op foute aannamen.
[Reactie gewijzigd door Verwijderd op 25 juli 2024 00:28]