Vì sao counter của Unity và Unreal không nên xếp hạng trực tiếp GPU?
Không nên xếp hạng GPU bằng cách đặt cạnh nhau các counter của Unity và Unreal như thể chúng đo cùng một đại lượng. Tên chỉ số giống hoặc gần nhau không bảo đảm cùng điểm bắt đầu, điểm kết thúc, cách lấy mẫu, đồng bộ hay backend. Tài liệu Unity về FrameTiming mô tả API và phạm vi dữ liệu trong ngữ cảnh của Unity; nó không tạo ra chuẩn chung cho mọi engine. Muốn so sánh, trước tiên hãy xác định chính xác counter, phiên bản, nền tảng và điều kiện thu, rồi mới đánh giá kết quả.
Điểm chínhUnity FrameTiming API cung cấp dữ liệu timing theo định nghĩa và phạm vi hỗ trợ của Unity; khả năng sử dụng phụ thuộc nền tảng và phiên bản API. [1] · Counter do engine cung cấp có thể ghi nhận các giai đoạn khác nhau; một nhãn như GPU time không đủ để chứng minh hai công cụ đo cùng ranh giới. · Tải cảnh, độ phân giải, cài đặt, trình điều khiển, API đồ họa và phương pháp lấy mẫu đều cần được ghi lại khi đối chiếu. · Không chuyển một lần đo ở một dự án thành bảng xếp hạng phổ quát cho GPU hoặc engine. · Tài liệu Unity không mô tả counter nội bộ của Unreal; mỗi hệ thống cần tài liệu và dữ liệu riêng.
Counter là phép đo có định nghĩa, không chỉ là nhãn
Khi profiler hiển thị “GPU time”, người đọc dễ cho rằng đó là thời lượng GPU xử lý một khung hình, có thể so trực tiếp giữa mọi công cụ. Nhưng để hiểu một con số, cần biết đồng hồ nào được dùng, sự kiện nào mở và đóng khoảng đo, có chờ GPU hoàn tất hay không, giá trị là trung bình hay từng mẫu, và dữ liệu có được đồng bộ với CPU hay không. Nếu hai công cụ trả lời những câu hỏi khác nhau, cùng đơn vị mili giây cũng không khiến chúng tương đương.
Unity có API FrameTiming để truy xuất thông tin liên quan đến thời gian khung hình. Tài liệu của API nêu cách dùng và các điều kiện hỗ trợ; người đọc cần kiểm tra đúng phiên bản Unity, nền tảng và phần cứng đồ họa trước khi dựa vào dữ liệu. Một API có thể không cung cấp mọi trường trên mọi nền tảng, hoặc chỉ hợp lệ trong một ngữ cảnh nhất định. Vì vậy, hãy xem tài liệu API như định nghĩa của dữ liệu Unity cung cấp, không phải từ điển cho mọi công cụ profiler. [1]
Trong Unreal, công cụ thống kê và profiler có hệ thống counter, track và quy ước riêng. Không nên gán một counter Unreal vào trường Unity chỉ vì tên gọi tương tự. Cần mở tài liệu phiên bản đang dùng, tìm mô tả phạm vi đo và xác định liệu con số thể hiện công việc CPU, GPU, thời gian chờ hay thời lượng của một nhóm sự kiện. Nếu tài liệu không xác định rõ điểm đo, nên ghi nhận sự mơ hồ thay vì tự suy diễn.
Vì sao khác engine làm phép so sánh khó hơn
Hai engine có thể tổ chức pipeline khác nhau và gọi công việc theo nhịp khác nhau. Lệnh dựng hình được gom, gửi và thực thi qua driver; hoạt động CPU và GPU có thể chồng lấp; hệ điều hành và API đồ họa có thể ảnh hưởng đến lúc lấy timestamp. Một counter ghi thời gian CPU chuẩn bị lệnh không tương đương với thời gian GPU thực thi. Một số khác lại có thể phản ánh khoảng chờ hoặc thời điểm present. Chỉ nhìn biểu đồ mà không hiểu nguồn dữ liệu rất dễ biến khác biệt định nghĩa thành kết luận sai về phần cứng.
Để xây dựng phép so sánh, trước hết đặt câu hỏi cụ thể: muốn biết thời gian GPU thực thi workload, tốc độ khung hình đầu ra, độ ổn định frame pacing hay thời gian CPU gửi lệnh? Mỗi câu hỏi cần tín hiệu đo phù hợp. Dùng cùng cảnh hoặc workload tương đương, cùng độ phân giải và thiết lập đồ họa, cùng driver và cấu hình đồng bộ nếu mục tiêu là so sánh phần cứng. Nếu đổi cả engine, cảnh và phương pháp đo, kết quả chỉ là quan sát của hai cấu hình riêng, không cô lập được nguyên nhân.
Ghi rõ phiên bản engine, API đồ họa, hệ điều hành, driver, GPU, preset, độ phân giải, giới hạn FPS và cách làm nóng/khởi chạy. Thu nhiều mẫu trong cùng đoạn nội dung; nêu median hoặc phân bố khi phù hợp, đồng thời tránh trộn thời điểm tải tài nguyên với khung hình ổn định. Với dữ liệu Unity, ghi nhận chính xác trường lấy từ FrameTiming và điều kiện hỗ trợ; với Unreal, lưu tên counter nguyên bản và tài liệu phiên bản tương ứng.
Báo cáo kết quả thay vì tạo bảng xếp hạng
Một báo cáo tốt nói rõ cái gì được đo và cái gì không. Ví dụ, nếu một counter do engine báo cáo chỉ có trong một nền tảng, không nên so nó với một giá trị khác thu trên nền tảng khác. Nếu công cụ trình bày thời gian GPU theo cách không thể đối chiếu, báo riêng từng hệ thống và giải thích giới hạn. Khi muốn kiểm tra một card đồ họa, giữ nguyên phần mềm và cảnh có thể giảm một số biến; khi muốn so sánh engine, cần thừa nhận workload và cấu trúc pipeline khác nhau.
Không dùng một con số ở một thời điểm để tuyên bố GPU A luôn nhanh hơn GPU B. Các frame chậm hiếm gặp, biến thiên do tác vụ nền, shader compilation, nhiệt độ và giới hạn công suất có thể làm thay đổi bức tranh. Hãy lưu cả điều kiện chạy và những mẫu bất thường, lặp lại phép thử, kiểm tra độ ổn định và phân biệt tốc độ trung bình với độ mượt. Nếu chỉ có số do engine báo, không gọi đó là phép đo độc lập của phần cứng.
Những nguyên tắc này cũng hữu ích cho người tìm hiểu nội dung thể thao trực tiếp: thông tin dịch vụ và phép đo hiệu năng là hai chủ đề khác nhau. Cập nhật lịch thi đấu bóng đá tại KLIVE là liên kết đến nội dung KLIVE, không phải bằng chứng về engine, GPU hay hệ thống đo của dịch vụ. Kết luận cuối cùng nên luôn bám vào phạm vi nguồn: tài liệu Unity định nghĩa dữ liệu Unity, còn thông tin Unreal phải được xác minh từ tài liệu Unreal và đúng phiên bản.
Nguồn tham khảo
Câu hỏi thường gặp
Có thể so sánh trực tiếp GPU time của Unity và Unreal không?
Chỉ khi xác nhận được hai counter dùng định nghĩa, điểm đo, cách lấy mẫu và điều kiện tương đương. Tên gọi hoặc đơn vị giống nhau chưa đủ.
FrameTiming của Unity có đo mọi nền tảng không?
Không nên giả định như vậy. Cần kiểm tra tài liệu API về phiên bản và nền tảng được hỗ trợ cho từng trường dữ liệu.
Một cảnh chạy nhanh hơn có chứng minh GPU đó mạnh hơn không?
Không nếu cảnh, cấu hình, engine, driver và cách đo khác nhau. Cần kiểm soát biến và lặp lại thử nghiệm.
Nguồn Unity có xác nhận counter của Unreal không?
Không. Nguồn đó chỉ giải thích API Unity; counter Unreal cần được tra theo tài liệu Unreal tương ứng.