float oder double für OpenGL?



  • Danke für die ausführliche Erklärung und den Link.

    Unter OSX hatte ich aber beim Testen die aktuelle Oracle Java8 JDK installiert. Es war exakt dasselbe JDK, von der Versionsnummer, wie unter Windows. Ist aber auch egal. Mit dem Qt-Creator, auf beiden Plattformen, komme ich bestens klar und die Ergebnisse sind wesentlich identischer als mit Java. Wenn dann noch Clang unter Windows gleich mit dem Qt-Creator mitgeliefert werden würde, wie unter OSX, dann wäre es perfekt.



  • Auf aktuellen CPUs ist double marginal schneller als float.

    Auf GPUs sind float berechnungen meist um einige faktoren schneller. Da Spiele so gut wie nie double verwenden.
    Faktoren gehen grob von 16/1 bis 4/1 für float/double performance.
    Wobei günstige GPUs schlechter und top Modele bessere faktoren haben.

    Double ist meist nur für Cuda oder OpenCL compute shader interessant. Und Modele mit double leistung werden entsprechend nicht für den Spielermarkt sondern für forschung/industrie bepreist.


  • Mod

    Osbios schrieb:

    Auf aktuellen CPUs ist double marginal schneller als float.

    Das solltest du noch einmal checken.



  • Osbios schrieb:

    Auf aktuellen CPUs ist double marginal schneller als float.

    nope


  • Mod

    Osbios schrieb:

    Auf aktuellen CPUs ist double marginal schneller als float.

    👎

    du bist raus </DieterModus>

    😉



  • double schneller als float kann eigentlich nur sein wenn man mit double nen Haufen Denormals vermeidet die man mit float hätte.

    Anders kann zumindest ich es mir nicht vorstellen.

    ps: Falls mein "Wissen" veraltet ist, und Denormals keine Penalty mehr bringen, lasst es mich bitte wissen 🙂



  • hustbaer schrieb:

    ps: Falls mein "Wissen" veraltet ist, und Denormals keine Penalty mehr bringen, lasst es mich bitte wissen 🙂

    Seit Sandy Bridge können Denormals afaik in den meisten Fällen ohne Performanceeinbruch bearbeitet werden. Auf älteren Architekturen kann man Flags setzen, um Denormals zu ignorieren (auf Null zu setzen), ansonsten können sie dort massiv zu Buche schlagen.



  • dot schrieb:

    Seit Sandy Bridge können Denormals afaik in den meisten Fällen ohne Performanceeinbruch bearbeitet werden.

    🕶
    Muss ich mal googeln wenn ich Zeit habe...

    dot schrieb:

    Auf älteren Architekturen kann man Flags setzen, um Denormals zu ignorieren (auf Null zu setzen), ansonsten können sie dort massiv zu Buche schlagen.

    Ja, das wusste ich beides. Die CPU wirft da (ohne flush to zero) bloss nen Trap/Interrupt, der Rest geht dann über Software-Emulation wenn ich mich richtig erinnere.



  • hustbaer schrieb:

    dot schrieb:

    Auf älteren Architekturen kann man Flags setzen, um Denormals zu ignorieren (auf Null zu setzen), ansonsten können sie dort massiv zu Buche schlagen.

    Ja, das wusste ich beides. Die CPU wirft da (ohne flush to zero) bloss nen Trap/Interrupt, der Rest geht dann über Software-Emulation wenn ich mich richtig erinnere.

    Afaik werden die Operation lediglich nicht direkt nativ von den Rechenwerken unterstützt und dann durch einen Haufen µops umgesetzt, passiert aber dennoch alles direkt in der CPU. Mit Traps und Softwareemulation wäre der Penalty vermutlich noch mindestens eine Größenordnung schlimmer...


  • Mod

    dot schrieb:

    Seit Sandy Bridge können Denormals afaik in den meisten Fällen ohne Performanceeinbruch bearbeitet werden.

    ich glaube es sind nur ein paar faelle die ohne einbruch laufen z.B. float add auf SSE. float mul auf SSE sollte schonwieder langsam sein. auf x87/fpu sollte das meiste weiterhin langsam sein.


Anmelden zum Antworten