CUDA несколько потоков работают с одним указателем - PullRequest
0 голосов
/ 27 ноября 2018

Ну, например, у меня есть некоторый массив Y, и я хочу увеличить Y[0] в нескольких потоках.Если я только сделаю Y[0]++ в __global__ функции, тогда Y[0] будет 1. Итак, как решить эту проблему?

1 Ответ

0 голосов
/ 27 ноября 2018

Атомарные операции зависят от реализации.Если он компилируется без предупреждений, он, вероятно, сработает, но его следует протестировать :-) или хотя бы изучить ассемблер.

__global__ void mykernel(int *value){
    int my_old_val = atomicAdd(value, 1);
}

См. Руководство здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...