Считается ли запись в глобальную память атомарной в CUDA?

Глобальная запись в память считается атомарной или нет в CUDA?

Учитывая следующий код ядра CUDA:

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

Глобальная память пишет вglobalStorage атомный ?, напримернет условий гонки, при которых параллельные потоки ядра записывают в байты одной и той же переменной, хранящейся в globalStorage, что могло бы испортить результаты (например, записи с частичной записью)?

Обратите внимание, что здесь я не говорю об элементарных операциях, таких как add / sub / bit-bit и т. Д., Просто о глобальной записи.

Отредактировано: переписан пример кода, чтобы избежать путаницы.

Ответы на вопрос(1)

Ваш ответ на вопрос