2011-12-07 21 views
7

Có các thư viện chuẩn của các chức năng đổ bóng, chẳng hạn như đối với Cg. Nhưng có những tài nguyên cho bạn biết phải mất bao lâu ... Tôi nghĩ tương tự như cách bạn sử dụng để có thể tra cứu bao nhiêu chu kỳ mà mỗi ASM op sẽ thực hiện.Hiệu suất của các chức năng CG/GLSL/HLSL khác nhau

+2

Nó thay đổi từ thiết bị đến thiết bị – Flexo

+0

Tôi đoán, ngày nay quan trọng hơn là bạn có thể tải bao nhiêu bộ vi xử lý. Nếu bạn thiết lập một shader nặng với kết cấu phụ thuộc lần đọc, bạn sẽ nhận được các quầy hàng và chờ đợi và những thứ khó chịu khác. "Số chu kỳ" thuần túy sẽ không giúp ích trong trường hợp này. – Lyth

+0

Cả hai đều đúng - nhưng một số ý tưởng sẽ vẫn hữu ích như một điểm khởi đầu. Ví dụ các hàm toán học/hình học ... cách phân chia so sánh với cos, hoặc cos so với acos, hoặc sqrt so với tân ... –

Trả lời

11

Không có đáng tin cậy tài nguyên sẽ cho bạn biết các chức năng shader tiêu chuẩn khác nhau mất bao lâu. Thậm chí không cho một phần cụ thể của phần cứng.

Lý do cho việc này liên quan đến lập lịch trình hướng dẫn và cách các kiến ​​trúc shader hiện đại hoạt động. Lấy hàm sin đơn giản. Giả sử rằng phần cứng có phần cứng đặc biệt để tính sin của một giá trị, vì vậy nó không được sử dụng một cách thủ công một chuỗi Tailor hoặc một cái gì đó. Tuy nhiên, chúng ta hãy nói rằng phải mất một chuỗi 4 opcodes để tính toán nó. Do đó, sin sẽ mất "4 chu kỳ".

Tuy nhiên, tất cả các opcodes đó là hoạt động vô hướng. Do đó, trong khi chúng đang diễn ra, trên thực tế bạn có thể có một số sản phẩm có 3 điểm vectơ, hoặc trong trường hợp một số phần cứng, 4-vector dot-products sẽ xuất hiện cùng một lúc, trên cùng một bộ xử lý. Do đó, nếu phần cứng có 4-vector dot-products với các phép toán vô hướng, số chu kỳ cần để thực hiện một sin và một ma trận-vector nhân là ... vẫn còn 4.

Vậy hoạt động sin là bao nhiêu Giá cả? Nếu bạn lấy ma trận nhân lên, không có gì nhanh hơn. Nếu bạn lấy ra các sin, không có gì vẫn được nhanh hơn. Chi phí là bao nhiêu? Bạn không thể nói, bởi vì chi phí của một hoạt động đơn lẻ là không liên quan; số lượng có thể đo lường duy nhất là chi phí của bóng đổ chính nó.

Cuối cùng, tất cả những gì bạn có thể làm là cố gắng xây dựng trình đổ bóng của bạn một cách hợp lý và xem hiệu suất là gì. Trừ khi bạn có các công cụ gỡ lỗi mức thấp để loại bỏ lắp ráp shader cơ bản (và không, assembly DX không đủ tốt), đó thực sự là điều tốt nhất bạn có thể làm.

Các vấn đề liên quan