gpt4 book ai didi

c++ - 考虑到模板参数改变 if 语句条件

转载 作者:行者123 更新时间:2023-11-30 00:36:34 25 4
gpt4 key购买 nike

我有一个带有模板参数的全局内核函数:

template<int ARG> __global__ void kernel(array[]) {
int threadID = blockDim.x*blockIdx.x + threadIdx.x;
if(...) {...}
}

考虑到模板参数,函数的行为和特殊的 if 语句条件略有不同,但主体保持不变。让我们说:
ARG == 0 if 语句如下:if(expr1){body}
ARG == 1 if 语句如下:if(expr2){body}
ARG == 2 if 语句如下:if(expr1 && expr2){body}

我的问题是(在可读性和性能方面)提供此功能的最佳方式是什么?

编辑:表达式 expr1expr2 是对 __device__ boolean 函数的调用,例如fnc1(array[threadID])fnc2(array[threadID])

最佳答案

直接的方法是蛮力:

if ((ARG != 1 || expr1) && (ARG != 0 || expr2)) ...

由于 ARG 在编译时已知,因此编译器将在此处生成良好的代码。

关于c++ - 考虑到模板参数改变 if 语句条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15766655/

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