gpt4 book ai didi

c++ - CUDA:将 M[][] 用于 2D 静态数组还是将它们展平为 M[] 更好?

转载 作者:太空宇宙 更新时间:2023-11-04 15:43:53 26 4
gpt4 key购买 nike

使用双指针语法M[][]定义一个矩阵,然后像这样访问元素会更好吗

for (int i=0; i<height; ++i)
{
for (int j=0; j<width; ++j)
{
// do something with M[i][j]
}
}

或将矩阵展平为 vector ,将其定义为 M[],然后像这样访问其元素

for (int i=0; i<height; ++i)
{
for (int j=0; j<width; ++j)
{
int index = j + i * height;
// do something with M[index]
}
}

最佳答案

如果不讨论精确的索引计算(你会在实现时修复任何错误)和关于如何优化索引计算的讨论(一个好的编译器会为你做),我个人会更喜欢使用 CUDA 的第二种方法。

原因是如果我想在设备和主机之间来回传输这种形式的数据,第二种形式要容易一些。

有很多问题可以解释为什么,这里就不细说了,只要搜索右上角的“CUDA 2D array”,你就会看到传输双指针的复杂性(即 **[][] ) CUDA 中设备和主机之间的数组。 Here举个例子,看看talonmies给出的答案。

关于c++ - CUDA:将 M[][] 用于 2D 静态数组还是将它们展平为 M[] 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19759343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com