Tôi hiện đang làm việc trên một chương trình OpenGl có hiệu suất mà tôi muốn cải thiện. Hiệu suất ổn nhưng không lý tưởng trên các GPU chuyên dụng mạnh mẽ, nhưng lại rất tệ trên đồ họa tích hợp (<10 khung hình / giây). Trong một chương trình bình thường (dựa trên CPU, không có OpenGl hoặc API GPU khác), tôi sẽ chạy một trình lược tả (có lẽ là chương trình được tích hợp vào CLion) trên chương trình, xem phần lớn thời gian được sử dụng và sau đó làm việc với thuật toán tốt hơn cho các khu vực đó hoặc tìm cách giảm số tiền mà khu vực đó được gọi.
Sử dụng kỹ thuật này trên chương trình OpenGl của tôi cho thấy phần lớn thời gian của chương trình (~ 86%) trên luồng chính của nó (cái mà tôi muốn tối ưu hóa) được sử dụng trong tệp .so của trình điều khiển OpenGl. Ngoài ra, mức sử dụng CPU của chương trình trong khi nó đang chạy rất thấp, nhưng mức sử dụng GPU dao động trong khoảng từ 95% đến 100%. Kết hợp lại với nhau, những thông tin này cho tôi biết rằng nút cổ chai nằm trong GPU, vì vậy đó là nơi tôi nên tối ưu hóa.
Đây là một vấn đề xảy ra. Tuy nhiên, kỹ thuật bình thường của tôi là sử dụng trình lược tả để hướng dẫn tối ưu hóa của tôi sẽ không hoạt động nếu không có trình lược tả GPU cụ thể. Như vậy, tôi đã thực hiện một số nghiên cứu để tìm ra một hồ sơ sẽ cho tôi biết thời gian xử lý GPU đang được sử dụng. Tôi không thể tìm thấy bất cứ thứ gì có thể sử dụng từ xa. Mọi thứ đều chỉ dành cho Windows (Tôi chỉ chạy Linux và chương trình của tôi chưa được chuyển sang Windows - cũng sẽ không cho đến khi nó đi xa hơn), không còn được cập nhật và / hoặc chi phí cao hơn ngân sách cho Dự án này là.
Như vậy, tôi hỏi: làm thế nào tôi có thể tối ưu hóa hiệu suất của chương trình khi trình hồ sơ có liên quan không tồn tại? Tôi đã cố gắng đoán xem các vấn đề đang ở đâu và tối ưu hóa từ đó, tuy nhiên nó không có gì khác biệt mặc dù tôi có thể chắc chắn rằng việc tối ưu hóa của mình (loại bỏ sự thất vọng) đã làm cho GPU giảm một nửa công việc. Một câu trả lời tốt sẽ cung cấp một số kỹ thuật định hình có thể áp dụng cho Opengl trên Linux hoặc sẽ cung cấp một kỹ thuật hoạt động mà không cần trình lược tả.