OpenCL (CPU + GPU) Benchmark

Status
Für weitere Antworten geschlossen.
ich erwarte ja auch nicht etwas zu finden ;) Mir wäre auch keine Möglichkeit bekannt wie man die DP auf hardwareebene reduzieren könnte, aber da man den 100% genauen Aufbau des Chips nicht kennt, könnte mit einer sehr geringen Wahrscheinlichkeit ja eventuell doch irgendwo ne Leiterbahn sein, die man nur trennen muss, damit DP nicht mehr funktioniert.

Und ja, die Radeon hat auch ne Fehlerkorrektur im Cache und den Registern, nur heist das eben anders, hat aber den gleichen Zweck, Bitfehler zu unterbinden. Was den Radeon halt komplett fehlt ist die Möglichkeit ECC-RAM zu verwenden, das geht wohl nur bei nVidia, aber eventuell kommt da mit SI oder NI endlich die Unterstützung
 
@Skysnake
hast du eventuell irgendwo details über die Fehlerkorrektur im cache der radeon, das interessiert mich jetzt...
 
boah das hab ich irgendwo mal gelesen :D ich schau mal ob ich bei den typischen verdächtigen fündig werd.

EDIT:

Na da haben wirs doch schon gefunden ;) War auch recht nah dran mit dem sowas ähnliches wie ECC :D heist nämlich EDC, kann also Fehler wie ECC auch finden, aber nicht korregieren. Aber allein zu wissen das nen Fehler da ist, ist schon sehr sehr sehr viel wert.

http://de.wikipedia.org/wiki/Radeon_HD_5000_Serie#Technik
 
Danke,

in wieweit das jetzt die caches betrifft oder den ram geht aus dem artikel aber nicht hervor...
der speichercontroller kommt nämlich vor den caches:
iXBT Labs - RADEON R(V)8XX Reference - Page 2: RV870 architecture

aber edc ist zwar nicht ganz so toll wie ecc, aber immerhin muss man dann nur den fehlerhaften teil und nicht alles doppelt berechnen, um das ergebnis zu sichern.
ecc kann 1 bit fehler korrigieren und 2bit fehler erkennen, oder?
 
@thysol:
Bist du denn noch dabei nen Multicore-Benchmark zu erstellen?
Würde mich freun:daumen:

Naja was für Projekte nimmste überhaupt, denn jetzt so alles in Angriff?
 
hab grad gemerkt das in der liste bei meiner 5850 kein OC hinter steht und bei meinem RAM 1066 obwohl er beim übertakten auf 1200 war^^.
 
Die Highscore Liste wurde Heute etwas verspaetet geupdatet.;)

so jetzt steht es 3:0 für das neue Design Teufel
hätte allerdings noch nen verbesserungsvorschlag (bediene mich einfach mal am obigen Ergebnis :ugly:)

Tight86 | Core i7-920@4,4GHz | GTX285(OC) | DDR3-1600 | 7,3496051 l Screenshot
(davor dann noch die Platzierung ;))

und würde vorschlagen, dass du Benchmark 1.1 aus der Downloadliste streichst ;)

Dass neue Design wird dann in neuen Highscore Listen implementiert wenn neue Benchmark Versionen erscheinen. GPU Benchmark (v1.1) wurde aus der Download Liste gestrichen.;)

Mein RAM läuft übrigens mit DDR3-1600, die 285er GTX könnte ich fast unendlich übertakten und ein Ergebnis bekommen (Kurzzeitbeanspruchung), deshalb sollte der Benchmark min. 100 Sekunden andauern.

Der Benchmark kann aktuell nicht so lange andauern weil Windows nach ca. 10 Sekunden merkt dass die Grafikkarte nicht reagiert und resettet dann den Grafikkarten Treiber. Einen Status Balken oder so kann ich leider nicht im Kernel integrieren. Die einzige Moeglichkeit waere jeder User muesste die Registry veraendern dass Windows erst nach 1000 Sekunden den Grafikkarten Treiber resettet.;)

Btw Thysol ich hab dazu geschrieben das meine 5870 auf 900/1250 läuft, also ne OC ist ;) wäre nett wenn dus bei mir auch hinschreibst.

Erledigt.;)

meine 5850 läuft auf 875/1225 steht auch kein OC hinter^^

Gefixt.;)

also was du auf jeden fall machen kannst ist die zeitmessung soweit zu verbessern, dass du die zeitmessung erst startest, wenn der kernel schon kompiliert ist.

Ab GPU Benchmark v1.3 wird die Zeit erst nach kompilieren des Kernels gemessen. Danke fuer den Tipp.:daumen:

hab grad gemerkt das in der liste bei meiner 5850 kein OC hinter steht und bei meinem RAM 1066 obwohl er beim übertakten auf 1200 war^^.

Gefixt.;)

@thysol:
Bist du denn noch dabei nen Multicore-Benchmark zu erstellen?
Würde mich freun:daumen:

Naja was für Projekte nimmste überhaupt, denn jetzt so alles in Angriff?
Ich habe versucht einen Multi-Core Benchmark in OpenCL zu erstellen, bin aber gescheitert. Wenn ich bei der erstellung der Command Queue dass OpenCL Device auf CPU stelle kommt immer ein Fehler waehrend des kompilieren des Kernels.

Ich habe keine Lust den Multi-Core Benchmark in C# zu schreiben weil ich mich eigentlich mit OpenCL beschaeftigen wollte. Was fuer ein neues OpenCL Projekt ich in Angriff nehme kann ich so Konkret noch nicht sagen. Ich muss naemlich vorerst noch euer Feedback dokumentieren. Ich mache ein OpenCL Projekt naemlich fuer den BT Young Scientist 2011. Danke eurem Feedback weiss ich jetzt Details auf welchen CPUs/GPUs welche Benchmarks gut laufen. Dass muss ich alles dokumentieren.

Daher ein grosses Dankeschoen an euch alle fuer euer Feedback. Ich werde auch in meinem Report-Buch die PCGHX Community erwaehnen.:daumen:

Ich werde jetzt versuchen sinnvollere OpenCL Programme zu schreiben. GPU Benchmark v1.3 ist allerdings auch noch geplant. Dieser soll folgende Verbesserungen mit sich bringen:

1. Die Zeit wird erst abgenommen nachdem der Kernel kompiliert wurde. (Danke an Sheeep fuer den Tipp)

2. Der Berechnungs Algorithm wird komplexer ausfallen. (Danke an Skysnake fuer den Tipp)

Dass "sinnvollere" OpenCL Programm soll dann etwas groesser ausfallen.;)
 
weiss nicht ob es für den benchmark wichtig ist aber beim cpu benchmark wurde das oc hinter der 5850 und die 1200 beim ram noch nicht gefixt^^
 
weiss nicht ob es für den benchmark wichtig ist aber beim cpu benchmark wurde das oc hinter der 5850 und die 1200 beim ram noch nicht gefixt^^

Die CPU Benchmark Liste wird gefixt wenn noch einer den Bench ausfuehrt und ich ihn/sie einfuegen muss.;)

Also Thyosl, Super Dinger aber mit meiner DoppelGPU ATI 5970 bekomme ich immer keine Rückmeldung vom GPU-Bench 1.2.:huh:

Wende dich an die Troubleshooting Liste in Post 1.;)
 
@thysol

Mir ist übrigens doch ein sinnvolles Progi für Dich zum Proggen eingefallen, falls überhaupt möglich, ein 'echtes' brachiales Testprogramm für GraKa's, ob diese 'real-stable' laufen.

Die Hersteller haben sicherlich solche Programme und diese nennen sich mit Sicherheit nicht Furmark oder so.

Beispiel: Jedes Spiel läuft problemlos stundelang mit meinen OC - Einstellungen, außer Clear Sky, CoP und Metro 2033 (nutzen wohl die gleiche Engine - xray oder so), Metro 2033 ist erst nach 2 Stunden ausgestiegen (Nvidia Treiber - Fallback2saveclocks)

Dieses ist aber nicht eben mal so geschrieben.
 
Ich habe versucht einen Multi-Core Benchmark in OpenCL zu erstellen, bin aber gescheitert. Wenn ich bei der erstellung der Command Queue dass OpenCL Device auf CPU stelle kommt immer ein Fehler waehrend des kompilieren des Kernels.

Ich habe keine Lust den Multi-Core Benchmark in C# zu schreiben weil ich mich eigentlich mit OpenCL beschaeftigen wollte. Was fuer ein neues OpenCL Projekt ich in Angriff nehme kann ich so Konkret noch nicht sagen. Ich muss naemlich vorerst noch euer Feedback dokumentieren. Ich mache ein OpenCL Projekt naemlich fuer den BT Young Scientist 2011. Danke eurem Feedback weiss ich jetzt Details auf welchen CPUs/GPUs welche Benchmarks gut laufen. Dass muss ich alles dokumentieren.
Gehen den OpenCL Beispiele bei dir auf der CPU?

ich halte das in C# aber für sinnvoller, weil das kein StreamSDK benötigt.
(Dann brauchen nVidia User keine AMD Software installieren :devil:).
Ich hab dir mal was gebaut. mit dem athlon x2 6400+ statt 20 Sekunden nurnoch 12, skaliert also relativ gut und ist für n Kerne geschrieben.
(Kann man sicherlich noch optimieren (ich kenn C# fast nicht), ich habs grad einfach runtergeschrieben).
Ich schick dir den Code per PN ;)


EDIT:
@sentinel1
dafür kannst theoretisch auch barswf (md5 hash cracker) nehmen. über die nacht laufen lassen - du erzeugst dir ne hash aus einem 20 stellen password. daran knappert der ewig - 12h gpu last auf 100%, danach kannst ja abbrechen.
 
Zuletzt bearbeitet:
Also ich versuchs dann mal mit dem Schwingende-Saite-Problem, das du als Benchmark umsetzen könntest.

Also Du hast ne Saite mit Länge "L", die fest eingespannt ist. Allgemein musst du "einfach" folgende Differentialgleichung lösen:

d² u(x,t) d² u(x,t)
---------- = c² --------- (die d´s sollen natürlich deltas sein)
d t² d x²

da die Saite fest eingespannt ist gilt: u(0,t)=u(L,t)=0

Wir wollen/können die Position der Saite nur an N+1 diskreten stellen berechnen, wobei wir hier sinnvollerweise an äquidistante Punkte v(i,j) approximieren.

Für i=1,2,...,N-1 ergeben sich diese Werte aus der folgenden Iterationsgleichung:

v(i,j+1)=epsilon[v(i+1,j)+v(i-1,j)]+2(1-(c²/c'²))v(i,j)-v(i,j-1)

Die Randpunkte sind fest.

v(0,j+1)=v(N,j+1)=0


Die Größe epsilon=-------------------
(L/(N*delta_t))²

ist durch die räumliche und zeitliche Auflösung als auch durch die Wellengeschwindigkeit c gegeben.

In Code kann man das ohne paralellisierung dann wie folgt schreiben:

void string (double *u, double *u_old, double *u_new, int N, double eps){
int i;
u_new[0]=u[0];
for (i=1; i<N; ++i){
u_new=eps*(u[i-1]+u[i+1])+2.0*(1.0+eps)*u-u_old;
}
u_new[N]=u[N];
}


Ich hoffe der Code stimmt so, sollte aber schon richtig sein.

Wenn man den Code nun parallelisieren will, dann muss man einfach die zu berechnenden Punkte aufteilen auf M Teilstücke. Was beachtet werden muss ist, das wenn Prozess P die Punkte v[50,j] bis v[100,j] berechnet, er in jedem Schritt auf die benachbarten Punkte 49 und 101 des vorhergehenden Rechenschritts zugreifen muss, da ansonsten die Saite "reisen" würde ;) Das sollte auf jedenfall beachtet werden wenn man parallelisieren will.

Damit der Benchmark auch was bringt, sollte man die Granularität nicht zu fein wählen, damit die Karte auch wirklich gut arbeiten kann. Damit ist gemeint, das ja in jedem Zeitschritt auf die Randpunkte "gewartet" werden muss. Da je mehr Punkte ein Prozess ausrechnen muss die Zeitspanne hierfür anwächst, wird das warten auf die Randpunkte immer unbedeutender je mehr Punkte jeder Prozess berechnen muss.

Ich würd sagen so 1.000 oder 10.000 Punkte pro Core sollten mal nen guter Anfangswert sein.

Geschickt wäre es natürlich, wenn man die Daten nicht einfach verwirft, sondern im VRAM, bzw wenns zu viel wird im Arbeitsspeicher/Festplatte in ner Datei ablegt um dann mit GnuPlot z.B. sich das ganze dann visualisieren zu lassen wie die Saite schwingt ;)
 
@Skysnake
Danke fuer die Idee. Momentan bin ich aber mit anderem OpenCL Kram beschaeftigt. Mit GPU Benchmark v1.3 sollte dein Algorithm aber dabei sein.:daumen:

Wieso antwortest du uebrigens weder auf meiner PN noch meiner E-mail?:what:
 
ich hab hier mal cpu benchmark ergebnisse:

athlon x2 6400+, 4gb ram, gforce 8600gt, vista32bit
alles auf standardtakt

cpu: 21,93564 Seconds

2 x cpu: 12,7897218 Seconds

Edit:
Faktor 1,715 mit 2 Kernen, ist relativ ordentlich, oder?
 
Zuletzt bearbeitet:
Hat der nicht i750 nicht 4 kerne?

weil dann sollte er um mehr als faktor 2 skalieren...
aus der liste lese ich, dass du mit singlecore auf 10.76 sekunden kommst...

kannst du mal im taskmanager die anzahl der threads des benchmarks (unter prozesse, ansicht, splaten auswählen, threads kannst die threadanzeige aktivieren) vor und nach dem klick auf den start button anschauen?
sind das 4 oder nur 2 threads mehr?
 
Hat der nicht i750 nicht 4 kerne?

weil dann sollte er um mehr als faktor 2 skalieren...
aus der liste lese ich, dass du mit singlecore auf 10.76 sekunden kommst...

kannst du mal im taskmanager die anzahl der threads des benchmarks (unter prozesse, ansicht, splaten auswählen, threads kannst die threadanzeige aktivieren) vor und nach dem klick auf den start button anschauen?
sind das 4 oder nur 2 threads mehr?

Im Task Manager zeigt der immer zwischen 7 bis 12 Threads an. Keine Ahnung warum mein i5 nicht besser skaliert.:what:
 
Status
Für weitere Antworten geschlossen.
Zurück