如何使用 CudaMallocHost 将固定内存分配给二维数组?

How to allocate pinned memory to a 2-dimensional array using CudaMallocHost?

如何使用 CudaMallocHost 将固定内存分配给二维数组?

期待任何帮助!

(主机)内存是一维的。就像您为二维 n×m 类型 T 元素数组分配 n * m * sizeof(T) 字节,使用 malloc()(或 new[],或 std::make_unique()) - 你对 cudaMallocHost().

做同样的事情

现在,上述并不是对二维数组建模的唯一方法。正如 C FAQ, question 6.16 中所解释的,我们有时可能会使用一个指针数组,每个指针都指向一个次要维度的一维数组。这也可以使用 cudaMallocHost() 来完成 - 同样,只需将其替换为 malloc()。但是,请注意这种间接寻址会降低性能。

如果你想让数组行很好地对齐,你可能想用一些未使用的元素填充每一行;但这对于常规主机端内存分配和 cudaMallocHost().

也是如此