1
3
根据
the programming guide
,
内存隔离功能(即“可见性”)“强制”对共享内存和全局内存的所有更新对其他线程可见。
我想这就是你要问的。我不认为像“使用时不需要使用volatile”这样的笼统说法
自从
假设我有这个代码:
在这种情况下,执行if语句的特定块中的任何线程都可以确保看到
注意这里有一个微妙的区别。其他线程,在其他块中,在代码的其他点上,可能看到或可能看不到由不同块写入的值。 只有当我们将执行同步和内存隔离结合在一起时,我们才能确定由一个线程填充的值对另一个线程是真正可见的。在不使用合作组的情况下,CUDA不提供跨单独块同步执行的机制。
同样地
注意,在另一个SM上,设备代码活动不会触发一级缓存数据的“无效”。
|
Jacob Chang · 关于树约简中共享内存的问题 2 年前 |
yuanyesjtu · CUDA gpu矢量[重复] 6 年前 |
noobie2023 · 使用CUDA的前缀和 6 年前 |
user3821901 · CUDA协作组:链接错误 6 年前 |
Vandana · 将原始数据转换为推力中的复数向量 6 年前 |
Farzad · 序列化CUfunction对象 6 年前 |
Vandana · 在以下矩阵副本内核中合并访问 6 年前 |