2. Antecedentes
2.4. Estado del arte en implementaciones de OpenHEVC en distintas plataformas
en distintas plataformas
En el Grupo de Diseño Electrónico y Microelectrónico (GDEM) [1] se ha traba- jado anteriormente con plataformas homogéneas o heterogéneas y con el software Open- HEVC.
En [18] investigadores del GDEM presentan una integración del conjunto de trans- formadas del estándar Future Video Coding (FVC), ahora conocido como Versatile Video Coding (VVC) [19], en OpenHEVC para su implementación en una plataforma homogé- nea que cuenta con un procesador multinúcleo DSP.
Respecto a plataformas heterogéneas, en [20], un grupo de investigadores del GDEM desarrollan el trabajo realizado para diseñar un conjunto de metodologías que se emplearán para utilizar el descodificador de vídeo RVC-HEVC sobre la plataforma EVMK2H, compuesta por 4 núcleos ARM y 8 núcleos DSP. En este trabajo se expone un estudio de la plataforma y de las Application Programming Interface o Interfaz de Programación de Aplicaciones (API) de OpenCL y OpenMP.
CAPÍTULO 2. ANTECEDENTES 11
Durante un periodo de prácticas del grado en Ingeniería Telemática en el GDEM, y junto con un grupo de ingestigadores se presentó un artículo [21] al International Con- ference On Consumer Electronics (ICCE) [22] donde se desarrolla una versión de Open- HEVC usando OpenMP [23]. En [21], la API de OpenMP se ha utilizado para realizar un cambio de la técnica de paralelización en OpenHEVC. OpenHEVC originalmente emplea pthreads[24] y para la sincronización entre el hilo de control y los hilos descodificado- res1se emplean un conjunto de cerrojos junto con varias variables de espera condicional. Esta nueva versión de OpenHEVC presenta una nueva alternativa en la cual los hilos des- codificadores son creados por un hilomaster2 pero empleando la filosofíafork-join. Las esperas pasivas son sustituidas por esperas activas y los tipos de cerrojos ahora son los definidos por OpenMP.
2.5.
Estado del arte del Deblocking filter en plataformas
heterogéneas
En el diseño de HEVC se preparó la parte dein-loop filterspara poder optimizar este proceso empleando técnicas de paralelización. En [25] investigadores de la Univer- sidad de Lisboa presentan una breve descripción del DBF y el SAO para posteriormente proponer un algoritmo de filtrado tanto para el DBF como para el SAO de forma que se pueda optimizar empleando paralelización en una Graphics Processing Unit o Unidad de Procesamiento Gráfico (GPU). Para el DBF se propone la identificación de bloques independientes respecto del filtrado para poder realizar el filtrado de bordes verticales, seguido el de bordes horizontales sin tener que realizar ninguna sincronización de datos entre ambos procesos. Estos algoritmos se prueban con la versión del estándar HM 15.0 y la plataforma de NVIDIA Jetson TK1.
Por otra parte, en [26] un grupo de investigadores del Instituto Tecnológico de Har- bin (China), presentan el diseño de unpipelinede datos para poder paralelizar el proceso de los filtros in-loop en un codificador HEVC. Aquí se definen también las asociacio- nes entre los distintos hilos en la GPU encargados de realizar el filtrado en la imagen y las distintas de CTUs de dicha imagen. Para este trabajo se ha empleado el codificador de código abierto x265 [27] usando un PC con una Central Processing Unit o Unidad de Procesamiento Central (CPU) de ocho núcleos y una GPU con 2560 SM (Streaming Multiprocessors).
Por último, en [28] un grupo de investigadores de la Universidad de Lisboa presen- tan una implementación para el DBF en la cual CPU y GPU trabajan de forma cooperativa para la realización del filtrado. Esta propuesta consiste en la construcción de una estruc- tura de datos sobre los potenciales bloques a filtrar que contiene información sobre el
1Estos hilos son creados por el hilo de control y una vez son creados, el hilo de control no tiene ninguna dependencia en la ejecución con los hilos hijos.
12 CAPÍTULO 2. ANTECEDENTES
parámetro Bs asociado al bloque. Esta estructura será copiada de la memoria de la CPU a memoria de la GPU para que el proceso del filtrado se realice en este último. Al igual que en [25], también trabajan con bloques independientes para el filtrado de bordes ho- rizontales y verticales. En este trabajo emplean CUDA streamspara poder optimizar las transferencias de memoria. El descodificador HM 11.0 se utiliza con una CPU Intel Core i7-4770K y una GPU NVIDIA Tesla K20c.
Capítulo 3
Plataforma de desarrollo
3.1.
Introducción
Existe una enorme cantidad de información a filtrar en una secuencia de vídeo. Esto deriva en la posibilidad de explotar el tratamiento de esta información a través de técnicas de paralelización que posteriormente se implementen en descodificadores de vÍ- deo como OpenHEVC. La capacidad que una GPU posee para tratar de forma paralela grandes cantidades de información y ofrecer un resultado tras el tratamiento de dichos datos es mayor que la capacidad que una CPU puede ofrecer. Por esta razón, se decidió emplear como plataforma heterogénea para el desarrollo de este Proyecto de Fin de Gra- do una plataforma formada por una CPU multinúcleo y una GPU, la plataforma NVIDIA Jetson TX2 [29].
3.2.
NVIDIA Jetson TX2
La plataforma heterogénea con la que se ha desarrollado este Proyecto de Fin de Grado es la System on Module (SoM) NVIDIA Jetson TX2 [30]. En concreto, con el kit de desarrolladores. La diferencia de trabajar con el kit de desarrolladores frente al módulo Jetson TX2 es que el primero contiene el módulo Jetson TX2 además de un módulo con una cámara de 5MP, botones para poder encender/apagar, resetear o entrar en modo recuperación, un conjunto de interfaces de entradas/salidas y un par de antenas Wi-Fi. En la figura 3.1 se puede ver la NVIDIA Jetson TX2 en las dos opciones mencionadas.
La plataforma Jetson TX2 cuenta con el System on Chip (SoC) Tegra X2 formado por una GPU NVIDIA Pascal de 256 núcleos, una CPU de seis núcleos ARMv8 de 64 bits, 8GB de memoria LPDDR4 con una interfaz de 128 bits y almacenamiento de 32GB eMMC 5.1. La CPU es una combinación de una CPU de 64 bits de doble núcleo NVIDIA Denver 2 y una CPU de cuatro núcleos ARM Cortex-A57.
Dual Denver 2 ofrece mejores resultados para aplicaciones mononúcleo gracias a optimizaciones de NVIDIA y el ARM Cortex-A57 ofrece mejores resultados para aplica-