首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同架构的不同内核

不同架构的不同内核
EN

Stack Overflow用户
提问于 2014-02-18 20:29:22
回答 2查看 159关注 0票数 7

我想知道是否有一些简单的方法可以为不同的架构提供不同版本的内核。他们是一条简单的路吗?或者唯一的可能是在独立文件中定义独立的内核,并要求nvcc在每个文件中编译不同的体系结构?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-18 20:55:41

您可以通过编译器指令来实现这一点。有点像

代码语言:javascript
复制
__global__ void kernel(...) {

# if __CUDA_ARCH__ >= 350

    do something

# else

    do something else

# endif

}    
票数 8
EN

Stack Overflow用户

发布于 2014-02-19 06:29:22

稍微修改一下C++ JackOLanterns的答案:

代码语言:javascript
复制
template <unsigned int ARCH>
__global__ void kernel(...) 
{
    switch(ARCH)
    {
    case 35:
         do something
         break;
    case 30:
         do something else
         break;
    case 20:
         so something else
         break;
    default:
         do something for all other ARCH
         break;
    }
}

编辑:删除错误@sgar91指出:

您可以通过查询CUDA设备调用带有porperties的内核

代码语言:javascript
复制
cudaGetDeviceProperties(&props, devId);
unsigned int cc = props.major * 10 + props.minor;

switch(cc)
{
case 35:
    kernel<35><<<1, 1>>>(/* args */);
    break;
...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21864602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档