cuda - 在 CUDA __device__ 函数的开始或结束处是否存在隐式屏障同步?

标签 cuda synchronization gpgpu

如果 CUDA 内核调用 __device__ 函数, block 中进入或退出 __device__ 函数的所有线程之间是否存在任何隐式同步?

如果不是那么这意味着 block 中的一些线程可能在 block 中的其他线程进入它之前就已经退出了 __device__ 函数(在没有任何显式同步的情况下)?

任何指向相关信息/引用的指针都将不胜感激。

最佳答案

是的,正如 talonmies 指出的那样,在 warp 中只有隐式同步 btw 线程。 当内核启动时,硬件会查看任何 warp(可能是第一个)并为其执行第一条指令,然后切换到另一个 warp。有可能一些 warp 在另一个 warp 甚至为内核执行第一条指令之前就退出了,因为 warp 不需要在退出时相互等待

关于cuda - 在 CUDA __device__ 函数的开始或结束处是否存在隐式屏障同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974120/

相关文章:

c++ - 在不同的编译器上转换为void **

c++ - CUDA/OpenGL 互操作 : Writing to surface object does not erase previous contents

Cuda L2 传输开销

multithreading - 锁定VS内存屏障

c# - 如何在 Android 设备上使用 unity GPGPU?

c - 在mex文件matlab中使用magma_dysevd

cuda - 如何使用WMMA功能?

CUDA替代__syncthreads而不是__threadfence()差异

java - run 和 equals 方法有奇怪的事情或者我做的任何错误

swift - 循环多个 UIAlertController