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. FORE
i, BACK
i y RESULT
i representan un byte específico, donde 0 ≤ i ≤ n – 1:
Para i de 0 a n – 1, hacer lo siguiente:
RESULT
i = (FORE
i × alpha) ÷ 256 + (BACK
i × (255 – alpha)) ÷ 256
Como ejemplo, supongamos que tenemos las siguientes dos imágenes del mismo tamaño:
Al combinar scarlett.png
y flores.png
con alpha = 155 obtenemos la siguiente imagen:
Si combinamos scarlett.png
y flores.png
con alpha = 77 obtenemos ahora esta otra imagen:
Usando 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. |