在 CUDA(和集成内存)中使用数据指针

Using a data pointer with CUDA (and integrated memory)

我正在使用集成了 GPU 和 cpu 内存的主板。我也在使用外部矩阵库 (Blitz++)。我希望能够从矩阵对象中获取指向我的数据的指针并将其传递给 cuda 内核。在进行了一些挖掘之后,听起来我想通过调用 cudaHostGetDevicePointer 来使用某种形式的零副本。我不确定的是内存的分配。我是否必须使用 cudaHostAlloc 创建指针?如果不需要的话,我不想重新编写 Blitz++ 来做 cudaHostAlloc

我的代码目前有效,但每次都会复制矩阵数据。集成存储卡不需要。

即使在像 Jetson 这样的集成系统上,也必须使用 cudaHostAlloc 创建(即分配)指针。

原因是 GPU 需要(零拷贝)内存固定,即从主机请求分页系统中移除。普通分配受需求分页的影响,不能用作零拷贝,即 GPU 的 mapped 内存。