Là địa phương tham chiếu GPU đáng lo ngại?


9

Liệu địa phương của tài liệu tham khảo có tạo ra nhiều sự khác biệt đối với hiệu suất GPU như hiệu năng của CPU không?

Ví dụ: nếu tôi gửi 200 lệnh vẽ cho GPU, tôi sẽ thấy sự khác biệt đáng chú ý (có khả năng) nếu dữ liệu cho mỗi lệnh nằm liền kề trong bộ nhớ thay vì nhảy xung quanh bộ đệm / bản đồ kết cấu?

Câu hỏi phụ: Tôi cho rằng GPU đảm bảo chống lại các vấn đề chia sẻ sai bằng cách có hầu hết các tài nguyên không thay đổi. Nhưng trong trường hợp họ không, đó có phải là lý do tại sao các chủ đề luôn làm công việc đáng giá bốn mảnh?

Câu trả lời:


10

Đị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ớ.


3

Ban đầu, GPU chỉ được sử dụng cho các ứng dụng đa phương tiện cho thấy ít sử dụng lại dữ liệu. Khi GPU ngày càng được sử dụng cho các ứng dụng đa năng (do đó, thuật ngữ GPGPU), giờ đây chúng có các bộ nhớ cache được quản lý phần cứng kích thước lớn, ví dụ, GPU Fermi có bộ nhớ cache cấp độ cuối KB KB, GPU Kepler có 1536 KB bộ đệm cấp độ cuối và GPU Maxwell có bộ đệm cấp độ 2048 KB. Điều này, cùng với một lượng lớn nghiên cứu về bộ nhớ GPU cho thấy rằng địa phương dữ liệu chắc chắn rất quan trọng đối với GPU. Xem bài khảo sát của tôi để biết chi tiết và tham khảo cho ở trên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.