gpt4 book ai didi

cuda - 什么在 GPU 上更快?将 bool 类型转换为 int 或使用分支语句?

转载 作者:行者123 更新时间:2023-12-01 09:35:22 31 4
gpt4 key购买 nike

我正在尝试使用 CUDA 来并行化模拟退火算法。我使用的 GPU 是 NVIDIA GTX660。我正在尝试加快程序速度,为此我正在考虑更换它

int r= rand();
if (condition)
{
r += 1;
}

int r = rand() + (condition)*1; 

我知道跳转/分支指令(如 if-then-else 命令)执行起来最慢,但除非我的理解不正确,否则类型转换涉及内存访问,然后在访问它之前将数字复制到新位置作为 int。 “条件”的结果可以存储在寄存器中并在不修改的情况下馈入 ALU 吗?如果是这样,那不是计算变量 r 值的更快方法吗?以上在每个线程上运行。

最佳答案

通常,您会非常努力地避免在 GPU 上进行分支,因为这通常是 CPU 需要停止所有未通过该分支的线程的点,执行那些通过该分支的线程,然后停止这些线程,然后执行另一个分支。

也就是说,分支不会发生,因为你写了 if ;它发生是因为你使用例如<它根据您正在比较的内容为寄存器分配一个值,但这非常取决于您的实际情况以及您所使用的语言/体系结构——我的知识来自第一代 CUDA,可能不再完全适用.

关于cuda - 什么在 GPU 上更快?将 bool 类型转换为 int 或使用分支语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39085269/

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