Du bist nicht angemeldet.

Werbeanzeige

Anonymous

unregistriert

11

28.03.2004, 20:16

http://www.microsoft.com/germany/ms/msdnbiblio/show_all.asp?siteid=600390 :ohoh:
Wenn man der Seite glauben kann, könnte man ja theoretisch das ganze einmal mit der /arch:sse2 und einmal ohne kompilieren. Dann müsste man nur ne exe schreiben die vorher rausbekommt ob sse2 vorhanden ist. Was meint ihr dazu?

12

28.03.2004, 23:50

Ganz übel. Wie gesagt wenn man sich auf sse2 beschränkt, beschränkt man sich auch auf die neueren Intel Prozessoren. Denn AMD unterstützt sse2 nur bei den 64bittern. Sollte man also drauf verzichten.

Bei sse sieht es dagegen schon viel besser aus. Das kann man nehmen da alle gängigen CPU diese Technik unterstützen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

13

29.03.2004, 14:01

neee ich meinte das man es einmal für die alten macht und einmal für die neuen und dann einfach die exe läd die unterstützt wird.(alle mit alten müssen halt mit dem pixelview vorliebe nehmen^^)

Anonymous

unregistriert

14

29.03.2004, 14:46

Man könnte das ganze auch über Funktionspointer machen. Und je nach dem auf die Funktion zeigen die von der CPU unterstützt wird

15

29.03.2004, 15:58

Zitat von »"_öp"«

Man könnte das ganze auch über Funktionspointer machen. Und je nach dem auf die Funktion zeigen die von der CPU unterstützt wird


wie willst du das machen?
wenn du /arch:sse als Coompileroption angibst, wird die exe nur auf Plattformen ausgeführt die SSE untersützen ;)

man kann zwei verschiedene DLLs machen. Die eine mit SSE, die andere ohne SSE. Und wenn die exe gestaret wird, überprüft sie, ob SSE zur Verfügung steht und ladet dann, je nachdem wie der Test ausgefallen ist, die eine DLL oder die andere.
Do, ut des!
Ceterum censeo, carthaginem delendam esse

16

29.03.2004, 18:47

Laut der Seite sieht es bei meinem Compiler eh übel aus. Da ich nur .NET habe und nicht 2002 oder 2003. Gibt es da ein paar Pathes?


Es wird sicherlich etwas bringen. Müste man mal probieren. Allerdings denke ich das man mit der /G7 Einstellung mehr Performance im "Allgemeinen" Code herrausholt als mit /arch:sse(2). SSE(2) ist besonders gut wenn es um Floatingpoint Rechnungen geht, besonders in der 4D Vektor und 4x4 Matrix Rechnung. Da in ein Register gleich 4 Floatingpoint werte passen.

Um wircklich alle möglichen Vorteile der /arch:sse(2) Einstellung nutzen zu können, müsste man den gesamten Code eine Projektes in eine DLL verpacken. So das die Exe eigentlich nur noch Testet ob SSE(2) Möglich ist oder nicht und dann die DLL's lädt.

Oder man beschränkt sich auf SSE. Dann läuft ein Programm auf allen P3/4 CPU's und allen AMD XP und Athlons.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

17

29.03.2004, 18:59

da habe ich ja was angerichtet ;D . anscheinde habe ich da ein paar Leute aufmerksam gemacht 8)

Anonymous

unregistriert

18

29.03.2004, 22:00

Zitat von »"Hauptman"«

Zitat von »"_öp"«

Man könnte das ganze auch über Funktionspointer machen. Und je nach dem auf die Funktion zeigen die von der CPU unterstützt wird


wie willst du das machen?
wenn du /arch:sse als Coompileroption angibst, wird die exe nur auf Plattformen ausgeführt die SSE untersützen ;)

man kann zwei verschiedene DLLs machen. Die eine mit SSE, die andere ohne SSE. Und wenn die exe gestaret wird, überprüft sie, ob SSE zur Verfügung steht und ladet dann, je nachdem wie der Test ausgefallen ist, die eine DLL oder die andere.


evt. so:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int (*function)(int, int) = functionInit; 
 
int functionInit(int a, int b) 
{ 
  switch(CPUType) 
  { 
  case P3: 
    function=functionP3; 
    break; 
  case P4: 
    function=functionP4; 
  } 
  return function(a, b); 
}

Werbeanzeige