gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:35:22 26 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/

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