首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CUDA中静态分配全局内存结构

在CUDA中静态分配全局内存结构
EN

Stack Overflow用户
提问于 2014-09-15 01:55:05
回答 1查看 436关注 0票数 1

在数据自动化系统中,static全局内存struct的这一定义可能吗?

代码语言:javascript
复制
struct ABC
{
    int nIntArray[3];
    float rFLoatArray[3];
};

__device__ static ABC xABCStruct = {{1, 2, 3}, {1.f, 2.f, 3.f}};

如何在CUDA内存中查看此结构实例?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-15 07:02:25

是的,这是可能的。看看下面的代码,还展示了如何访问它的示例:

代码语言:javascript
复制
#include<stdio.h>

/********************/
/* CUDA ERROR CHECK */
/********************/
#define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); }
inline void gpuAssert(cudaError_t code, char *file, int line, bool abort=true)
{
    if (code != cudaSuccess) 
    {
        fprintf(stderr,"GPUassert: %s %s %d\n", cudaGetErrorString(code), file, line);
        if (abort) exit(code);
    }
}

struct ABC { int nIntArray[3]; float rFLoatArray[3];};

__device__ static ABC xABCStruct = {{1, 2, 3}, {1.f, 2.f, 3.f}};

__device__ static float test_float = 3.f;

__global__ void kernel1() { printf("%f\n", test_float); }

__global__ void kernel2() { 
    printf("%i\n", xABCStruct.nIntArray[0]); 
    printf("%i\n", xABCStruct.nIntArray[1]); 
    printf("%i\n", xABCStruct.nIntArray[2]); 
    printf("%f\n", xABCStruct.rFLoatArray[0]); 
    printf("%f\n", xABCStruct.rFLoatArray[1]); 
    printf("%f\n", xABCStruct.rFLoatArray[2]); 
}

void main() {
    kernel1<<<1,1>>>();
    gpuErrchk(cudaPeekAtLastError());
    gpuErrchk(cudaDeviceSynchronize());

    kernel2<<<1,1>>>();
    gpuErrchk(cudaPeekAtLastError());
    gpuErrchk(cudaDeviceSynchronize());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25839825

复制
相关文章

相似问题

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