Se llevó a cabo el siguiente desarrollo por equipo:
- Se especifican los datos principales (Procesador, Memoria RAM, si posee SSD o Disco Duro y Sistema Operativo)
- Se obtiene el número de hebras disponibles utilizando la función std::thread::hardware_concurrency();
- Se realizan 10 pruebas de la versión secuencial.
- Se realizan 10 pruebas de la versión Threads y OpenMP utilizando 2, 4, 8 (Equipo 2 y 3) y 16 (Equipo 3) hebras.
- Por cada versión del código, se realiza un promedio del tiempo en segundos (s).
A continuación los detalles por equipo:
- Procesador: Intel i5-7200U (4) 3.1GHz
- Memoria RAM: 8 GB
- Número de hebras máxima: 4
- Tipo de memoria secundaria: SSD
- Sistema operativo: Ubuntu 22.04.3(Kernel: 6.2.0-37-generic)
Tiempo promedio de |
Tiempo (s) |
Lectura de imagen |
3.707506 |
Procesamiento de imagen |
1.428509 |
Escritura de imagen |
3.388152 |
Global |
8.524363 |
Tiempo promedio de |
2 hebras (s) |
4 hebras (s) |
Lectura de imagen |
3.854473 |
3.922753 |
Procesamiento de imagen |
0.950032 |
0.761235 |
Escritura de imagen |
3.237478 |
3.335088 |
Global |
8.042322 |
8.019489 |
Tiempo promedio de |
2 hebras (s) |
4 hebras |
Lectura de imagen |
3.912085 |
3.924639 |
Procesamiento de imagen |
1.008288 |
0.829612 |
Escritura de imagen |
3.214152 |
3.239345 |
Global |
8.134793 |
7.994240 |
- Procesador: Intel i5-10300H (8) 4.5GHz
- Memoria RAM: 32 GB
- Número de hebras máxima: 8
- Tipo de memoria secundaria: SSD
- Sistema operativo: ArcoLinux (Kernel: 6.6.3-arch1-1)
Tiempo promedio de |
Tiempo (s) |
Lectura de imagen |
1.554290 |
Procesamiento de imagen |
0.872540 |
Escritura de imagen |
1.783190 |
Global |
4.210074 |
Tiempo promedio de |
2 hebras (s) |
4 hebras (s) |
8 hebras (s) |
Lectura de imagen |
1.557578 |
1.552790 |
1.552344 |
Procesamiento de imagen |
0.438897 |
0.206879 |
0.185908 |
Escritura de imagen |
1.709784 |
1.875609 |
2.231251 |
Global |
3.706330 |
3.635341 |
3.969575 |
Tiempo promedio de |
2 hebras (s) |
4 hebras (s) |
8 hebras (s) |
Lectura de imagen |
1.554792 |
1.551888 |
1.556881 |
Procesamiento de imagen |
0.526387 |
0.239978 |
0.195848 |
Escritura de imagen |
1.725189 |
1.545978 |
1.522228 |
Global |
3.806442 |
3.337906 |
3.275020 |
- Procesador: Intel Xeon Silver 4210R (20) 3.2GHz
- Memoria RAM: 64 GB
- Número de hebras máxima: 20
- Tipo de memoria secundaria: HDD
- Sistema operativo: Debian GNU/Linux 11 (Kernel: 5.10.0-23-amd64)
Tiempo promedio de |
Tiempo (s) |
Lectura de imagen |
2.999519 |
Procesamiento de imagen |
1.165067 |
Escritura de imagen |
3.297892 |
Global |
7.462545 |
Tiempo promedio de |
2 hebras (s) |
4 hebras (s) |
8 hebras (s) |
16 hebras (s) |
Lectura de imagen |
2.991088 |
2.988787 |
2.979088 |
2.993952 |
Procesamiento de imagen |
0.636169 |
0.323762 |
0.272991 |
0.147039 |
Escritura de imagen |
3.314108 |
3.323026 |
3.321029 |
3.338988 |
Global |
6.941457 |
6.635664 |
6.573193 |
6.480055 |
Tiempo promedio de |
2 hebras (s) |
4 hebras (s) |
8 hebras (s) |
16 hebras (s) |
Lectura de imagen |
2.980923 |
2.980787 |
1.551888 |
2.978872 |
Procesamiento de imagen |
0.700944 |
0.367326 |
0.239978 |
0.153601 |
Escritura de imagen |
3.309351 |
3.306857 |
1.545978 |
3.279601 |
Global |
6.991288 |
6.655043 |
3.337906 |
6.412150 |
Se concluye que para los tiempos de lectura y escritura de imagen, la versión del código no influye directamente en el desempeño final. Esto ya que son funciones secuenciales que vienen directamente de la biblioteca de OpenCV. Por otro lado, el tipo de memoria secundaria si influye directamente en los tiempos.
No obstante, el tiempo de procesamiento de imagen si depende de la versión del código, ya que en esta sección se encuentra la optimización a través de hebras. En los resultados se observa que a medida que aumentan las hebras, el tiempo disminuye. De secuencial a 2 hebras, el tiempo disminuye casi en la mitad, lo que presenta un buen nivel de eficiencia. Pero a medida que se aumentan las hebras, si bien el porcentaje se mantiene alto, los valores real ya no cambian de manera significativa. Es decir, aunque la variación entre 0.2399 segundos y 0.1958 sea de aprox. 1.22x, el cambio es solamente 0.0441 segundos, lo cual no se considera un cambio tan significativo. Finalmente se destaca, que a medida que aumentan las hebras, la razón de cambio va disminuyendo.
Comentario Extra
A pesar de que no se incluye en los datos del desarrollo, se probó con la imagen de referencia de 1.7GB. En este caso, sucedió el efecto donde, utilizando 16 hebras se consiguió un tiempo de procesamiento de 0.5288 segundos, mientras que con 20 hebras, se consiguió un tiempo de 0.6744 segundos. Esto último indica que un aumento en el número de hebras, no siempre mejora el rendimiento de un proceso.
Se incluye el archivo Excel con todos los datos de las pruebas: