Du bist nicht angemeldet.

Werbeanzeige

Gotbread

Alter Hase

Beiträge: 421

Wohnort: Kempen

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

31

17.09.2008, 22:56

ok ihr wollt ergebnisse sehen :)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
image_size  num_rectangles  OK?   Zeit (ms)     Referenzzeit (ms)  Speed-up  
-----------------------------------------------------------------------------
128         1000            Ja    0.208117      0.448253           2.15385   
128         10000           Ja    1.55521       2.6738             1.71925   
128         100000          Ja    16.096        28.0278            1.74129   
128         1000000         Ja    128.5         225.333            1.75357   
256         1000            Ja    0.896057      4.58352            5.11521   
256         10000           Ja    5.95833       28.8429            4.84076   
256         100000          Ja    65.4839       302.857            4.62491   
256         1000000         Ja    598           2856               4.77592   
512         1000            Ja    4.49888       56.25              12.5031   
512         10000           Ja    42.8298       342                7.9851    
512         100000          Ja    440           3123               7.09773   
512         1000000         Ja    6145          54315              8.83889   
1024        1000            Ja    21.8696       734                33.5626   
1024        10000           Nein  103.15        3079               29.8497   
1024        100000          Ja    1303          40632              31.1834   
1024        1000000         Ja    22847         688223             30.1231


warum der algo an einer stelle versagt, weiß ich auchnicht...

@David
hui ist das schnell :shock:

und wenn man mit Intrinsics optimieren will, wie macht man das?
in der referenz zu meinem compiler finde ich nur funktionen
wie

C-/C++-Quelltext

1
2
3
4
void __addfsbyte( 
   unsigned long Offset, 
   unsigned char Data 
);


wie soll man den da mit registern arbeiten?
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

David Scherfgen

Administrator

  • »David Scherfgen« ist der Autor dieses Themas

Beiträge: 10 320

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

32

17.09.2008, 23:29

Ich meinte die SSE-Intrinsics.
Ein paar Beispiele: _mm_set1_ps, _mm_stream_ps, _mm_add_ps, ...

33

18.09.2008, 07:57

mmmh mach das: SSE-Intrinsics so viel performence aus? oder ist das dein algo david?
NO RISK NO FUN

David Scherfgen

Administrator

  • »David Scherfgen« ist der Autor dieses Themas

Beiträge: 10 320

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

34

18.09.2008, 08:21

Ich habe keine SSE-Intrinsics benutzt, bisher.
Mein neuer Algorithmus ist übrigens noch ein bisschen schneller als der Alte :)

35

18.09.2008, 13:36

ich hasse dich =)
NO RISK NO FUN

David Scherfgen

Administrator

  • »David Scherfgen« ist der Autor dieses Themas

Beiträge: 10 320

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

36

18.09.2008, 14:09

Ich kann doch eh nicht gewinnen.

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

37

18.09.2008, 14:15

@David: Du kannst mit deinen 10min beim letzten Fall fuer die Referenzloesung noch recht zufrieden sein - mein Rechner hat irgendwann die Schnauze voll und bricht das ganze Programm nach ca. 25min einfach ab. :?
Und das, obwohl er beim ersten Fall sogar ein wenig schneller ist...

Crush

Alter Hase

Beiträge: 384

Wohnort: Stuttgart

Beruf: Softwareentwickler

  • Private Nachricht senden

38

18.09.2008, 14:43

Ist dann nun der Code irgendwie Fehlerhaft, nutzt spezielle Compilerfähigkeiten aus, die andere nicht haben, oder wie ist das?
Würde es evtl. etwas bringen, die Konfigurationen von allen Teilnehmern mit deren Problemen zu posten?

Ich habe ein Laptop mit Intel Core 2 Duo T7700 2.4Ghz mit 2 Gb RAM und 32Bit WinVista und verwendet zum Compilen MSVS 2005 prof. Keine Probleme mit dem Source.

@David: Soll ich Dir mal eine Exe zum Test zuschicken, wegen der Referenzzeit?

Gaspode

1x Contest-Sieger

  • Private Nachricht senden

39

18.09.2008, 19:40

Powerpaule: Bei mir hat sich das Programm auch mal einfach so beendet, mit Visual Studio hab ich dann rausbekommen, dass es ein Stack overflow war. Kompiliere das sonst immer mit GCC, da das ja auch damit bewertet wird.
Den Overflow war ich aber in meinem Algorithmus selber schuld ;)


Hier mal meine aktuelle Messung:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
image_size  num_rectangles  OK?   Zeit (ms)     Referenzzeit (ms)  Speed-up
-----------------------------------------------------------------------------
128         1000            Ja    0.359648      1.3211             3.67332
128         10000           Ja    1.72265       7.55056            4.3831
128         100000          Ja    2.886         76.3704            26.4623
128         1000000         Ja    1.65837       593.75             358.031
256         1000            Ja    0.490196      3.73832            7.62617
256         10000           Ja    0.304971      22.8977            75.0816
256         100000          Ja    0.627646      261.625            416.835
256         1000000         Ja    0.270088      2219               8215.85
512         1000            Ja    1.43519       14.5985            10.1719
512         10000           Ja    1.15407       94.4545            81.8449
512         100000          Ja    1.23317       828.333            671.711
512         1000000         Ja    1.22108       16453              13474.2
1024        1000            Ja    3.41297       459.4              134.604
1024        10000           Ja    5.40214       1961               363.004
1024        100000          Ja    5.49319       24734              4502.67
1024        1000000         Ja    4.60829       429735             93252.5

Ist nur der Algorithmus für eine grosse Anzahl von Rechtecken.

Crush: Ich denke mal, die extrem geringe Laufzeit bei grosser image_size bei Dir liegt daran, dass du einen wesentlich grösseren L2-Cache hast.
Bis 512 ist die Referenz bei Dir um einen Faktor von ungefähr 2-3 schneller, bei 1024 ist es dann plötzlich 10 mal so schnell.
Ich hab nen Intel Pentium D820, der hat an L1 und L2 die Hälfte von deinem Prozessor.

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

40

18.09.2008, 21:11

Na ja, einmal war es auch so, dass er das Programm zwar nicht beendet hat, aber er hat es auch nicht weiterlaufen lassen (CPU-Auslastung auf 0), aber auch nix angezeigt.

Na gut, dann komme ich auch mal mit was, ist allerdings bisher nur die erste Idee für nen Algorithmus und auch nur für viele Rechtecke sinnvoll^^
Den leztzten Testwert konnte ich jetzt natürlich nicht mit reinnehmen, aber er wird ziemlich hoch liegen...

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
image_size  num_rectangles  OK?   Zeit (ms)     Referenzzeit (ms)  Speed-up
-----------------------------------------------------------------------------
128         1000            Ja    12.7389       0.317511           0.0249246
128         10000           Ja    22.7273       2.03874            0.0897044
128         100000          Ja    34.6949       20.16              0.581065
128         1000000         Ja    18.018        168                9.324
256         1000            Ja    35.9821       5.78035            0.160645
256         10000           Ja    44.7778       34.1695            0.76309
256         100000          Ja    57.6          380.167            6.60012
256         1000000         Ja    21.5054       3297               153.31
512         1000            Ja    406.2         144                0.354505
512         10000           Ja    204.6         1070.5             5.23216
512         100000          Ja    152.929       8500               55.5815
512         1000000         Ja    136.467       148969             1091.61
1024        1000            Ja    708.333       1390.5             1.96306
1024        10000           Ja    2609          6047               2.31775
1024        100000          Ja    2719          77312              28.434
1024        1000000         Ja    1531


Achja, der Prozessor ist noch ein XP 2700+^^

Werbeanzeige