gpt4 book ai didi

c++ - 通过引用将 thrust::device_vector 传递给函数

转载 作者:搜寻专家 更新时间:2023-10-31 00:20:08 26 4
gpt4 key购买 nike

我正在尝试传递结构的device_vector

struct point 
{
unsigned int x;
unsigned int y;
}

以下列方式传递给一个函数:

void print(thrust::device_vector<point> &points, unsigned int index)
{
std::cout << points[index].y << points[index].y << std::endl;
}

myvector 已正确初始化

print(myvector, 0);

我收到以下错误:

error: class "thrust::device_reference<point>" has no member "x"
error: class "thrust::device_reference<point>" has no member "y"

这是怎么回事?

最佳答案

不幸的是,device_reference<T>无法公开 T 的成员, 但它可以转换为 T .

实现print , 通过将每个元素转换为临时 temp 来制作每个元素的临时拷贝:

void print(thrust::device_vector<point> &points, unsigned int index)
{
point temp = points[index];
std::cout << temp.y << temp.y << std::endl;
}

每次调用 print ,它会导致从 GPU 到系统内存的传输以创建临时内存。如果您需要打印 points 的整个集合立即,一种更有效的方法是复制整个 vector points集体host_vectorstd::vector (使用 thrust::copy )然后照常遍历集合。

关于c++ - 通过引用将 thrust::device_vector 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6624049/

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