0
我想從主機到CUDA中的設備複製結構數組。例如:CUDA中從主機到設備的結構數組複製
#define N 1000;
#define M 100000;
typedef struct {
int i;
float L[N];
}t ;
__global__ void kernel() {
//do something
}
main() {
t *B, *B_d; // Pointer to host & device arrays of structure
int size = M * sizeof(t);
B=(t*)calloc(M,sizeof(t));
cudaMalloc((void **) &B_d, size); // Allocate array of structure on device
// readind B from file ...
cudaMemcpy(B_d, B, size, cudaMemcpyHostToDevice);
kernel<<<1, 1 >>>();
}
這是正確與否?我怎樣才能使用內核功能?
1 - 我可以將B_d傳遞給類型(t *)的內核而不是B嗎? 2 - 我怎樣才能使聯合閱讀? – user1285050
您應該將指針傳遞給GPU內存(即B-d)。要執行合併內存訪問以獲得最佳GPU內存性能,您應該從結構陣列切換到由數組組成的結構(例如,其字段爲原始陣列)。請注意,此類結構構件應該正確對齊。 – Eugene