Trình biên dịch Shader cực kỳ tích cực về việc không kiểm soát do CTNH ban đầu thường không có kiểm soát dòng chảy và chi phí cho các CTNH gần đây có thể thay đổi. Nếu bạn có một điểm chuẩn mà bạn đang tích cực kiểm tra và một loạt các phần cứng có liên quan, thì hãy thử mọi thứ để xem điều gì sẽ xảy ra. Vòng lặp động của bạn phù hợp với sự can thiệp của nhà phát triển hơn là vòng lặp tĩnh - nhưng để nó cho trình biên dịch vẫn là lời khuyên tốt trừ khi bạn có sẵn điểm chuẩn. Với một điểm chuẩn, khám phá là đáng giá (và vui vẻ).
BTW, tổn thất lớn nhất với vòng lặp động trên GPU là các "luồng" riêng lẻ trong mặt sóng / sợi dọc sẽ kết thúc vào các thời điểm khác nhau. Các luồng dừng lại sau đó buộc tất cả các chuỗi kết thúc sớm để thực hiện NOP.
Các vòng lặp lồng nhau nên được suy nghĩ cẩn thận thông qua: Tôi đã triển khai một bộ giải mã entropy dựa trên khối mã hóa các chuỗi số không (đối với JPEG như nén). Việc thực hiện tự nhiên là giải mã các bước chạy trong một vòng lặp bên trong chặt chẽ - điều này thường có nghĩa là chỉ có một luồng đang tiến triển; bằng cách làm phẳng vòng lặp và kiểm tra rõ ràng trong từng luồng nếu nó hiện đang giải mã một lần chạy hay không, tôi giữ cho tất cả các luồng hoạt động thông qua vòng lặp có độ dài cố định (các khối được giải mã đều có cùng kích thước). Nếu các luồng giống như các luồng CPU, thì sự thay đổi sẽ rất tệ, nhưng trên GPU tôi đang chạy, tôi đã tăng hiệu suất gấp 6 lần (vẫn còn khủng khiếp - không có đủ khối để giữ GPU bận rộn - nhưng đó là một bằng chứng về khái niệm).