CUDA 数组如何存储在 GPU 内存中?它们在物理上是否是线性的?

Phi*_*ana 5 c++ cuda gpu nvidia

根据 CUDA 工具包文档:

https://docs.nvidia.com/cuda/cuda-c-programming-guide/

设备内存可以分配为线性内存或 CUDA 数组。

这是否意味着 CUDA 数组不是线性存储在 GPU 内存中的?

在我的实验中,我成功地基于 cudamemcpy 函数从 GPU 内存中转储了我的数据。如果我的数据是由cudaMallocArray分配的,是不是意味着数据在GPU内存中不是物理线性的,需要通过其他API提取?

har*_*ism 4

CUDA 数组确实存储在 GPU 设备内存(“全局”内存)中,并且字节在内存中物理上不是线性的。它们是一种不透明布局,针对多通道、多维纹理访问和纹理过滤进行了优化。该格式未记录,因为它可能在 GPU 架构之间发生变化。