0
我正在使用PGI 15.7編譯器。我想知道如何通過OpenACC將定義的結構從CPU複製到GPU。如何通過OpenACC複製用戶定義的類型
typedef struct str_
{
int n;
int m;
int* col; // size [n*m]
double* val; // size [n*m]
}str;
非常感謝。
我正在使用PGI 15.7編譯器。我想知道如何通過OpenACC將定義的結構從CPU複製到GPU。如何通過OpenACC複製用戶定義的類型
typedef struct str_
{
int n;
int m;
int* col; // size [n*m]
double* val; // size [n*m]
}str;
非常感謝。
「深度複製」是我們試圖在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)
這是幹什麼複製結構本身到設備,然後複製其中包含的數組。然後我在返回的路上做相反的事情。如果您不需要移動數據,則可以使用create/delete替換copyin/copyout。
是否只有其中之一或它們的數組? – jefflarkin
這是一個數組的結構;只有一個具有這兩個分配數組的結構。 –