【问题标题】:How to copy user-defined types by OpenACC如何通过 OpenACC 复制用户定义的类型
【发布时间】:2016-01-15 11:14:34
【问题描述】:

我正在使用 PGI 15.7 编译器。我想知道如何通过 OpenACC 将定义的结构从 CPU 复制到 GPU。

typedef struct str_
{
  int n;       
  int m;      
  int* col;    // size [n*m]
  double* val; // size [n*m]
}str;

非常感谢。

【问题讨论】:

  • 只有其中一个还是一组?
  • 这是一个数组结构;这两个分配的数组只有一个结构。

标签: memory struct openacc


【解决方案1】:

“深度复制”是我们试图在 3.0 规范中解决的一项功能。不过,今天以下内容应该对您有用。

#pragma acc enter data copyin(str)
#pragma acc enter data copyin(str.col[:n*m],str.val[:n*m])

...

#pragma acc exit data copyout(str.col[:n*m],str.val[:n*m])
#pragma acc exit data delete(str)

这样做是将结构本身复制到设备,然后复制其中包含的数组。然后我在回来的路上做相反的事情。如果不需要移动数据,可以将copyin/copyout替换为create/delete。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 2016-02-23
    • 2021-07-31
    • 2023-03-29
    • 1970-01-01
    • 2016-01-19
    相关资源
    最近更新 更多