首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在__device__ __host__函数中封装__shared__变量吗?

可以在__device__ __host__函数中封装__shared__变量吗?
EN

Stack Overflow用户
提问于 2016-07-13 04:44:04
回答 0查看 46关注 0票数 0

我想封装以下cuda代码:

代码语言:javascript
复制
__device__ __host__ 
void myFunction()
{
#ifdef __CUDA_ARCH__
    __shared__ float sharedVar[3];
#else
    float sharedVar[3];
#endif

    ...
}

转换成更流畅的东西,比如:

代码语言:javascript
复制
__device__ __host__ 
void myFunction()
{
    SHARED_MEMORY float sharedVar[3];
    ...
}

其中,如果定义了__CUDA_ARCH__,则SHARED_MEMORY的计算结果为__shared__,否则为nothing。以下是显而易见的方法:

代码语言:javascript
复制
#define SHARED_MEMORY \
#ifdef __CUDA_ARCH__ \
    __shared__ \
#endif

但是,这不会编译,因为其他c-preprocessor指令不能在宏中使用。有没有办法封装这段代码?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38338572

复制
相关文章

相似问题

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