Tôi đang khám phá các thuật toán isosurface trên GPU cho dự án cử nhân (đặc biệt tập trung vào dữ liệu voxel nhị phân vào / ra thay vì các trường có giá trị thực). Vì vậy, tôi đã triển khai CPU cho các khối diễu hành cũ tốt và chạy trong OpenFrameworks, và bây giờ đang ở giai đoạn cố gắng chuyển nó sang các shader tính toán GLSL và xem xét các cạm bẫy trước khi tôi lặn. Tôi chỉ viết các shader và mảnh trước đây tất cả đều mới đối với tôi.
Vấn đề đầu tiên của tôi là làm thế nào để sử dụng hiệu quả một bảng tra cứu trên hàng chục hoặc hàng trăm luồng trong một nhóm làm việc? Tôi hiểu rằng GPU có các loại bộ nhớ khác nhau cho các tác vụ khác nhau nhưng không hoàn toàn chắc chắn về cách thức hoạt động của từng loại hoặc loại sử dụng.
Bảng copypasta cổ điển của Paul Bourke là một mảng 256 * 16, vì vậy nếu sử dụng kiểu byte vô hướng, điều này có thể được đóng gói vào kết cấu 4kb hoặc SSBO.
Câu hỏi là, làm thế nào để ngăn chặn các chủ đề khác nhau vấp ngã nhau? Nhiều khối trong mỗi nhóm công việc có khả năng có cùng cấu hình do đó cố gắng truy cập cùng một vị trí trong bộ đệm cùng một lúc. Có một cách giải quyết hoặc tối ưu hóa để giải quyết vấn đề này?