2015-10-16 57 views
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; 

非常感謝。

+0

是否只有其中之一或它們的數組? – jefflarkin

+0

這是一個數組的結構;只有一個具有這兩個分配數組的結構。 –

回答

0

「深度複製」是我們試圖在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。

相關問題