Cách tăng tốc hoạt động của GPU trên Linux, tối ưu hóa hiệu suất phần cứng

Vi xử lý của các máy tính hiện đại thường đủ mạnh để làm việc mượt mà với mọi loại nội dung. Tuy nhiên, một số tác vụ có thể tạo ra tải cao hơn cho vi xử lý — chẳng hạn như khi bạn xem video.
Tuy vậy, việc phát video thường vẫn mượt mà vì các dịch vụ streaming tự động giảm chất lượng video nếu kết nối internet không đủ nhanh hoặc hiệu suất của PC không đủ mạnh.
Tuy nhiên, việc giảm tải cho CPU là điều hợp lý vì nó giúp giảm mức tiêu thụ năng lượng và kéo dài thời gian sử dụng pin trên các laptop.
Đơn vị xử lý đồ họa (GPU) của PC có thể nằm trong vi xử lý chính, trong một chip đồ họa riêng biệt, hoặc trên một card đồ họa chuyên dụng. GPU thường không có nhiều công việc ngoài việc hiển thị màn hình desktop. Tuy nhiên, chip đồ họa thường mạnh mẽ hơn CPU khi nói đến việc phát (giải mã) video.
GPU cũng có thể hỗ trợ khi chuyển đổi video sang các định dạng khác (mã hóa). Điều này giúp giảm tổng mức tiêu thụ năng lượng, phát video ở chất lượng cao hơn hoặc chuyển đổi video nhanh hơn.
1. Sự sử dụng GPU trên Linux
Việc phần cứng tăng tốc có thể được tận dụng bởi chip đồ họa hay không, và cách thức như thế nào, phụ thuộc vào một số yếu tố trên Linux:
- Mô hình của chip đồ họa và khả năng của nó
- Trình điều khiển (driver) được sử dụng
- Giao thức hiển thị (X11 hoặc Wayland)
- Phần mềm tương ứng (trình duyệt, trình phát video, phần mềm chỉnh sửa video)
Cũng có một số giao diện cho các lĩnh vực ứng dụng khác nhau có thể được sử dụng để tăng tốc phần cứng:
- Vulkan chủ yếu được sử dụng bởi các trò chơi và cũng có thể được sử dụng khi phát video.
- Open GL là phiên bản tiền nhiệm của Vulkan và hỗ trợ đồ họa vector 2D/3D trên desktop và trong các trò chơi.
- Vdpau cung cấp tăng tốc phần cứng cho việc phát video, đến từ Nvidia và cũng được hỗ trợ bởi trình điều khiển đồ họa AMD.
- CUDA là một giao diện lập trình (API) của Nvidia, cho phép các phần chương trình có thể được xử lý bởi bộ xử lý đồ họa (GPU). API này được sử dụng trong các ứng dụng AI, khi phát (NVDEC) và chuyển đổi (NVENC) video.
- VA-API là một giao diện để giải mã và mã hóa video với GPU của AMD và Intel.
- Quick Sync Video là tên gọi của tính năng tăng tốc phần cứng của GPU Intel, được truy cập qua VA-API.
Các trình phát media thường tự động nhận diện các giao diện có sẵn và sử dụng tăng tốc phần cứng mặc định. Tuy nhiên, các trình duyệt web thường không cung cấp chức năng này với các chip đồ họa thông dụng.
Các chip đồ họa hiện tại cung cấp tăng tốc phần cứng cho việc phát video với các codec H264 (AVCHD), H265 (HEVC) và VP9. Điều này có nghĩa là bạn đã được trang bị đầy đủ, vì chẳng hạn YouTube thường sử dụng H264 hoặc VP9.
Bạn có thể tìm hiểu khả năng của các chip đồ họa từ Nvidia, Intel và AMD.
Trong tương lai gần, YouTube sẽ ngày càng chuyển sang sử dụng codec AV1 miễn phí bản quyền, phiên bản cải tiến của VP9. Netflix cũng sẽ sử dụng AV1 trong tương lai.
Tuy nhiên, chỉ những chip đồ họa mới như Intel Tiger Lake (thế hệ thứ 11) hoặc Nvidia GeForce từ RTX 2050 trở lên mới hỗ trợ tăng tốc phần cứng (giải mã) cho AV1. Nếu bạn muốn sử dụng bộ mã hóa AV1 để chuyển đổi video, bạn cần một card đồ họa từ GeForce RTX 4050, AMD Radeon RX 7000 hoặc Intel Arc.
Mặc dù chip đồ họa có thể hỗ trợ một định dạng, nhưng trình điều khiển và giao diện cũng phải tương thích. Ví dụ, VLC có thể sử dụng Vdpau để tăng tốc phần cứng nếu trình điều khiển Nvidia được cài đặt.
Tuy nhiên, các trình duyệt như Mozilla Firefox hoặc Google Chrome lại dựa vào VA-API, mà trình điều khiển Nvidia không hỗ trợ. Trình điều khiển phù hợp với VA-API (“nvidia-vaapi-driver”) chỉ chính thức có sẵn trong kho lưu trữ phân phối từ Ubuntu 23.04 trở đi. Hỗ trợ VA-API đã được tích hợp sẵn cho đồ họa Intel; các trình điều khiển AMD hỗ trợ VA-API và Vdpau.
Trình điều khiển mã nguồn mở Nouveau cho các chip Nvidia cũng hỗ trợ VA-API và VDPAU, nhưng chỉ dành cho các chipset cũ như GeForce 700 hoặc 600.