Weyoun
2012-06-20, 16:39:59
Hallo zusammen,
ich brüte gerade mal wieder über einige Tutorials und mir wird der Zusammenhang zwischen Compute Units bei OpenCL und NVidias Streaming Multiprozessoren nicht ganz klar.
Wenn ich jetzt 500 Instanzen eines Kernels, d. h. 500 Workitems zur gleichzeitigen Bearbeitung auf die Grafikkarte schicke, wieviele Workitems werden parallel zur gleichen Zeit abgearbeitet?
Nehmen wir als Beispiel die GTX 460 mit 768 MB Ram:
Das Ding hat 336 Streaming Prozessoren, heißt dass das 336 Instanzen jetzt im ersten Zug abgearbeitet werden und 500-336=164 später?
Jetzt bin ich darauf gekommen, das eine GTX 460 nur 7 Compute Units hat, das heißt doch dann eigentlich, dass nur 7 Workitems gleichzeitig abgearbeitet werden können? Das überrascht mich, ich dachte das wären weitaus mehr? Da haben doch dann Octacore CPUs mehr Parallitätspotential als eine Grafikkarte...
Aber wofür sind dann die 336 Streaming Multiprozessoren gut? Sind das nur die Prozesselemente bei OpenCL und eine nVidia GPU braucht 336/7 = 48 Prozesselemente um eine Compute Unit zu betreiben?
Wäre sehr dankbar, wenn mir einer erklären könnte wie es tatsächlich aussieht :)
Viele Grüße,
Weyoun
ich brüte gerade mal wieder über einige Tutorials und mir wird der Zusammenhang zwischen Compute Units bei OpenCL und NVidias Streaming Multiprozessoren nicht ganz klar.
Wenn ich jetzt 500 Instanzen eines Kernels, d. h. 500 Workitems zur gleichzeitigen Bearbeitung auf die Grafikkarte schicke, wieviele Workitems werden parallel zur gleichen Zeit abgearbeitet?
Nehmen wir als Beispiel die GTX 460 mit 768 MB Ram:
Das Ding hat 336 Streaming Prozessoren, heißt dass das 336 Instanzen jetzt im ersten Zug abgearbeitet werden und 500-336=164 später?
Jetzt bin ich darauf gekommen, das eine GTX 460 nur 7 Compute Units hat, das heißt doch dann eigentlich, dass nur 7 Workitems gleichzeitig abgearbeitet werden können? Das überrascht mich, ich dachte das wären weitaus mehr? Da haben doch dann Octacore CPUs mehr Parallitätspotential als eine Grafikkarte...
Aber wofür sind dann die 336 Streaming Multiprozessoren gut? Sind das nur die Prozesselemente bei OpenCL und eine nVidia GPU braucht 336/7 = 48 Prozesselemente um eine Compute Unit zu betreiben?
Wäre sehr dankbar, wenn mir einer erklären könnte wie es tatsächlich aussieht :)
Viele Grüße,
Weyoun