Versuch mal den Link im Test.
Wenn das ein größerer Faktor wäre, hätte der Wechsel auf PCIe 3.0 eine Wirkung zeigen müssen, was er nicht tat. Wenn zuviele kleine Pakete hin- und hergeschickt werden müssen, sodass es keinen nennenswerten Unterschied zwischen 240 und 3.700 GFLOPS Rechenleistung gibt, zeigt das, dass die GPU-Implementation lieblos angeflanscht wurde.
Das tue ich.
Mann muss nur 1 oder 2 Linien Code ändern das der selbe OpenCL Kernel auf der CPU ausgeführt wird. Daher wüsste ich jetzt gerne wieso du erzählst das es schwerer wäre parallelen Code auf der CPU zu programmieren?
@thysol: Das ist einfach falsch. Die Aufgaben werden von den Shadern erledigt, welche darauf ausgelegt sind Dinge parallel zu erledigen.
Eine 7970 hat z.B. 2048 Shader und du wirst diesen Shader sicherlich nicht jedem einzelnen eine Aufgabe zuordnen, dass kann die Grafikkarte schon gut selber aufteilen. Beim der CPU sieht das schon anders aus. Du hast Threads, die man genauer zuordnen kann und dann erfolgt eine Abarbeitung - mal grob gesagt. Wenn du ein ganz kurzen, stink normalen Code kompilierst (cout in einer while schleife oder ähnlich), dann wirst du definitiv nur einen Kern ausnutzen können.
@Carsten: Das hängt ja nicht an dem Datenbus bzw. der Schnittstelle. Ob OpenGL/CL, man kann das ganze mal gut verdeutlichen:
@Beide: Bei OpenGL gibt/gab es die Fixed-Function-Pipeline - veraltet aber wird noch oft genug genutzt.
Würde man nun einfach nur ein Viereck rendern (per glBegin oder auch VertexArray - keine Displaylist oder VBO), so würde man bei jedem Frame die Informationen zur Grafikkarte schicken.
Was würde man sehen: Ein CPU Kern wird komplett ausgelastet sein (oder der CPU teilt es auf die Kerne auf -> Bei 4 Kernen wäre die CPU 25% ausgelastet) und die Grafikkarte hätte nichts zu tun. So eine Szene rendert ihr dann mit ein paarhundert frames aber das juckt die Karte nicht, ist ja nur ein Viereck aber der Aufwand für die CPU ist wesentlich höher.
Wer mir das nicht glaubt kann es gerne probieren. Simple OpenGL Programme, wo nur was billiges gerendert wird und auf der Fixed-Function-Pipeline beruht gibt es genügend und es wird dieser Effekt eintreten. Exakt so verhält es sich auch mit WinZip.
Die 7970 hat wie gesagt 2048 Shader zur verfügung.
Die Dateien waren ca. 7 GB groß und das komprimieren dauerte 168 - also knapp 3 Minuten.
Heißt, dass jeder Shader ungefähr 0,021 MB die Sekunde verarbeiten muss und das unter der Vorraussetzung, dass wirklich
alles von der GPU übernommen wird (was ich allerdings nicht glaube). Nicht gerade viel oder?