【发布时间】:2016-03-14 15:02:00
【问题描述】:
我对 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 呢?既然不同block中的不同线程都会往里面写,那它是怎么工作的呢?我在某处读到,可以保证在同一块中的不同线程同时写入全局内存的情况下,至少会写入一个,但不能保证其他的。我是否需要担心这一点,例如,让块中的每个线程都写入共享内存,一旦它们都完成,让一个将它们全部写入全局内存?还是 CUDA 替我处理?
【问题讨论】:
-
已搜索但未找到,但如果是这种情况,我深表歉意。