- Các ngôn ngữ lập trình bậc cao và trình biên dịch hiện đại giúp đơn giản hóa đáng kể việc phát triển phần mềm và giảm chi phí, nhưng cũng có xu hướng che giấu các khả năng hiệu năng của phần cứng hiện đại do sự kém hiệu quả của API
- Theo các nhà phát triển FFmpeg, việc dùng mã assembly có thể cải thiện hiệu năng từ 3 lần đến 94 lần tùy theo khối lượng công việc
- Để tăng tốc một số chức năng cụ thể trong FFmpeg, họ đã tạo ra các đường mã được tối ưu bằng tập lệnh AVX-512, và đạt hiệu năng nhanh hơn rất nhiều so với triển khai tiêu chuẩn
- AVX-512 sử dụng các thanh ghi 512-bit để xử lý 16 FLOP đơn chính xác hoặc 8 FLOP kép chính xác trong một phép toán, cho phép xử lý song song lượng lớn dữ liệu
- Theo kết quả benchmark, đường mã AVX-512 viết tay mới nhanh hơn đáng kể so với mã C cơ sở và các triển khai khác dùng các tập lệnh SIMD thấp hơn như AVX2 và SSE3
- Bản phát triển này đặc biệt hữu ích với người dùng chạy trên phần cứng hỗ trợ AVX-512, giúp xử lý nội dung media hiệu quả hơn nhiều
- Tuy nhiên, Intel đã vô hiệu hóa AVX-512 trên các bộ xử lý Core thế hệ 12, 13 và 14, khiến chủ sở hữu các CPU này không thể sử dụng tính năng đó
- Ngược lại, CPU AMD Ryzen 9000 series có FPU AVX-512 được kích hoạt đầy đủ, nên người dùng các bộ xử lý này có thể tận dụng thành quả của FFmpeg
- Đáng tiếc là do tính phức tạp và chuyên biệt của AVX-512, các tối ưu hóa kiểu này thường chỉ giới hạn ở những ứng dụng mà hiệu năng là yếu tố sống còn, đồng thời đòi hỏi chuyên môn về lập trình mức thấp và vi kiến trúc bộ xử lý
(Nội dung này được lấy từ bài viết của Tom's Hardware: FFmpeg devs boast of up to 94x performance boost after implementing handwritten AVX-512 assembly code)
6 bình luận
Tôi từng có chút kinh nghiệm làm công việc liên quan trước đây, nên xin nói rằng con số 94 trước hết là câu kéo. Như đã được nêu trong phần bình luận, sự khác biệt hiệu năng lớn xuất phát từ khác biệt giữa mã scalar và mã vector. Tuy nhiên, hầu hết các codec thương mại đều tối ưu hóa bằng cách viết mã assembly. Câu nói "phần lớn mã C được biên dịch thành mã assembly tối ưu" đúng là không sai, nhưng để phát triển sản phẩm thương mại thì phải vượt lên trên mức "phần lớn" đó. Đặc biệt ở phía embedded, điều này còn quan trọng hơn.
Ý kiến trên Hacker News
Lỗ hổng mới của Intel Downfall AVX2/AVX-512 và tác động hiệu năng rất lớn do nó gây ra
https://tuxcare.com/ko/blog/…
À, hóa ra đây là lý do Intel loại bỏ AVX-512.
Theo tôi biết thì lý do là do E-core không hỗ trợ AVX-512, nên đã bị chặn bằng phần mềm.
P-core trước đây từng hỗ trợ AVX-512 một cách không chính thức.
Ra vậy. Cảm ơn bạn đã cho biết :)