Я довольно новичок в программировании CUDA, и некоторые модели памяти, которые мне не совсем понятны, есть. Как, как это работает? Например, если у меня есть простое ядро Вопросы о памяти CUDA
__global__ void kernel(const int* a, int* b){
some computation where different threads in different blocks might
write at the same index of b
}
Так я представляю a
будет находиться в так называемой постоянной памяти. Но как насчет b
? Поскольку в нем будут записываться разные потоки в разных блоках, как это будет работать? Я где-то читал, что было гарантировано, что в случае одновременных записей в глобальной памяти разными потоками в одном блоке будет написан хотя бы один, но нет гарантии о других. Должен ли я беспокоиться об этом, то есть, например, каждый поток в блоке записывается в разделяемую память, и как только все это делается, нужно написать все в глобальную память? Или CUDA заботится о нем для меня?
Довольно уверен, что это дубликат чего-то. –
Искал и не нашел, но прошу прощения, если это так. – Nico