小编art*_* me的帖子

有没有办法动态分配常量内存?CUDA

我对将数组复制到常量内存感到困惑。

根据编程指南,至少有一种方法可以分配常量内存并使用它来存储值数组。这称为静态内存分配:

__constant__ float constData[256];
float data[256];
cudaMemcpyToSymbol(constData, data, sizeof(data));
cudaMemcpyFromSymbol(data, constData, sizeof(data));
Run Code Online (Sandbox Code Playgroud)

再次根据编程指南我们可以使用:

__device__ float* devPointer;
float* ptr;
cudaMalloc(&ptr, 256 * sizeof(float));
cudaMemcpyToSymbol(devPointer, &ptr, sizeof(ptr));
Run Code Online (Sandbox Code Playgroud)

看起来使用了动态常量内存分配,但我不确定。而且__constant__这里也没有使用限定符。

所以这里有一些问题:

  1. 该指针是否存储在常量内存中?
  2. 分配的(通过该指针)内存也存储在常量内存中吗?
  3. 这个指针是常量吗?并且不允许使用设备或主机功能更改该指针。但是改变数组的值是否被禁止呢?如果允许更改数组的值,那么是否意味着不使用常量内存来存储这些值?

cuda

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

标签 统计

cuda ×1