AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Simd/MMX, wie funktioniert das?

Ein Thema von Memnarch · begonnen am 11. Mär 2011 · letzter Beitrag vom 16. Mär 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#11

AW: Simd/MMX, wie funktioniert das?

  Alt 15. Mär 2011, 01:14
super danke
Werde ich mal nen block drauf werfen.

Kannst du grob sagen ob und was für einen performancevorteil dir die MMX variante gegebene hat? würde mich mal interressieren^^
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Simd/MMX, wie funktioniert das?

  Alt 15. Mär 2011, 12:06
Mit MMX gings ca. 2-3 mal schneller.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#13

AW: Simd/MMX, wie funktioniert das?

  Alt 15. Mär 2011, 22:28
UI, das is natürlich was.
Noch nicht geschafft reinzuarbeiten, aber wenn ich morgen zeit hab mach ich mal nen paar stichproben^^.

PS: Für MMX wird die FPU in nen anderen modus geswitched? Gehen wir mal davon aus mein ASM liegt in einer for schleife(außer dem ASM block ist da nichts drin) switched der bei jedem For durchlauf in den Modus rein/raus?(was dann ja wieder zu ner bremse führen würde)


MFG
Memnarch
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#14

AW: Simd/MMX, wie funktioniert das?

  Alt 15. Mär 2011, 23:17
Jain. Die erste MMX Anweisung sollte die FPU umschalten, und erst mit manuellem "EMMS" sollte die FPU wieder "normal" arbeiten. Alles, was sonst nur mit der gewöhnlichen ALU zu tun hat, kann problemlos nebenbei auch gemacht werden. Interessant.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#15

AW: Simd/MMX, wie funktioniert das?

  Alt 16. Mär 2011, 06:55
Vielleicht ist es für Dich sinnvoll Dir mal den folgenden Link anzuschaun:

Optimierte Graphik-Bibliothek für Delphi
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#16

AW: Simd/MMX, wie funktioniert das?

  Alt 16. Mär 2011, 09:32
@Samso: danke für den Link, aber in meinem Beispiel bringt es wenig . Obiges farbbeispiel war nur ein Beispiel. Ich schreibe einen Softwarerasterizer und die Mathematik dahinter muss ich optimieren. Da hilft Graphics32 leider wenig.(Außerdem schreib ich in die Bitmaps indem ich direkt die gegebenen positionen im speicher manipuliere, also ohne irgendwelche funktionen. Geht schön schnell^^).

@Medium: Danke, werde ich mir mal durchlesen.

MFG
Memnarch
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#17

AW: Simd/MMX, wie funktioniert das?

  Alt 16. Mär 2011, 11:02
so, ich schonwieder^^.

Versuche gerade per MMX mehrere integer zu multiplizieren und die einzelnen resultate dann zu addieren. Hier habe ich ein paar kleine probleme^^"

folgendes schema:

per MOVD werden die register wiefolgt bestückt
(Formel wäre x = VARA*FactorA + VarB*FactorB + VarC*FactorC)
mm1, VARA
mm2, FactorA
mm3, VARB
mm4, FactorB
mm5, VARC
mm6, FactorC

und jetzt gehts los, es gibt kein PMULLD, sondern nur PMULLW.
Word hat aber soweit ich weiß 2 Bytes, integer aber 4 Bytes. Die register würden dann in 2Byte blöcken multipliziert(schätze ich könnte später immer 2 Integer in einen 64bit register kloppen, aber ich will es erstmal einfach haben).

danach würde ich mm1,mm3 und mm5 addieren und per MOVD mm1 in meine zielvariable schieben.

Dementsprechend ist der enstehende endwert eher suboptimal^^"

Dazu konnte ich noch nichts genaueres finden >.<.

EDIT: autsch, natürlich sollte ich der ordnung halber bei mm0 anfangen^^"
EDIT2: Bei VAR bzw Faktor handelt es sich um Integer variablen
EDIT3: OHa, oben bei der Formel muss X am ende noch durch einen 4ten Faktor geteilt werden..teilen geht per mmx wohl nicht und teilen ist ja xmal langsamer als alles zusammen o.o

MFG
Memnarch

Geändert von Memnarch (16. Mär 2011 um 11:23 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz