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



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

期待您的帮助!

(主机)内存是一维的。就像你用malloc()(或new[],或std::make_unique())为一个二维,n × m,类型为t的元素数组分配n * m * sizeof(T)字节一样,你也可以用cudaMallocHost()来做同样的事情。

现在,上面的方法并不是模拟二维数组的唯一方法。正如C常见问题解答6.16中所解释的,有时可以使用指针数组,其中每个指针都指向小维的一维数组。这也可以使用cudaMallocHost()来完成-同样,只需将其替换为malloc()。但是,请注意,这种间接方式有性能损失。

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

最新更新