2016-07-21 2 views
-1

Ich habe diese beiden Seiten gelesen: Understanding Streaming Multiprocessors (SM) and Streaming Processors (SP), How Concurrent blocks can run a single GPU streaming multiprocessor? Aber ich bin immer noch verwirrt über die Hardware-Struktur.Wie können verschiedene Blöcke in einem SM laufen (Streaming Multiprozessor)

  1. Ist SM eine SIMT-Struktur (single instruction multi thread)?

Angenommen, es gibt 8 SPs in einem bestimmten SM. Wenn verschiedene Blöcke in einem gleichen SM ausgeführt werden können, haben diese SPs unterschiedliche Anweisungen. Also mein Verständnis ist: SM wird verschiedene SP verschiedene Anweisungen geben.

  1. Werden die Threads in einem Warp gleichzeitig ausgeführt?

Angenommen, es gibt 8 SPs in einem bestimmten SM. Ein Warp ist im SM. Da mehrere Warps im SM laufen können, nehme ich an, dass 4 SPs diesen Warp ausführen. Es gibt 32 Threads in diesem Warp, aber nur 4 SPs können sie ausführen. Also wird es tatsächlich 8 Zyklen dauern, um diesen Warp zu starten? Ich hörte auch jemand sagte, dass alle Threads in einem Warp seriell laufen. Ich weiß nicht, was die Wahrheit ist ...

+0

ähnliche Frage [hier] (http://stackoverflow.com/questions/12212003/how-concurrent-blocks-can-run-a-single-gpu-streaming-multiprocessor) und [hier] (http: // stackoverflow.com/questions/20771358/how-do-a-sm-in-cuda-run-multiple-blocks- simultan) –

+0

vielen Dank –

Antwort

-1

Mehrere Blöcke können in einem einzigen SM laufen. Gemäß der Darstellung this (Folie 19 - danke @RobertCrovela) können Blöcke aus verschiedenen Kernen ausgegeben werden. Wenn der Block-Index vom selben Kernel ausgeführt wird, kann er als zusätzliche Ebene des Thread-Index angesehen werden, bis zu einem gewissen Grad (unterschiedlich für jede Architektur und jeden Kernel). Allerdings habe ich noch nie zwei verschiedene Streams gleichzeitig auf einem SM erlebt.

Je nach Architektur kann ein einzelner Warp-Befehl von SP in einem einzigen Zyklus ausgeführt werden, also gleichzeitig. Dies kann jedoch nur für SM mit 32 SP gelten, also nicht etwa in doppelter Genauigkeit. Auch dafür gibt es keine Garantie. Schließlich haben wir Konfigurationen erfahren, bei denen einige Threads mit hohem Warp-Index vor niedrigeren Indizes liefen. Neben den Synchronisationsfunktionen und anderen Werkzeugen gibt es keine feste Regel, wie sich der Befehlsplaner verhält.

+1

Werfen Sie einen Blick auf Folie 19 [hier] (http: // on- demand.gputechconf.com/gtc/2013/presentations/S3466-Programming-Guidelines-GPU-Architecture.pdf) - Blöcke aus separaten Kernels können sich auf demselben SM befinden. Es ist wahrscheinlich mehr oder weniger so schwer zu demonstrieren wie konkurrierende Kernel. –

+0

@RobertCrovella, danke für dieses Update, ich werde die Antwort nach Ihrem Kommentar der verschiedenen Kernel ändern. Können Sie mich jedoch auf ein Beispiel aufmerksam machen, das dies veranschaulicht? Wie gesagt, ich habe es nie erlebt. –

+0

Es ist möglich, ohne viel Aufwand zu demonstrieren. Wenn Sie hier auf SO eine neue Frage stellen und eine solche Demonstration anfordern möchten, werde ich Ihnen zur Verfügung stellen, was ich habe. Ich werde nicht versuchen, es in einem Kommentar zu behandeln. Nein, ich kann Sie nicht auf ein fertiges Beispiel irgendwo im Internet verweisen. –

Verwandte Themen