在CUDA中进行比较而不进行分支

菲利波·比斯塔法(Filippo Bistaffa)

我正在尝试在CUDA中实现以下功能:

int compare(unsigned a, unsigned b) {
    if (a == b) {
        return 0;
    } else {
        if (a < b) return -1;
        else return 1;
    }
}

我目前正在使用一个非常幼稚的宏

#define CMP(X, Y) (((X) == (Y)) ? 0 : (((X) < (Y)) ? -1 : 1))

但我想知道是否由于分支而引起分歧。有没有更好的方法在CUDA中实现此功能?

格热哥兹·斯佩特科夫斯基

您可以使用无分支等效项,即:

(a > b) - (a < b)

这解决了潜在的翘曲发散。

在您的代码中,nvcc编译器可以通过使用分支谓词来消除歧义但是,即使采用了这种技术,有些变形也可能不起作用。您可能会在NSight Visual Studio探查器的“线程执行效率”列中看到此代码中特定语句的情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Swift 中进行节流而不进行反应

来自分类Dev

为什么不进行比较就返回假?

来自分类Dev

找到最低的数字而不进行比较

来自分类Dev

初始化SortedDictionary而不进行比较

来自分类Dev

在 SQL 请求中进行比较

来自分类Dev

在文件中进行比较,然后在文件之间进行比较

来自分类Dev

使用流在CUDA中进行矢量加法

来自分类Dev

在排序数组中进行比较搜索

来自分类Dev

在C ++中进行比较和交换

来自分类Dev

在PHP中进行日期比较的更快方法

来自分类Dev

在Sq Lite 3 Python中进行比较

来自分类Dev

通过SQL在表中进行行比较

来自分类Dev

在python中进行字符串比较

来自分类Dev

解析日期以在JPQL查询中进行比较

来自分类Dev

在ArrayList扑克游戏Java中进行比较

来自分类Dev

在封闭的地址哈希中进行比较的次数?

来自分类Dev

如何在mysql中进行精确比较?

来自分类Dev

如何在 .NET 中进行引用比较?

来自分类Dev

在 SSE 中进行比较时的奇怪行为

来自分类Dev

使用__IPHONE_OS_VERSION_MIN_REQUIRED而不进行比较

来自分类Dev

整数不等于时不进行比较

来自分类Dev

比较两个文件而不进行AWK排序

来自分类Dev

Javascript - 如果条件满足,则不进行比较

来自分类Dev

是否要在IDisposable对象数组中进行Dispose()或不进行Dispose()?

来自分类Dev

如何在Wagtail(django)中进行外键数据而不进行额外查询

来自分类Dev

如何在不进行任何更改的情况下在git中进行合并?

来自分类Dev

Git从另一个分支开始分支而不进行跟踪

来自分类Dev

在比较对象的相同结果集中进行比较

来自分类Dev

导入模块的多个版本/分支以在Julia中进行基准测试

Related 相关文章

热门标签

归档