如何在 OpenMP 4 中为 std::vector 编写"target data map"?

How to write "target data map" for std::vector in OpenMP 4?

本文关键字:target data map 编写 vector OpenMP 中为 std      更新时间:2023-10-16

我想使用C++和vectors。我有像这样创建的带有 C 数组的 C 代码:

double* data = (double*)malloc(sizeof(double) * n);
double* result = (double*)malloc(sizeof(double) * n);
#pragma omp target data map(tofrom: data[0:n],result[0:n])
//loop

现在我使用C++向量,我得到:

example.cpp:31:41: error: expected variable name or an array item
    #pragma omp target data map(tofrom: data[0:n],result[0:n])

在这里,他们说OpenMP4引入了用户定义的缩减。但是它有数据映射的类似物吗?

您始终可以获取std::vector底层存储的指针,然后以与 C 代码相同的方式使用它们。

double* data = vec_data.data();
double* result = vec_res.data();
int n = vec_data.size();
#pragma omp target data map(tofrom:data[0:n],result[0:n])
//loop