Durante esta actividad el alumno será capaz de:
Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.
Esta práctica puede ser elaborada de manera individual o en parejas.
Deseamos combinar dos imágenes usando disolución alfa:
FORE y BACK dos secuencias de n bytes cada una, en donde cada secuencia representa una imagen. FORE es la imagen de primer plano y BACK es la imagen de fondo.
RESULT de tamaño n. FOREi, BACKi y RESULTi representan un byte específico, donde 0 ≤ i ≤ n – 1:
Para i de 0 a n – 1, hacer lo siguiente:
RESULTi = (FOREi × alpha) ÷ 256 + (BACKi × (255 – alpha)) ÷ 256
Como ejemplo, supongamos que tenemos las siguientes dos imágenes del mismo tamaño:
scarlett.png
flores.png
Al combinar scarlett.png y flores.png con alpha = 155 obtenemos la siguiente imagen:
alpha155.png
Si combinamos scarlett.png y flores.png con alpha = 77 obtenemos ahora esta otra imagen:
alpha77.pngUsando la biblioteca de imágenes STB escribe dos versiones del algoritmo de combinación de imágenes a través de disolución alfa: una versión secuencial normal en lenguaje C y una versión paralela usando instrucciones SIMD (Single Instruction Multiple Data) en lenguaje ensamblador para la arquitectura x86-64. Utiliza las enormes imágenes contenidas en el archivo imagenes.tgz para probar tus programas.
Al implementar el algoritmo usando tecnología SIMD, sigue los pasos que se enumeran en la siguiente tabla.
NOTA 1: En las siguientes descripciones, un byte consta de 8 bits mientras que una palabra o word consta de 16 bits.
NOTA 2: Se presupone que el CPU a utilizar soporta instrucciones SSE4.1. Puedes utilizar la instrucción cpuid para verficar si efectivamente así es.
| Descripción | Instrucción SIMD a utilizar |
|---|---|
|
movq |
|
pmovzxbw |
|
pmullw |
|
psrlw |
|
|
|
paddw |
|
packuswb |
|
movq |
|
Contrasta los tiempos de ejecución de la versión secuencial contra la versión paralela. Escribe un reporte con tus resultados tal como se indica en: Reportes de prácticas.
Coloca en un archivo tarball llamado practica9.tgz todos los archivos fuentes de tu programa así como el reporte correspondiente (debes incluir los archivos .adoc y .pdf de tu reporte escrito en AsciiDoctor).
Para entregar el archivo practica9.tgz, ingresa los siguientes datos:
La fecha límite es el viernes, 28 de abril.
Esta práctica será evaluada usando los siguientes criterios:
| 50% | Implementación de los requerimientos. |
|---|---|
| 50% | Reporte de la práctica. |
| DA | El programa y/o reporte es un plagio. |