Địa phương của tài liệu tham khảo có vấn đề, nhưng bạn không phải lo lắng nhiều như vậy ... bởi vì bạn không có quyền kiểm soát tuyệt đối.
Khi sử dụng OpenGL / DirectX bạn thường bị hạn chế kiểm soát bố cục bộ nhớ, trình điều khiển sẽ làm phần còn lại. Ví dụ: bạn có thể thử bố trí nhiều bộ đệm đỉnh, chẳng hạn như sử dụng dữ liệu đỉnh xen kẽ hoặc không xen kẽ và tùy thuộc vào hiệu suất dữ liệu / trình điều khiển / GPU của bạn sẽ khác nhau. Hồ sơ và chọn những gì phù hợp nhất với ứng dụng của bạn.
Ví dụ, trong tối ưu hóa Đường ống GPU Gems, địa phương tham chiếu được đề cập hai lần , lần đầu tiên:
Truy cập dữ liệu đỉnh theo cách tương đối tuần tự. Bộ nhớ cache GPU hiện đại truy cập khi tìm nạp các đỉnh. Như trong bất kỳ hệ thống phân cấp bộ nhớ nào, địa phương tham chiếu không gian giúp tối đa hóa các lần truy cập trong bộ đệm, do đó giảm yêu cầu băng thông.
Va thu hai
Tối ưu hóa cho bộ đệm đỉnh sau T & L. Các GPU hiện đại có bộ đệm nhỏ vào trước, ra trước (FIFO) nhỏ lưu trữ kết quả của các đỉnh được chuyển đổi gần đây nhất; một lần nhấn trong bộ đệm này lưu tất cả công việc biến đổi và ánh sáng, cùng với tất cả các công việc được thực hiện trước đó trong đường ống. Để tận dụng bộ đệm này, bạn phải sử dụng các nguyên hàm được lập chỉ mục và bạn phải sắp xếp các đỉnh của mình để tối đa hóa vị trí tham chiếu qua lưới. Có những công cụ có sẵn, bao gồm D3DX và NVTriStrip (NVIDIA 2003) có thể giúp bạn thực hiện công việc này.
Theo tôi, những đề xuất đó tuân theo những gì tôi đã nói và ngụ ý rằng bạn không có quyền kiểm soát tuyệt đối đối với bố cục bộ nhớ, nhưng những gì bạn có quyền kiểm soát, ví dụ như cách mỗi đỉnh VBO được đặt ra có thể ảnh hưởng đến hiệu suất.
Nếu ứng dụng của bạn gặp sự cố về hiệu năng, trước tiên bạn nên phát hiện nút cổ chai, đó có thể không phải là vấn đề về địa phương dữ liệu tham chiếu, nhưng có thể là do có lượng dữ liệu khổng lồ không bị loại bỏ, ví dụ như bạn không thực hiện loại bỏ sự thất vọng .. vv Bạn có thể kiểm tra câu trả lời của tôi ở đây về chủ đề này.
Tôi nghĩ bạn nên lo lắng nhiều hơn về địa phương tham chiếu khi sử dụng OpenCL / CUDA vì bạn thường kiểm soát tuyệt đối bố cục bộ nhớ.