Star

Created With

Desempeño Computacional Introducción

linkAntecedentes

Con el ánimo de comparar la eficiencia computacional de técnicas de análisis y transformación de imagenes y video por software y hardware, se mide la tasa de frames en la ejecución de dichos algoritmos implementados previamente. De igual manera se recopilan resultados de dos equipos de computo cuyas características se muestran a continuación:

CaracterísticaEquipo AEquipo B
Sistema OperativoWindows 10 x64Windows 10 x64
Procesador CPUAMD Ryzen 5 3500U (8 cores) 2.10 GHzIntel(R) Core(TM) i5-7200 (8 cores) 2.5 GHz
GPUAMD Radeon Graphics Vega 8 - 5GBIntel(R) HD Graphics 620 - 4GB
Memoria RAM8.00 GB8.00 GB

Los algoritmos/ técnicas que se observaráan en el presente taller son:

Para lograr el cometido del taller se usará las siguientes utilidades de p5.js:

Por medio de estas se conocerá el desempeño de las implementaciones en cada máquina. A continuación se detallan las intrucciones y el código que se implementó para el cálculo y visualización de estadísticas de desempeño tanto por medio de Software como por Hardware.

No.Descripción
1Iniciar la ejecución de la operación correspondiente a la implementación que se observa (Convolución, Escala de Grises, Ascii-Art)
2Para las Implementaciones por Hardware se inicializan elementos tipo html que tendrán los valores de las estadísticas
3En cada ciclo de ejecuciión de la función draw() se actualizan los valores de las estadísticas observadas así:
4Implementaciones por Software: Se muestra en cada iteración los valores actuales y calculados con textos de p5.js
5Implementaciones por Hardware: Se cambia el texto en los objetos html previamente inicializados para mostrar los nuevos valores actuales y calculados
6Se vuelve a realizar desde el paso 3 en adelante
HardwareFiles.js
1link

2link//MEDICION FPS

3linkvar fpsVal; //FPS actuales

4linkvar framesTotalVal; //Total de frames ejecutados

5linkvar deltaTimeVal; // Tiempo entre ejecucion de frames

6linkvar FpsPromVal; // Promedio de fps en lo ejecutado hasta el momento

7linklet fpsTotal = 0.0; // Acumulador de todos los fps para el calculo del promedio

8link

9linkfunction setup() {

10link // .... Codigo anterior...

11link

12link// MEDICION FPS

13link // Texto de Frames actuales

14link let fpsTxt = createP("FPS actual: ");

15link fpsTxt.position(50, 400);

16link fpsTxt.style('font-size', '30px');

17link //Valor cambiante de los fps actuales

18link fpsVal = createDiv(0);

19link fpsVal.position(190, 430);

20link fpsVal.style('font-size', '30px');

21link //Texto de Cantidad de frames totales

22link let framesTotalTxt = createP("Cantidad frames totales: ");

23link framesTotalTxt.position(50, 450);

24link framesTotalTxt.style('font-size', '30px');

25link //Valor cambiante de Cantidad de frames totales

26link framesTotalVal = createDiv(0);

27link framesTotalVal.position(350, 480);

28link framesTotalVal.style('font-size', '30px');

29link //Texto de tiempo entre frames

30link let deltaTimeTxt = createP("Tiempo (ms) entre el frame anterior y el actual: ");

31link deltaTimeTxt.position(50, 500);

32link deltaTimeTxt.style('font-size', '30px');

33link //Valor cambiante de tiempo entre frames

34link deltaTimeVal = createDiv(0);

35link deltaTimeVal.position(190, 560);

36link deltaTimeVal.style('font-size', '30px');

37link //Texto de fps promedio

38link let FpsPromTxt = createP("FPS Promedio: ");

39link FpsPromTxt.position(50, 570);

40link FpsPromTxt.style('font-size', '30px');

41link //Valor cambiante de fps promedio

42link FpsPromVal = createDiv(0);

43link FpsPromVal.position(250, 600);

44link FpsPromVal.style('font-size', '30px');

45link

46link // .... Codigo posterior...

47link

48link}

49linkfunction draw() {

50link // .... Codigo anterior...

51link

52link //Muestra valores de rendimiento en pantalla

53link fpsVal.html(frameRate()); //fps

54link framesTotalVal.html(frameCount);//Cantidad de frames

55link deltaTimeVal.html(deltaTime);// Tiempo entre frames

56link fpsTotal += frameRate();//Se acumula el valor de fps para calcular el promedio

57link FpsPromVal.html(fpsTotal / frameCount);//Promedio de fps

58link

59link // .... Codigo posterior...

60link}

SoftwareFiles.js
1linklet fpsTotal = 0.0;//Acumulador de valores de fps para calculo del promedio

2linkfunction draw() {

3link // .... Codigo anterior...

4link

5link //Muestra valores de rendimiento en pantalla

6link text("FPS actual: " + frameRate(), 50, 450);//fps

7link text("Cantidad frames totales: " + frameCount, 50, 490);//Cantidad de frames

8link text("Tiempo (ms) entre el frame anterior y el actual: ", 50, 530);

9link text(deltaTime, 50, 570);// Tiempo entre frames

10link fpsTotal += frameRate();//Se acumula el valor de fps para calcular el promedio

11link text("FPS Promedio: " + fpsTotal / frameCount, 50, 610);//Promedio de fps

12link

13link // .... Codigo posterior...

14link}

Se toma en cuenta que en cada una de las siguientes secciones se realizarán análisis sobre el desempeño obtenido con relación a las implementaciones observadas. De manera que lo presentado anteriormente supone lo que todas las mencionadas tienen en común.

linkReferencias y Fuentes:

DeltaTime Reference

FrameCount Reference

FrameRate Reference

Performance metricts Base Idea

Html components for display shaders frames values idea

AntecedentesReferencias y Fuentes:

Home

Workshopschevron_right
Imaging & Videochevron_right
Softwarechevron_right
Hardwarechevron_right

Introducción RGB y Luma Mascaras de Convolución Ascii Art Foto-Mosaico

Desempeño Computacionalchevron_right

Conclusiones y Trabajo Futuro

Renderingchevron_right
Teamchevron_right