Khi tôi ràng buộc một mảng tới một kết cấu trong CUDA,CUDA bộ nhớ kết cấu không gian
- là mảng bản sao đến một không gian kết cấu? hoặc,
- là tham chiếu mảng đó là kết cấu?
Nếu câu trả lời là 1., sau đó tôi có thể ràng buộc kết cấu và dữ liệu tìm nạp an toàn từ không gian bộ nhớ kết cấu trong khi tôi ghi kết quả vào mảng được cấp phát trong bộ nhớ chung.
Nếu câu trả lời là 2., thì, bộ nhớ kết cấu là không gian bộ nhớ toàn cục, nơi dữ liệu được lưu trong bộ nhớ cache và tìm nạp không gian?
Tôi muốn biết về chủ đề này, vì tôi đã thấy một số câu hỏi liên quan đến chủ đề này và tôi không có câu trả lời rõ ràng ngay bây giờ.
Xin cảm ơn trước.
Câu trả lời tuyệt vời :) Không có giấy tờ và tin đồn là những gì tôi muốn biết;) Vì vậy, nếu tôi viết vào mảng ban đầu và lấy dữ liệu từ kết cấu bị ràng buộc, hành vi là không xác định, phải không ?. Cảm ơn bạn. – pQB
Trong CUDA, kết cấu và mảng là mờ đục, chỉ đọc các đối tượng. Không được phép viết (thậm chí không có sự đảm bảo rằng bố cục kết cấu bên trong giống nhau giữa các phần cứng khác nhau). Nếu bạn có thẻ Fermi và đang sử dụng CUDA 3.2 hoặc mới hơn, bạn có thể sử dụng các bề mặt. [API bề mặt] (http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/docs/online/group__CUDART__SURFACE.html) cung cấp cả đọc và ghi vào "họa tiết", mặc dù không có bộ lọc hỗ trợ hiện tại, AFIAK. – talonmies
Trong lời gọi hạt nhân, bộ đệm kết cấu không duy trì sự kết hợp với bộ nhớ bộ nhớ cơ bản toàn cầu, xem phần 3.2.10.4 của Hướng dẫn lập trình. Các kết cấu 2D sử dụng bộ lọc không nhất thiết phải được ràng buộc với một cudaArray mờ đục, chúng cũng có thể bị ràng buộc với bộ nhớ tuyến tính được phân bổ với cudaMallocPitch(). – njuffa