【发布时间】:2011-02-25 19:05:16
【问题描述】:
我已经通过Cuda programming guide,但仍然不清楚一个经线是否会屈服于其他准备执行的经线?请问有什么解释或指点吗?如果是,在什么条件下翘曲产生?
【问题讨论】:
我已经通过Cuda programming guide,但仍然不清楚一个经线是否会屈服于其他准备执行的经线?请问有什么解释或指点吗?如果是,在什么条件下翘曲产生?
【问题讨论】:
是的,片上调度程序交错执行 warp。调度策略故意未指定,因为调度策略可能会更改。 NVIDIA 不希望 CUDA 开发人员编写依赖于当前调度策略但在较新的 GPU 上失败的代码。
一般来说,拥有多个warp的目的是当一个线程等待一条指令完成执行时,另一个线程可能无需等待就可以执行。因此,当执行全局加载或慢速浮点操作等长延迟指令时,很可能会产生扭曲。某些架构,例如 Fermi,同时执行多个扭曲(http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architecture_Whitepaper.pdf 第 10 页)。
【讨论】: