Was ist die maximale Blockgröße möglich in CUDA?
Theoritically, die Sie haben können 65535 Blöcke pro diamension der Startaufstellung, bis zu 65535 * 65535 * 65535.
Meine Frage ist: Wenn Sie anrufen ein kernel wie diese kernel<<< BLOCKS,THREADS >>>()
(ohne dim3 Objekte), was ist die maximale Anzahl erhältlich für BLÖCKE ?
In einer Anwendung von mir, ich habe es bis 192000 und schien zu funktionieren... Das problem ist, dass der kernel die ich verwendet, ändert sich der Inhalt einer riesigen Auswahl, so dass, obwohl ich überprüft, einige Teile der Reihe und schien in Ordnung, ich kann nicht sicher sein, ob der kernel benahm sich seltsam auf die anderen Teile.
Für das Protokoll ich habe ein 2.1-GPU, GTX 500 ti.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit compute capability 3.0 oder höher, Sie kann bis zu 2^32 - 1 Blöcke in der x-dimension, und die meisten 65535 Blöcken in den y-und z-Dimensionen. Siehe Tabelle H. 1. Feature-Unterstützung pro Compute Capability von der CUDA -C Programming Guide, Version 9.1.
Als Pavan darauf hingewiesen, wenn Sie nicht eine dim3 grid-Konfiguration, Sie verwenden nur die x-dimension, also die pro-dimension-limit gilt hier.
Falls jemand landet, hier basierend auf Google-Suche (wie ich es gerade getan habe):
Nvidia verändert die Spezifikation seit diese Frage gestellt wurde. Mit compute capability 3.0 und neuere Versionen, die x-Dimension-grid von thread-Blöcken ist erlaubt, bis zu 2'147'483'647 oder 2^31 - 1.
Sehen Sie die aktuellen: Technische Spezifikation
65535 in einer einzigen dimension. Hier ist der komplette Tabelle
Ich manuell überprüft, auf meinem laptop (MX130), Programm stürzt ab, wenn #Blöcke > 678*1024+651. Jeder block mit 1 thread, indem noch eine einzige mehr-block gibt SegFault. Kernal-code hatte kein raster, lineare Struktur nur.