用户
 找回密码
 立即注册
wang_sd01 该用户已被删除
发表于 2013-8-2 23:27:20
17940
不同的block对于同一段global memory的数据都在cache中有拷贝,一个block的线程修改的数据后,即使使用threadfence,以及block之间的同步之后(版主不建议这么做,原因见http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=7170&page=1#pid49684),别的block也无法读取到新修改的值。

我用volatile修饰数组指针后,可以解决这个问题,但是效率是不是太低了,因为每次都是从内存里边读取/写入,有没有更好的解决一致性的方法,或者绕过这个问题?

此外,在数组比较大的时候(比如100万),依旧会出现一致性的问题,请问是为什么,cuda里边对volatile的变量是如何实现和处理的,谢谢各位。
使用道具 举报 回复
发新帖
您需要登录后才可以回帖 登录 | 立即注册