Sprzętowy koder i dekoder
Procesory graficzne NVIDIA zawierają jeden lub więcej sprzętowych koderów i dekoderów (niezależnych od rdzeni CUDA), które zapewniają sprzętową akcelerację kodowania i dekodowania wideo dla kilku popularnych kodeków. Po odciążeniu dekodowania/kodowania silnik graficzny i CPU są zwolnione do innych zadań.
Usługa NVIDIA GeForce Now działa dzięki wykorzystaniu NVENC w centrum danych i strumieniowemu przesyłaniu wyników do klientów końcowych
Silniki akceleratorów sprzętowych GPU do dekodowania wideo (określane jako NVDEC) i kodowania wideo (określane jako NVENC) obsługują przetwarzanie wideo szybciej niż wyświetlanie wideo w czasie rzeczywistym, co czyni je odpowiednimi do stosowania w aplikacjach do transkodowania, oprócz odtwarzania wideo. Najnowsza architektura procesorów graficznych NVIDIA Ada obsługuje do 3x NVENC. Video Codec SDK 12.0 obsługuje równomierne rozłożenie obciążenia na wiele koderów, umożliwiając kodowanie w czasie rzeczywistym 8k60 dla formatów AV1 i HEVC.
Więcej o SDK dla kodeków wideo
NVENC — kodowanie wideo z akceleracją sprzętową
Kodowanie AV1 za pomocą Video Codec SDK 12.0 w architekturze Ada firmy NVIDIA.
AV1 to najnowocześniejszy format kodowania wideo, który obsługuje wyższą jakość i lepszą wydajność w porównaniu z H.264 i HEVC. W Adzie wiele NVENC w połączeniu z AV1 umożliwia kodowanie wideo 8K przy 60 klatkach na sekundę przy większej liczbie jednoczesnych sesji. Dzięki pełnemu kodowaniu (które jest złożone obliczeniowo) przeniesionemu do NVENC, silnik graficzny i CPU są wolne do innych operacji. Na przykład w scenariuszu nagrywania i przesyłania strumieniowego gier, takim jak przesyłanie strumieniowe do Twitch.tv przy użyciu oprogramowania Open Broadcaster Software (OBS), całkowite przeniesienie kodowania do NVENC sprawia, że przepustowość silnika graficznego jest w pełni dostępna do renderowania scen w grach.
NVENC umożliwia przesyłanie strumieniowe aplikacji w wysokiej jakości i bardzo niskich opóźnieniach bez użycia CPU, kodowanie w bardzo wysokiej jakości na potrzeby archiwizacji, przesyłania strumieniowego OTT, filmów poprzez internet i kodowania przy bardzo niskim zużyciu energii na strumień (W/strumień)
NVDEC — dekodowanie wideo z akceleracją sprzętową
Procesory graficzne NVIDIA zawierają sprzętowy dekoder (określany jako NVDEC), który zapewnia akcelerację sprzętową dekodowania wideo dla kilku popularnych kodeków. Dzięki całkowitemu przeniesieniu dekodowania do NVDEC silnik graficzny i CPU są wolne dla innych operacji. NVDEC obsługuje znacznie szybsze niż dekodowanie w czasie rzeczywistym, co czyni go odpowiednim do zastosowań transkodujących, oprócz aplikacji do odtwarzania wideo.
NVDECODE API umożliwia programistom konfigurowanie tego dedykowanego, sprzętowego dekodera wideo. Obsługuje on przyspieszane sprzętowo dekodowanie następujących kodeków wideo na platformach Windows i Linux: MPEG-2, VC-1, H.264 (AVCHD), H.265 (HEVC), VP8, VP9 i AV1.
Sprzętowe wsparcie dekodowania za pomocą karty H100
NVDEC dla DL (deep learning)
H100, w porównaniu do A100, znacznie poprawia możliwości dekodowania wideo. Na platformie DL wejściowe wideo jest kompresowane w dowolnym standardzie branżowym, takim jak H264 / HEVC / VP9 itp. Jednym z istotnych wyzwań związanych z osiągnięciem wysokiej przepustowości typu end-to-end na platformie DL jest możliwość zrównoważenia wydajności dekodowania wideo z wydajnością uczenia i wnioskowania. W przeciwnym razie nie można wykorzystać pełnej wydajności DL procesora graficznego. H100 zapewnia znaczną poprawę przepustowości dekodowania, obsługując osiem (8) jednostek NVDEC (NVida DECOde), w porównaniu z pięcioma (5) jednostkami NVDEC w A100. Zapewnia to również, że podczas operacji MIG każda z instancji MIG może otrzymać co najmniej jedną jednostkę NVDEC.
Strumienie #1080p30 | Dekodowanie HEVC | Dekodowanie H264 | Dekodowanie VP9 |
H100 | 340 | 170 | 260 |
A100 | 157 | 75 | 108 |
Porównanie liczby strumieni podczas dekodowania wideo na kartach A100 i H100
Dekodowanie NVJPG (JPEG)
Jednym z podstawowych wąskich gardeł w osiąganiu wysokiej przepustowości uczenia DL i wnioskowania dla obrazów jest proces dekodowania obrazów JPEG (skompresowany -> raw). CPU i GPU nie są zbyt wydajne w przypadku dekodowania JPEG ze względu na operacje szeregowe używane do przetwarzania bitów obrazu. Ponadto, jeśli dekodowanie JPEG odbywa się w CPU, kolejnym wąskim gardłem staje się szyna PCIe. H100 zawiera osiem sprzętowych jednordzeniowych silników NVJPG, które przyspieszają dekodowanie JPEG, w porównaniu do jednego 5-rdzeniowego silnika w A100.
Najważniejsze cechy silnika H100 NVJPG:
Obrazy/s w rozdzielczości 1080p | Dekodowanie JPEG 444 | Dekodowanie JPEG 420 |
H100 | 3310 | 6350 |
A100 | 1490 | 2950 |
Wydajność dekodowania NVJPG
* Dla powyższej przepustowości JPEG przyjęto współczynnik kompresji 10:1
** Powyższa przepustowość przy założeniu rozdzielczości 1080p. Przy mniejszych rozdzielczościach, takich jak 224×224, przepustowość obrazu JPEG może być ~30-40% niższa niż pokazano powyżej
NVIDIA udostępnia bibliotekę ładowania danych (DALI), która zarządza akceleracją sprzętową potoków obrazów lub wideo poprzez automatyczne wywołanie funkcji NVJPG / NVDEC. Oferuje programistom AI łatwy sposób na używanie sprzętowych silników obrazu / wideo w obciążeniach DL. Pozwala także na tworzenie niestandardowych potoków za pomocą elastycznych grafów. Szczegółowy opis i instrukcja obsługi DALI jest dostępna na stronie https://docs.nvidia.com/deeplearning/dali/user-guide/docs/. Bibliotekę DALI można pobrać ze strony https://github.com/NVIDIA/DALI.