gpt4 book ai didi

c++ - Intel Xeon Phi 卸载代码 + STL vector

转载 作者:行者123 更新时间:2023-11-28 02:24:55 25 4
gpt4 key购买 nike

我想将存储在 STL vector 中的数据复制到英特尔至强融核协处理器。在我的代码中,我创建了一个类,其中包含带有计算所需数据的 vector 。我想在主机上创建类对象,也在主机上初始化数据,然后我想将这个对象发送到协处理器。这是说明我想做什么的简单代码。将对象复制到协处理器后 vector 为空。有什么问题?如何正确操作?

#pragma offload_attribute (push, target(mic))
#include <vector>
#include "offload.h"
#include <stdio.h>
#pragma offload_attribute (pop)

class A
{
public:
A() {}
std::vector<int> V;
};

int main()
{
A* wsk = new A();
wsk->V.push_back(1);

#pragma offload target(mic) in(wsk)
{
printf("%d", wsk->V.size());

printf("END OFFLOAD");
}
return 0;
}

最佳答案

当一个对象被复制到协处理器时,只有该元素本身的内存,类型为Astd::vector 分配一个单独的内存块来存储它的元素。复制 A 中嵌入的 std::vector 不会复制其元素。我建议不要尝试直接使用 std::vector。您可以复制其元素,但不能复制 vector 本身。

  int main()
{
A* wsk = new A();
wsk->V.push_back(1);

int* data = &wsk->V[0];
int size = wsk->V.size();

#pragma offload target(mic) in(data : length(size))
{
printf("%d", size);

printf("END OFFLOAD");
}
return 0;
}

关于c++ - Intel Xeon Phi 卸载代码 + STL vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31077344/

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