Tôi nhận thức được phân bổ động khi sử dụng mảng 1D, nhưng làm thế nào nó có thể được thực hiện khi các mảng 2D được sử dụng?Phân bổ động bộ nhớ chia sẻ GPU 2D
myKernel<<<blocks, threads,sizeofSharedMemoryinBytes>>>();
....
__global__ void myKernerl(){
__shared__ float sData[][];
.....
}
Nói rằng tôi muốn phân bổ một mảng bộ nhớ chia sẻ 2D:
__shared__ float sData[32][32];
Làm thế nào nó có thể được thực hiện tự động? sẽ là:
myKernel<<< blocks, threads, sizeof(float)*32*32 >>>();
"mảng bộ nhớ 2D chia sẻ" tĩnh tuyên bố của bạn không phải là hai chiều, nó chỉ là bộ nhớ tuyến tính và trình biên dịch tạo ra hàng-chủ yếu truy cập để nó. Dựa trên số câu hỏi vô tận của bạn về mảng đa chiều, có lẽ đã đến lúc ngồi xuống với một số tài liệu tham khảo và tìm hiểu về cách mảng hoạt động trong C++ .. – talonmies