Max Anzahl der threads, die eingeleitet werden können, in einem einzigen CUDA-kernel

Ich bin verwirrt über die maximale Anzahl der threads an, die gestartet werden können in eine Fermi-GPU.

Meiner GTX 570 Gerät Abfrage-sagt der folgende.

  Maximum number of threads per block:           1024
  Maximum sizes of each dimension of a block:    1024 x 1024 x 64
  Maximum sizes of each dimension of a grid:     65535 x 65535 x 65535

Aus meinem Verständnis, ich verstehe die obige Aussage wie:

Für einen CUDA-kernel können wir starten bei den meisten 65536 Blöcke. Jedes gestartete block kann bis zu enthalten
1024 threads. Also im Prinzip, ich kann es starten bis zu 65536*1024 (=67108864) threads.

Ist das richtig? Was ist, wenn mein thread verwendet eine Menge von Registern? Werden wir noch in der Lage zu erreichen das theoretische maximum von der Anzahl der threads?

Nach dem schreiben und dem starten der CUDA-kernel, wie weiß ich, dass die Anzahl der threads und Blöcke, die habe ich ins Leben gerufen haben tatsächlich instanziiert wurde. Ich meine, ich möchte nicht, dass die GPU zu berechnen, einige junk-oder Verhalten sich sonderbar, wenn ich durch Zufall instanziiert mehr threads als möglich für ein bestimmten kernel.

Schreibe einen Kommentar