Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

"Kleiner" Thread-Benchmark?
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 05.12.2007, 16:18    Titel: Antworten mit Zitat

Interessant wären auch die ergebnisse bei eine Quadcore CPU!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 05.12.2007, 21:58    Titel: Re: "Kleiner" Thread-Benchmark? Antworten mit Zitat

Bimi hat Folgendes geschrieben:
Das bedeutet konkret:
Keine gemeinsamen Datenbereiche auf die häufig zugegriffen wird.
Soviel wie möglich mit dem Stack arbeiten - die sind stets getrennt

Parallelprogrammierung ist eine sehr anspruchsvolle Disziplin in der Informatik, war bei mir seinerzeit ein separates Fach an der Uni. Mit Deiner Erkenntnis hast Du bereits rein praktisch diverse fundamentale Grundsätze selber erlernt, z.B. derjenige, dass man Performanceverluste durch Eliminierung von kritischen Abschnitten vermeidet. Die hohe Kunst beim Software-Design paralleler Systeme ist die Aufteilung der Aufgabe in möglichst voneinander unabhängigen Teilaufgaben.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Bimi



Anmeldungsdatum: 03.12.2007
Beiträge: 66

BeitragVerfasst am: 06.12.2007, 10:30    Titel: Re: "Kleiner" Thread-Benchmark? Antworten mit Zitat

dreael hat Folgendes geschrieben:
Bimi hat Folgendes geschrieben:
Das bedeutet konkret:
Keine gemeinsamen Datenbereiche auf die häufig zugegriffen wird.
Soviel wie möglich mit dem Stack arbeiten - die sind stets getrennt

Parallelprogrammierung ist eine sehr anspruchsvolle Disziplin in der Informatik, war bei mir seinerzeit ein separates Fach an der Uni. Mit Deiner Erkenntnis hast Du bereits rein praktisch diverse fundamentale Grundsätze selber erlernt, z.B. derjenige, dass man Performanceverluste durch Eliminierung von kritischen Abschnitten vermeidet. Die hohe Kunst beim Software-Design paralleler Systeme ist die Aufteilung der Aufgabe in möglichst voneinander unabhängigen Teilaufgaben.


Selber Erlernt ist gut...

Ich betreibe diese "Disziplin" seit knapp 25 Jahren in der Praxis, zu einer Zeit als Ottonormalanwender sich noch mit seiner DOSe und GWBasic rumäergerte...

Im Gegensatz zu den meisten, die Parallelprogrammierung an der Uni gelernt haben, gehöre ich noch zu der Riege die es damals nicht an der Uni trainiert haben, sondern in der Praxis auch angewendet haben. Da relativieren sich so einige Theorien der Profs....

Ein Cray II verfügte damals über Technologien bei denen Intel erst beim Corr 2 Duo daran gedacht hat, das dies die Performance steigern könnte...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 10.12.2007, 14:20    Titel: Antworten mit Zitat

Warum kann ich in diesem kleinen Thread-Benchmark eigentlich nicht mehr als ca 64 Threads gleichzeitig starten??
Gibts da eine begrenzung seitens der betriebssysteme oder FBasic?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 10.12.2007, 14:21    Titel: Antworten mit Zitat

Code:

Dim Shared threadsync As Any Ptr
dim shared threadhandles(1 to 300) as any ptr

Type rng
  ystart As Integer
  ymax As Integer
End Type

Screen 19, 8

Sub Main (ByRef yrng As rng)
  Dim As Integer X, Y, Count
  Dim As Single Size, R, I, RTmp, Rs, Iss
  Dim As Byte Ptr img = ImageCreate(800,1) ' eine Zeile
  For Y = yrng.ystart To yrng.ymax
    For X = 32 To 832-1'Trick statt img[X+32]
      Count   = 600
      Size    = 0
      R       = 0
      I       = 0
      While Size < 4 And Count > 0
        RTmp    = R
        Rs      = R * R
        Iss     = I * I
        R       = Rs - Iss + ((X - 650) / 320)
        I       = (2 * RTmp * I) + ((Y - 300) / 320)
        Size    = Rs + Iss
        Count   -=  1
      Wend
      img[X]= (count Mod 256)
    Next
    MutexLock threadsync
    Put (0,Y), img, pset
    MutexUnlock threadsync
    'sleep 1
  Next
  ImageDestroy img
End Sub

Dim As Double t1, t2, its(1 to 64)
dim ti as integer
dim tis as integer
Dim ranges(1 to 64) as rng
threadsync = MutexCreate


    t1 = Timer
    'Folgende Variable verursacht einen "Ausnahmefehler" unter Windows wenn ihr wert ca 64 überschreitet:
    ti = 64
    for tis = 1 to ti
        ranges(tis).ystart = (tis -1) * (600 / ti)
        ranges(tis).ymax   = (tis) * (600 / ti) -1
        threadhandles(tis) = ThreadCreate(Cast(Any Ptr,@Main), @ranges(tis))
        'print tis
    next
   
    for tis = 1 to ti
        ThreadWait(threadhandles(tis))
    next
   
    t2 = Timer
    its(ti) = (800* 600) / (t2 - t1)

cls

MutexDestroy(threadsync)

for ti = 1 to 64
    print right(str(100+ti),2) & " Threads :" &its(ti) & " = " & (Int((its(ti)/its(1))*100) /100) & "fach"
next

Sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 12.12.2007, 16:48    Titel: Antworten mit Zitat

@Volta: Hast du Zufällig eine Intel-CPU mit Hyperthreading? .. hab nämlich auf einem PC mit hyperthreading auch eine beschleunigung von ca 1,09.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz