gpt4 book ai didi

cuda - SIMT 和 SIMD 中的控制流分歧

转载 作者:行者123 更新时间:2023-12-03 20:18:22 24 4
gpt4 key购买 nike

我正在阅读 this本书深入研究 CUDA 的概念。在介绍 SIMT 概念的一章中,它说

The option for control flow divergence in SIMT also simplifies the requirement for programmers to use extra instructions to handle control flow compared to SSE.



我知道这个声明是基于 SSE 基于 SIMD 实现技术和 CUDA 线程基于 SIMT 原理工作的事实做出的,但是任何人都可以使用一些示例详细说明/解释这句话。
提前致谢。

最佳答案

使用 SIMD,如果您的例程需要与其他元素不同地处理某些元素,那么您需要明确处理屏蔽操作,以便它们仅应用于正确的元素。使用 CUDA 的 SIMT 体系结构,您会在每个线程上获得控制流的错觉,因此您不需要显式屏蔽操作 - 当然,这仍然会在“幕后”发生,但是程序员的负担被解除了。

示例:假设您想将所有负元素设置为零。在 CUDA 中:

if (X[tid] < 0)
X[tid] = 0; // NB: CUDA core steps through this instruction but only executes
// it if the preceding condition was true

在 SIMD (SSE) 中:
__m128 mask = _mm_cmpge_ps(X, _mm_set1_ps(0));  // generate mask for all elements >= 0
X = _mm_and_ps(X, mask); // clear all elements which are < 0

关于cuda - SIMT 和 SIMD 中的控制流分歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14098602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com