3DNow!-Tutorial



  • Hi, ich wollte auch in diesem Forum auf mein neues 3DNow!-Tutorial hinweisen! Hier sind ja sicher einige Leute, die sich damit auskennen, und mir vielleicht noch ein paar Verbesserungsvorschläge machen können!
    Ihr findet es auf meiner Seite unter http://www.scherfgen-software.de unter der Kategorie "Tutorials", dann rechts "3DNow!-Technologie".



  • vielleicht wäre auch ein beispiel nett wie man 2vectoren gleichzeitig transformiert nett, weil für parallesierung ist das ja gedacht.. aber sonst schaut es gut aus

    rapso->greets();



  • Es ist ja schon parallelisiert! 😉
    Einen 4D-Vektor zu transformieren kostet normalerweise 16 Multiplikationen und 12 Additionen. Mit meinem Code braucht man nur 8 Multiplikationen und 6 Additionen - die Parallelisierung findet direkt im Vektor statt. Anders wäre es auch gar nicht möglich, glaube ich, da die beiden Werte ja im Speicher immer direkt hintereinander liegen müssen.

    [ Dieser Beitrag wurde am 08.04.2003 um 10:42 Uhr von TomasRiker editiert. ]



  • tja das ist ja auch gleich das problem, die multiplikationen und additionen sind halbiert, aber der overhead der normalerweise dazukommt ist dann höcher, naja war ja nur ein tip und keine negative kritik gewesen.

    sowas kann man gut anwenden wenn man nur geometry transformiert für kollisionserkennung oder occlusioncullung denn da stehen die daten direkt hintereinander.

    außerdem könntest du noch beschreiben, was die größte performance gibt... prefetch 😉

    rapso->greets();



  • Stimmt! prefetch hab ich doch glatt vergessen, das bringt nochmal 5-10%! Danke! 🙂 Ich baue es gleich ein,...
    Ja, richtig, man braucht das eigentlich nur für Kollisionserkennung, also für solche Dinge, wo die Hardware nicht zum Transformieren benutzt werden kann.
    Insgesamt hab ich jetzt fast 50% der Rechenzeit eingespart.



  • also in der praxis hat mir das optimieren auf 3dnow und ISSE ohne prefetch nix gebracht, im profiler ist immer zu sehen dass die cpu auf das ram wartet. mit prefetch hab ich bei manchen mmx operationen ~30% performance gesparrt.. der einzige für mich nützliche befehl 🙂

    allerdings hab ich gelesen dass man durch prefetch die automatischen prefetch einheiten vom P4 und AthlonXP zerschiessen kann und es deswegen eventuell langsammer wird ... wie gesagt, nur gelesen.

    rapso->greets();


Anmelden zum Antworten