Jor*_*dan 1 c++ memory program-entry-point shared cuda
我想在main()函数中创建一个数组,输入所有正确的值,然后让这个数组立即被共享内存中的线程使用.
我在CUDA中查找如何使用共享内存的每个示例都有线程在写入共享数组,但我想在启动内核之前立即使用我的共享数组.
任何帮助这样做将非常感激.提前致谢!
一些上下文:我想要的共享数组永远不会更改并被所有线程读取.
编辑:显然这对共享内存是不可能的.有没有人知道是否可以使用只读缓存?
这是不可能的.填充共享内存的唯一方法是使用CUDA内核中的线程.
如果您希望在启动时内核可以使用一组(只读)数据,那么使用__constant__
内存当然是可能的.可以使用文档中指示的API在主机代码上设置这样的存储器,即cudaMemcpyToSymbol
.
__constant__
内存实际上只在每个线程访问给定访问周期中的相同位置时才有用,例如
int myval = constant_data[12];
Run Code Online (Sandbox Code Playgroud)
否则使用普通的全局内存,静态或动态分配,使用适当的主机API进行初始化(dynamic:cudaMemcpy
,static :) cudaMemcpyToSymbol
.