相关疑难解决方法(0)

如何以程序员愉快的方式使用CUDA常量内存?

我正在使用CUDA框架开发一个数字运算应用程序.我有一些静态数据应该可供所有线程访问,所以我把它放在常量内存中,如下所示:

__device__ __constant__ CaseParams deviceCaseParams;
Run Code Online (Sandbox Code Playgroud)

我使用调用cudaMemcpyToSymbol将这些参数从主机传输到设备:

void copyMetaData(CaseParams* caseParams)
{
    cudaMemcpyToSymbol("deviceCaseParams", caseParams, sizeof(CaseParams));
}
Run Code Online (Sandbox Code Playgroud)

哪个有效.

无论如何,似乎(通过反复试验,以及从网上阅读帖子),由于某些原因,deviceCaseParams的声明及其复制操作(对cudaMemcpyToSymbol的调用)必须在同一个文件中.目前我在.cu文件中有这两个,但我真的想在.cuh文件中有参数struct,这样任何实现都可以看到它.这意味着我还必须在头文件中使用copyMetaData函数,但这会混淆链接(已定义的符号),因为.cpp和.cu文件都包含此头文件(因此MS C++编译器和nvcc都编译它) ).

有没有人对设计有任何建议?

更新:查看评论

c++ linker cuda header visual-studio

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

cuda ×1

header ×1

linker ×1

visual-studio ×1