Wird das Schreiben im globalen Speicher in CUDA als atomar betrachtet?

Wird das Schreiben im globalen Speicher in CUDA als atomar betrachtet oder nicht?

Betrachtet man den folgenden CUDA-Kernel-Code:

int idx = blockIdx.x*blockDim.x+threadIdx.x;
int gidx = idx%1000;
globalStorage[gidx] = somefunction(idx);

Ist der globale Speicher zu schreibenglobalStorage atomar ?, z.B.Es gibt keine Race-Bedingungen, unter denen gleichzeitige Kernel-Threads in die Bytes derselben Variablen schreiben, die in globalStorage gespeichert sind. Dies könnte die Ergebnisse durcheinander bringen (z. B. pariale Schreibvorgänge).?

Beachten Sie, dass ich hier nicht über atomare Operationen wie add / sub / bit-wise usw. spreche, sondern nur über direktes globales Schreiben.

Bearbeitet: Den Beispielcode umgeschrieben, um Verwirrung zu vermeiden.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage