RIGOR ESTADÍSTICO Y VISUALIZACIÓN
Resultados: tablas, cajas y bigotes y Speedup
Procesamiento de imágenes para incrementar el brillo · 100 ejecuciones por configuración
① Metodología estadística y de medición
Para cada combinación de algoritmo × tamaño de imagen × número de hilos × entorno se registraron 100 tiempos de ejecución independientes. Sobre esa muestra se calcularon los estadísticos que sustentan tanto las tablas como los diagramas de cajas y bigotes.
Estadísticos calculados sobre cada muestra de n = 100
Media, mediana, desviación estándar, mínimo, máximo, cuartiles (Q1, Q3), rango intercuartílico (IQR = Q3−Q1) y coeficiente de variación (CV = desv./media). Se prioriza la mediana por ser robusta ante los outliers propios de la contención de CPU y la planificación del sistema operativo.
Definición de Speedup
Calculado contra la versión Secuencial del mismo entorno e imagen, usando medianas:
> 1 indica aceleración; < 1 indica que la versión fue más lenta que la secuencial.
Entornos y set de imágenes
| Imagen | Archivo | Dimensiones (px) |
|---|---|---|
| Mediana | mediana.bmp | 620 × 465 px |
| Grande | grande.bmp | 1240 × 930 px |
| Muy grande | muy_grande.bmp | 2480 × 1860 px |
Software de análisis: Python · pandas · NumPy · Matplotlib · Seaborn.
② Tablas de resultados
Mediana de tiempo (ms) y Speedup por configuración. El color de la columna Speedup codifica: ≥ 2× ≥ 1.2× ≥ 1.05× ≈ 1× < 1×.
Mejor configuración por entorno e imagen
| Entorno | Imagen | Mejor configuración | Mediana mejor (ms) | Mediana Secuencial (ms) | Speedup |
|---|---|---|---|---|---|
| Windows 11 nativo | Mediana | SIMD+POSIX · 2 hilos | 0.2516 | 1.972 | 7.84× |
| Grande | SIMD+POSIX · 2 hilos | 0.4226 | 6.442 | 15.24× | |
| Muy grande | SIMD+POSIX · 8 hilos | 1.065 | 28.61 | 26.86× | |
| Windows 11 en VirtualBox (host Linux) | Mediana | SIMD+POSIX · 2 hilos | 0.2964 | 2.300 | 7.76× |
| Grande | SIMD+POSIX · 2 hilos | 0.4944 | 7.601 | 15.37× | |
| Muy grande | SIMD+POSIX · 8 hilos | 1.254 | 33.84 | 26.98× | |
| Linux nativo | Mediana | OpenMP · 8 hilos | 0.0730 | 0.2400 | 3.29× |
| Grande | OpenMP · 8 hilos | 0.3115 | 0.6290 | 2.02× | |
| Muy grande | SIMD+POSIX · 4 hilos | 1.201 | 2.359 | 1.96× | |
| Linux en VirtualBox (host Windows 11) | Mediana | OpenMP · 4 hilos | 0.0670 | 0.1575 | 2.35× |
| Grande | OpenMP · 4 hilos | 0.2720 | 0.5035 | 1.85× | |
| Muy grande | OpenMP · 8 hilos | 1.191 | 3.345 | 2.81× |
Windows 11 nativo
| Configuración | Mediana | Grande | Muy grande | |||
|---|---|---|---|---|---|---|
| ms | Speedup | ms | Speedup | ms | Speedup | |
| Secuencial · 1 hilo | 1.972 | 1.00× | 6.442 | 1.00× | 28.61 | 1.00× |
| SIMD+POSIX · 1 hilos | 0.2616 | 7.54× | 0.7401 | 8.70× | 6.310 | 4.53× |
| SIMD+POSIX · 2 hilos | 0.2516 | 7.84× | 0.4226 | 15.24× | 3.117 | 9.18× |
| SIMD+POSIX · 4 hilos | 0.3170 | 6.22× | 0.4991 | 12.91× | 1.332 | 21.48× |
| SIMD+POSIX · 8 hilos | 0.4148 | 4.75× | 0.6921 | 9.31× | 1.065 | 26.86× |
| SIMD+POSIX · 16 hilos | 0.7592 | 2.60× | 1.223 | 5.27× | 1.281 | 22.34× |
| OpenMP · 2 hilos | 1.058 | 1.86× | 4.069 | 1.58× | 16.40 | 1.74× |
| OpenMP · 4 hilos | 0.5756 | 3.43× | 3.206 | 2.01× | 7.483 | 3.82× |
| OpenMP · 8 hilos | 0.4556 | 4.33× | 1.765 | 3.65× | 6.852 | 4.18× |
| OpenMP · 16 hilos | 0.4542 | 4.34× | 1.713 | 3.76× | 6.833 | 4.19× |
| Python NumPy (IA) | 0.2757 | 7.15× | 14.34 | 0.45× | 55.19 | 0.52× |
| Python Pillow (IA) | 12.15 | 0.16× | 39.88 | 0.16× | 151.12 | 0.19× |
Ver tabla estadística detallada — Windows 11 nativo (36 configuraciones × 100 ejecuciones)
| Configuración | Imagen | n | Media | Mediana | Desv. est. | Mín – Máx | IQR | CV | Speedup |
|---|---|---|---|---|---|---|---|---|---|
| Secuencial · 1 hilo | Mediana | 100 | 2.994 | 1.972 | 1.770 | 1.699 – 9.315 | 2.012 | 59.1% | 1.00× |
| Secuencial · 1 hilo | Grande | 100 | 6.737 | 6.442 | 0.7843 | 6.192 – 11.47 | 0.5177 | 11.6% | 1.00× |
| Secuencial · 1 hilo | Muy grande | 100 | 36.39 | 28.61 | 16.76 | 23.27 – 90.75 | 18.01 | 46.0% | 1.00× |
| SIMD+POSIX · 1 hilos | Mediana | 100 | 0.2842 | 0.2616 | 0.0562 | 0.2161 – 0.5224 | 0.0730 | 19.8% | 7.54× |
| SIMD+POSIX · 1 hilos | Grande | 100 | 0.7948 | 0.7401 | 0.1270 | 0.6401 – 1.131 | 0.2341 | 16.0% | 8.70× |
| SIMD+POSIX · 1 hilos | Muy grande | 100 | 6.810 | 6.310 | 4.458 | 2.099 – 16.21 | 7.708 | 65.5% | 4.53× |
| SIMD+POSIX · 2 hilos | Mediana | 100 | 0.2637 | 0.2516 | 0.0424 | 0.2065 – 0.3610 | 0.0709 | 16.1% | 7.84× |
| SIMD+POSIX · 2 hilos | Grande | 100 | 0.4453 | 0.4226 | 0.1437 | 0.3816 – 1.797 | 0.0432 | 32.3% | 15.24× |
| SIMD+POSIX · 2 hilos | Muy grande | 100 | 3.449 | 3.117 | 2.125 | 1.268 – 10.02 | 3.427 | 61.6% | 9.18× |
| SIMD+POSIX · 4 hilos | Mediana | 100 | 0.3209 | 0.3170 | 0.0606 | 0.1974 – 0.4630 | 0.0818 | 18.9% | 6.22× |
| SIMD+POSIX · 4 hilos | Grande | 100 | 0.5545 | 0.4991 | 0.1749 | 0.4113 – 1.538 | 0.0933 | 31.5% | 12.91× |
| SIMD+POSIX · 4 hilos | Muy grande | 100 | 2.146 | 1.332 | 2.039 | 0.8745 – 16.38 | 0.8205 | 95.0% | 21.48× |
| SIMD+POSIX · 8 hilos | Mediana | 100 | 0.4275 | 0.4148 | 0.0762 | 0.3558 – 1.089 | 0.0452 | 17.8% | 4.75× |
| SIMD+POSIX · 8 hilos | Grande | 100 | 0.7313 | 0.6921 | 0.1527 | 0.5955 – 1.482 | 0.0854 | 20.9% | 9.31× |
| SIMD+POSIX · 8 hilos | Muy grande | 100 | 1.352 | 1.065 | 0.8225 | 0.9550 – 7.716 | 0.3760 | 60.8% | 26.86× |
| SIMD+POSIX · 16 hilos | Mediana | 100 | 0.7981 | 0.7592 | 0.1292 | 0.6056 – 1.116 | 0.2179 | 16.2% | 2.60× |
| SIMD+POSIX · 16 hilos | Grande | 100 | 1.259 | 1.223 | 0.1523 | 1.037 – 1.946 | 0.1437 | 12.1% | 5.27× |
| SIMD+POSIX · 16 hilos | Muy grande | 100 | 1.558 | 1.281 | 0.7916 | 1.145 – 6.388 | 0.1164 | 50.8% | 22.34× |
| OpenMP · 2 hilos | Mediana | 100 | 1.130 | 1.058 | 0.2109 | 1.036 – 2.688 | 0.0544 | 18.7% | 1.86× |
| OpenMP · 2 hilos | Grande | 100 | 4.393 | 4.069 | 0.6264 | 3.844 – 6.248 | 0.9797 | 14.3% | 1.58× |
| OpenMP · 2 hilos | Muy grande | 100 | 23.90 | 16.40 | 12.83 | 14.51 – 97.52 | 18.26 | 53.7% | 1.74× |
| OpenMP · 4 hilos | Mediana | 100 | 0.6777 | 0.5756 | 0.1666 | 0.5012 – 1.089 | 0.3159 | 24.6% | 3.43× |
| OpenMP · 4 hilos | Grande | 100 | 2.998 | 3.206 | 0.3929 | 1.945 – 3.603 | 0.6144 | 13.1% | 2.01× |
| OpenMP · 4 hilos | Muy grande | 100 | 8.288 | 7.483 | 1.571 | 7.234 – 12.66 | 1.072 | 19.0% | 3.82× |
| OpenMP · 8 hilos | Mediana | 100 | 0.4701 | 0.4556 | 0.0712 | 0.4268 – 1.103 | 0.0246 | 15.1% | 4.33× |
| OpenMP · 8 hilos | Grande | 100 | 1.791 | 1.765 | 0.1786 | 1.623 – 3.395 | 0.0831 | 10.0% | 3.65× |
| OpenMP · 8 hilos | Muy grande | 100 | 6.967 | 6.852 | 0.4105 | 6.293 – 8.970 | 0.5351 | 5.9% | 4.18× |
| OpenMP · 16 hilos | Mediana | 100 | 0.4774 | 0.4542 | 0.1320 | 0.4111 – 1.597 | 0.0277 | 27.7% | 4.34× |
| OpenMP · 16 hilos | Grande | 100 | 1.733 | 1.713 | 0.1144 | 1.570 – 2.558 | 0.0291 | 6.6% | 3.76× |
| OpenMP · 16 hilos | Muy grande | 100 | 6.822 | 6.833 | 0.2431 | 6.237 – 7.781 | 0.1296 | 3.6% | 4.19× |
| Python NumPy (IA) | Mediana | 100 | 0.3222 | 0.2757 | 0.0790 | 0.2226 – 0.5112 | 0.1455 | 24.5% | 7.15× |
| Python NumPy (IA) | Grande | 100 | 12.85 | 14.34 | 4.462 | 1.407 – 17.70 | 0.6360 | 34.7% | 0.45× |
| Python NumPy (IA) | Muy grande | 100 | 50.93 | 55.19 | 15.37 | 5.328 – 67.92 | 1.757 | 30.2% | 0.52× |
| Python Pillow (IA) | Mediana | 100 | 11.44 | 12.15 | 5.367 | 1.043 – 40.10 | 1.412 | 46.9% | 0.16× |
| Python Pillow (IA) | Grande | 100 | 38.95 | 39.88 | 13.19 | 3.801 – 94.54 | 3.896 | 33.9% | 0.16× |
| Python Pillow (IA) | Muy grande | 100 | 144.82 | 151.12 | 30.37 | 14.35 – 173.98 | 5.864 | 21.0% | 0.19× |
Tiempos en milisegundos (ms). CV = coef. de variación (desv./media). Speedup = mediana(Secuencial) / mediana(configuración), mismo entorno e imagen.
Windows 11 en VirtualBox (host Linux)
| Configuración | Mediana | Grande | Muy grande | |||
|---|---|---|---|---|---|---|
| ms | Speedup | ms | Speedup | ms | Speedup | |
| Secuencial · 1 hilo | 2.300 | 1.00× | 7.601 | 1.00× | 33.84 | 1.00× |
| SIMD+POSIX · 1 hilos | 0.3087 | 7.45× | 0.8777 | 8.66× | 7.332 | 4.61× |
| SIMD+POSIX · 2 hilos | 0.2964 | 7.76× | 0.4944 | 15.37× | 3.705 | 9.13× |
| SIMD+POSIX · 4 hilos | 0.3722 | 6.18× | 0.5879 | 12.93× | 1.565 | 21.63× |
| SIMD+POSIX · 8 hilos | 0.4857 | 4.74× | 0.8094 | 9.39× | 1.254 | 26.98× |
| SIMD+POSIX · 16 hilos | 0.8915 | 2.58× | 1.438 | 5.29× | 1.506 | 22.47× |
| OpenMP · 2 hilos | 1.249 | 1.84× | 4.787 | 1.59× | 19.25 | 1.76× |
| OpenMP · 4 hilos | 0.6739 | 3.41× | 3.738 | 2.03× | 8.826 | 3.83× |
| OpenMP · 8 hilos | 0.5343 | 4.30× | 2.074 | 3.67× | 8.086 | 4.18× |
| OpenMP · 16 hilos | 0.5303 | 4.34× | 2.013 | 3.78× | 8.045 | 4.21× |
| Python NumPy (IA) | 0.3235 | 7.11× | 16.82 | 0.45× | 65.09 | 0.52× |
| Python Pillow (IA) | 14.26 | 0.16× | 46.82 | 0.16× | 177.44 | 0.19× |
Ver tabla estadística detallada — Windows 11 en VirtualBox (host Linux) (36 configuraciones × 100 ejecuciones)
| Configuración | Imagen | n | Media | Mediana | Desv. est. | Mín – Máx | IQR | CV | Speedup |
|---|---|---|---|---|---|---|---|---|---|
| Secuencial · 1 hilo | Mediana | 100 | 3.511 | 2.300 | 2.064 | 1.964 – 10.71 | 2.380 | 58.8% | 1.00× |
| Secuencial · 1 hilo | Grande | 100 | 7.916 | 7.601 | 0.9366 | 7.197 – 13.64 | 0.5603 | 11.8% | 1.00× |
| Secuencial · 1 hilo | Muy grande | 100 | 42.80 | 33.84 | 19.70 | 27.25 – 106.84 | 21.21 | 46.0% | 1.00× |
| SIMD+POSIX · 1 hilos | Mediana | 100 | 0.3328 | 0.3087 | 0.0655 | 0.2540 – 0.6103 | 0.0890 | 19.7% | 7.45× |
| SIMD+POSIX · 1 hilos | Grande | 100 | 0.9340 | 0.8777 | 0.1508 | 0.7407 – 1.356 | 0.2793 | 16.1% | 8.66× |
| SIMD+POSIX · 1 hilos | Muy grande | 100 | 8.016 | 7.332 | 5.243 | 2.425 – 19.39 | 9.104 | 65.4% | 4.61× |
| SIMD+POSIX · 2 hilos | Mediana | 100 | 0.3099 | 0.2964 | 0.0498 | 0.2420 – 0.4172 | 0.0849 | 16.1% | 7.76× |
| SIMD+POSIX · 2 hilos | Grande | 100 | 0.5234 | 0.4944 | 0.1694 | 0.4475 – 2.113 | 0.0556 | 32.4% | 15.37× |
| SIMD+POSIX · 2 hilos | Muy grande | 100 | 4.063 | 3.705 | 2.504 | 1.470 – 11.68 | 4.078 | 61.6% | 9.13× |
| SIMD+POSIX · 4 hilos | Mediana | 100 | 0.3774 | 0.3722 | 0.0720 | 0.2357 – 0.5401 | 0.0980 | 19.1% | 6.18× |
| SIMD+POSIX · 4 hilos | Grande | 100 | 0.6509 | 0.5879 | 0.2038 | 0.4865 – 1.785 | 0.1087 | 31.3% | 12.93× |
| SIMD+POSIX · 4 hilos | Muy grande | 100 | 2.523 | 1.565 | 2.375 | 1.030 – 18.94 | 0.9623 | 94.1% | 21.63× |
| SIMD+POSIX · 8 hilos | Mediana | 100 | 0.5015 | 0.4857 | 0.0900 | 0.4120 – 1.278 | 0.0522 | 17.9% | 4.74× |
| SIMD+POSIX · 8 hilos | Grande | 100 | 0.8598 | 0.8094 | 0.1806 | 0.6871 – 1.751 | 0.0979 | 21.0% | 9.39× |
| SIMD+POSIX · 8 hilos | Muy grande | 100 | 1.589 | 1.254 | 0.9669 | 1.124 – 9.114 | 0.4534 | 60.8% | 26.98× |
| SIMD+POSIX · 16 hilos | Mediana | 100 | 0.9370 | 0.8915 | 0.1537 | 0.7029 – 1.336 | 0.2566 | 16.4% | 2.58× |
| SIMD+POSIX · 16 hilos | Grande | 100 | 1.480 | 1.438 | 0.1779 | 1.223 – 2.247 | 0.1561 | 12.0% | 5.29× |
| SIMD+POSIX · 16 hilos | Muy grande | 100 | 1.827 | 1.506 | 0.9199 | 1.346 – 7.414 | 0.1413 | 50.4% | 22.47× |
| OpenMP · 2 hilos | Mediana | 100 | 1.325 | 1.249 | 0.2444 | 1.196 – 3.107 | 0.0591 | 18.4% | 1.84× |
| OpenMP · 2 hilos | Grande | 100 | 5.168 | 4.787 | 0.7493 | 4.440 – 7.476 | 1.102 | 14.5% | 1.59× |
| OpenMP · 2 hilos | Muy grande | 100 | 28.01 | 19.25 | 15.01 | 16.83 – 115.09 | 21.08 | 53.6% | 1.76× |
| OpenMP · 4 hilos | Mediana | 100 | 0.7978 | 0.6739 | 0.1983 | 0.5837 – 1.274 | 0.3711 | 24.9% | 3.41× |
| OpenMP · 4 hilos | Grande | 100 | 3.528 | 3.738 | 0.4563 | 2.289 – 4.252 | 0.7218 | 12.9% | 2.03× |
| OpenMP · 4 hilos | Muy grande | 100 | 9.729 | 8.826 | 1.799 | 8.382 – 14.91 | 1.242 | 18.5% | 3.83× |
| OpenMP · 8 hilos | Mediana | 100 | 0.5536 | 0.5343 | 0.0839 | 0.4984 – 1.297 | 0.0317 | 15.2% | 4.30× |
| OpenMP · 8 hilos | Grande | 100 | 2.107 | 2.074 | 0.2162 | 1.890 – 4.039 | 0.1051 | 10.3% | 3.67× |
| OpenMP · 8 hilos | Muy grande | 100 | 8.198 | 8.086 | 0.5096 | 7.462 – 10.63 | 0.6024 | 6.2% | 4.18× |
| OpenMP · 16 hilos | Mediana | 100 | 0.5612 | 0.5303 | 0.1574 | 0.4785 – 1.909 | 0.0347 | 28.0% | 4.34× |
| OpenMP · 16 hilos | Grande | 100 | 2.040 | 2.013 | 0.1338 | 1.833 – 2.980 | 0.0575 | 6.6% | 3.78× |
| OpenMP · 16 hilos | Muy grande | 100 | 8.008 | 8.045 | 0.2998 | 7.261 – 9.128 | 0.2313 | 3.7% | 4.21× |
| Python NumPy (IA) | Mediana | 100 | 0.3786 | 0.3235 | 0.0930 | 0.2591 – 0.6013 | 0.1680 | 24.6% | 7.11× |
| Python NumPy (IA) | Grande | 100 | 15.09 | 16.82 | 5.247 | 1.640 – 21.02 | 0.9113 | 34.8% | 0.45× |
| Python NumPy (IA) | Muy grande | 100 | 59.98 | 65.09 | 18.14 | 6.294 – 80.46 | 2.901 | 30.2% | 0.52× |
| Python Pillow (IA) | Mediana | 100 | 13.47 | 14.26 | 6.278 | 1.228 – 46.27 | 1.806 | 46.6% | 0.16× |
| Python Pillow (IA) | Grande | 100 | 45.82 | 46.82 | 15.47 | 4.425 – 110.06 | 4.478 | 33.8% | 0.16× |
| Python Pillow (IA) | Muy grande | 100 | 170.14 | 177.44 | 35.68 | 16.90 – 202.60 | 6.784 | 21.0% | 0.19× |
Tiempos en milisegundos (ms). CV = coef. de variación (desv./media). Speedup = mediana(Secuencial) / mediana(configuración), mismo entorno e imagen.
Linux nativo
| Configuración | Mediana | Grande | Muy grande | |||
|---|---|---|---|---|---|---|
| ms | Speedup | ms | Speedup | ms | Speedup | |
| Secuencial · 1 hilo | 0.2400 | 1.00× | 0.6290 | 1.00× | 2.359 | 1.00× |
| SIMD+POSIX · 1 hilos | 0.1520 | 1.58× | 0.6570 | 0.96× | 2.242 | 1.05× |
| SIMD+POSIX · 2 hilos | 0.0960 | 2.50× | 0.4095 | 1.54× | 1.598 | 1.48× |
| SIMD+POSIX · 4 hilos | 0.1020 | 2.35× | 0.3570 | 1.76× | 1.201 | 1.96× |
| SIMD+POSIX · 8 hilos | 0.2030 | 1.18× | 0.3970 | 1.58× | 1.522 | 1.55× |
| SIMD+POSIX · 16 hilos | 0.3940 | 0.61× | 0.4850 | 1.30× | 1.543 | 1.53× |
| OpenMP · 2 hilos | 0.1725 | 1.39× | 0.6505 | 0.97× | 2.675 | 0.88× |
| OpenMP · 4 hilos | 0.1405 | 1.71× | 0.4170 | 1.51× | 1.389 | 1.70× |
| OpenMP · 8 hilos | 0.0730 | 3.29× | 0.3115 | 2.02× | 2.103 | 1.12× |
| OpenMP · 16 hilos | 0.2070 | 1.16× | 0.6255 | 1.01× | 1.797 | 1.31× |
| Python NumPy (IA) | 0.8765 | 0.27× | 3.827 | 0.16× | 7.397 | 0.32× |
| Python Pillow (IA) | 2.280 | 0.11× | 7.727 | 0.08× | 29.44 | 0.08× |
Ver tabla estadística detallada — Linux nativo (36 configuraciones × 100 ejecuciones)
| Configuración | Imagen | n | Media | Mediana | Desv. est. | Mín – Máx | IQR | CV | Speedup |
|---|---|---|---|---|---|---|---|---|---|
| Secuencial · 1 hilo | Mediana | 100 | 0.2314 | 0.2400 | 0.0502 | 0.1210 – 0.4150 | 0.0475 | 21.7% | 1.00× |
| Secuencial · 1 hilo | Grande | 100 | 0.7408 | 0.6290 | 0.2299 | 0.5010 – 1.440 | 0.3218 | 31.0% | 1.00× |
| Secuencial · 1 hilo | Muy grande | 100 | 2.379 | 2.359 | 0.2145 | 2.064 – 3.043 | 0.2275 | 9.0% | 1.00× |
| SIMD+POSIX · 1 hilos | Mediana | 100 | 0.1620 | 0.1520 | 0.0308 | 0.1360 – 0.3730 | 0.0345 | 19.0% | 1.58× |
| SIMD+POSIX · 1 hilos | Grande | 100 | 0.6741 | 0.6570 | 0.0712 | 0.5770 – 1.088 | 0.0460 | 10.6% | 0.96× |
| SIMD+POSIX · 1 hilos | Muy grande | 100 | 2.259 | 2.242 | 0.0722 | 2.169 – 2.499 | 0.1110 | 3.2% | 1.05× |
| SIMD+POSIX · 2 hilos | Mediana | 100 | 0.1050 | 0.0960 | 0.0216 | 0.0900 – 0.2500 | 0.0180 | 20.6% | 2.50× |
| SIMD+POSIX · 2 hilos | Grande | 100 | 0.4245 | 0.4095 | 0.0631 | 0.3520 – 0.7690 | 0.0665 | 14.9% | 1.54× |
| SIMD+POSIX · 2 hilos | Muy grande | 100 | 1.559 | 1.598 | 0.1879 | 1.229 – 1.905 | 0.2945 | 12.0% | 1.48× |
| SIMD+POSIX · 4 hilos | Mediana | 100 | 0.1101 | 0.1020 | 0.0196 | 0.0960 – 0.2130 | 0.0140 | 17.8% | 2.35× |
| SIMD+POSIX · 4 hilos | Grande | 100 | 0.3600 | 0.3570 | 0.0491 | 0.2830 – 0.4870 | 0.0657 | 13.7% | 1.76× |
| SIMD+POSIX · 4 hilos | Muy grande | 100 | 1.221 | 1.201 | 0.0944 | 1.115 – 1.558 | 0.0865 | 7.7% | 1.96× |
| SIMD+POSIX · 8 hilos | Mediana | 100 | 0.2064 | 0.2030 | 0.0285 | 0.1680 – 0.2970 | 0.0425 | 13.8% | 1.18× |
| SIMD+POSIX · 8 hilos | Grande | 100 | 0.4599 | 0.3970 | 0.2225 | 0.3050 – 2.036 | 0.1257 | 48.4% | 1.58× |
| SIMD+POSIX · 8 hilos | Muy grande | 100 | 1.476 | 1.522 | 0.1165 | 1.233 – 1.675 | 0.1695 | 7.9% | 1.55× |
| SIMD+POSIX · 16 hilos | Mediana | 100 | 0.4068 | 0.3940 | 0.0540 | 0.3160 – 0.6550 | 0.0617 | 13.3% | 0.61× |
| SIMD+POSIX · 16 hilos | Grande | 100 | 0.4946 | 0.4850 | 0.0546 | 0.4040 – 0.6880 | 0.0663 | 11.0% | 1.30× |
| SIMD+POSIX · 16 hilos | Muy grande | 100 | 1.553 | 1.543 | 0.1640 | 1.226 – 2.075 | 0.2272 | 10.6% | 1.53× |
| OpenMP · 2 hilos | Mediana | 100 | 0.1814 | 0.1725 | 0.0319 | 0.1540 – 0.3590 | 0.0400 | 17.6% | 1.39× |
| OpenMP · 2 hilos | Grande | 100 | 0.6930 | 0.6505 | 0.1340 | 0.5530 – 1.136 | 0.1007 | 19.3% | 0.97× |
| OpenMP · 2 hilos | Muy grande | 100 | 2.694 | 2.675 | 0.2796 | 2.306 – 3.521 | 0.4412 | 10.4% | 0.88× |
| OpenMP · 4 hilos | Mediana | 100 | 0.1457 | 0.1405 | 0.0161 | 0.1360 – 0.2590 | 0.0120 | 11.1% | 1.71× |
| OpenMP · 4 hilos | Grande | 100 | 0.4094 | 0.4170 | 0.0820 | 0.2990 – 0.6390 | 0.1525 | 20.0% | 1.51× |
| OpenMP · 4 hilos | Muy grande | 100 | 1.457 | 1.389 | 0.2059 | 1.229 – 2.032 | 0.3813 | 14.1% | 1.70× |
| OpenMP · 8 hilos | Mediana | 100 | 0.6918 | 0.0730 | 1.674 | 0.0720 – 7.687 | 0.0123 | 242.0% | 3.29× |
| OpenMP · 8 hilos | Grande | 100 | 0.6357 | 0.3115 | 0.7103 | 0.2900 – 4.220 | 0.4582 | 111.7% | 2.02× |
| OpenMP · 8 hilos | Muy grande | 100 | 2.378 | 2.103 | 0.9988 | 1.214 – 4.862 | 1.012 | 42.0% | 1.12× |
| OpenMP · 16 hilos | Mediana | 100 | 0.3135 | 0.2070 | 0.4412 | 0.1210 – 3.958 | 0.0658 | 140.7% | 1.16× |
| OpenMP · 16 hilos | Grande | 100 | 0.6996 | 0.6255 | 0.2736 | 0.4240 – 2.565 | 0.1743 | 39.1% | 1.01× |
| OpenMP · 16 hilos | Muy grande | 100 | 1.851 | 1.797 | 0.2820 | 1.372 – 3.892 | 0.2993 | 15.2% | 1.31× |
| Python NumPy (IA) | Mediana | 100 | 0.8930 | 0.8765 | 0.1108 | 0.7303 – 1.245 | 0.1407 | 12.4% | 0.27× |
| Python NumPy (IA) | Grande | 100 | 3.902 | 3.827 | 0.4733 | 3.163 – 5.412 | 0.6676 | 12.1% | 0.16× |
| Python NumPy (IA) | Muy grande | 100 | 9.349 | 7.397 | 5.166 | 5.231 – 34.42 | 2.877 | 55.3% | 0.32× |
| Python Pillow (IA) | Mediana | 100 | 2.323 | 2.280 | 0.3091 | 1.859 – 3.215 | 0.4105 | 13.3% | 0.11× |
| Python Pillow (IA) | Grande | 100 | 7.833 | 7.727 | 0.7115 | 6.798 – 10.45 | 0.8490 | 9.1% | 0.08× |
| Python Pillow (IA) | Muy grande | 100 | 29.31 | 29.44 | 2.417 | 26.26 – 39.05 | 3.826 | 8.2% | 0.08× |
Tiempos en milisegundos (ms). CV = coef. de variación (desv./media). Speedup = mediana(Secuencial) / mediana(configuración), mismo entorno e imagen.
Linux en VirtualBox (host Windows 11)
| Configuración | Mediana | Grande | Muy grande | |||
|---|---|---|---|---|---|---|
| ms | Speedup | ms | Speedup | ms | Speedup | |
| Secuencial · 1 hilo | 0.1575 | 1.00× | 0.5035 | 1.00× | 3.345 | 1.00× |
| SIMD+POSIX · 1 hilos | 0.3735 | 0.42× | 1.106 | 0.46× | 2.636 | 1.27× |
| SIMD+POSIX · 2 hilos | 0.3945 | 0.40× | 0.5675 | 0.89× | 1.804 | 1.85× |
| SIMD+POSIX · 4 hilos | 0.5490 | 0.29× | 0.8925 | 0.56× | 1.946 | 1.72× |
| SIMD+POSIX · 8 hilos | 1.679 | 0.09× | 1.611 | 0.31× | 2.854 | 1.17× |
| SIMD+POSIX · 16 hilos | 3.119 | 0.05× | 3.588 | 0.14× | 4.222 | 0.79× |
| OpenMP · 2 hilos | 0.1350 | 1.17× | 0.5155 | 0.98× | 2.583 | 1.29× |
| OpenMP · 4 hilos | 0.0670 | 2.35× | 0.2720 | 1.85× | 1.388 | 2.41× |
| OpenMP · 8 hilos | 0.1450 | 1.09× | 0.5405 | 0.93× | 1.191 | 2.81× |
| OpenMP · 16 hilos | 1.212 | 0.13× | 1.373 | 0.37× | 2.498 | 1.34× |
| Python NumPy (IA) | 0.6996 | 0.23× | 2.798 | 0.18× | 24.95 | 0.13× |
| Python Pillow (IA) | 1.847 | 0.09× | 6.176 | 0.08× | 24.51 | 0.14× |
Ver tabla estadística detallada — Linux en VirtualBox (host Windows 11) (36 configuraciones × 100 ejecuciones)
| Configuración | Imagen | n | Media | Mediana | Desv. est. | Mín – Máx | IQR | CV | Speedup |
|---|---|---|---|---|---|---|---|---|---|
| Secuencial · 1 hilo | Mediana | 100 | 0.2582 | 0.1575 | 0.5641 | 0.1000 – 5.397 | 0.1230 | 218.4% | 1.00× |
| Secuencial · 1 hilo | Grande | 100 | 0.6252 | 0.5035 | 0.6367 | 0.4080 – 6.316 | 0.1907 | 101.8% | 1.00× |
| Secuencial · 1 hilo | Muy grande | 100 | 4.078 | 3.345 | 2.510 | 1.970 – 19.84 | 1.713 | 61.5% | 1.00× |
| SIMD+POSIX · 1 hilos | Mediana | 100 | 0.5269 | 0.3735 | 0.4403 | 0.2400 – 3.166 | 0.2185 | 83.6% | 0.42× |
| SIMD+POSIX · 1 hilos | Grande | 100 | 1.457 | 1.106 | 0.8723 | 0.6640 – 4.996 | 0.8302 | 59.9% | 0.46× |
| SIMD+POSIX · 1 hilos | Muy grande | 100 | 2.804 | 2.636 | 0.6686 | 2.143 – 6.937 | 0.4482 | 23.8% | 1.27× |
| SIMD+POSIX · 2 hilos | Mediana | 100 | 0.7263 | 0.3945 | 1.119 | 0.2200 – 7.027 | 0.3642 | 154.0% | 0.40× |
| SIMD+POSIX · 2 hilos | Grande | 100 | 0.8107 | 0.5675 | 0.7272 | 0.4140 – 6.402 | 0.3077 | 89.7% | 0.89× |
| SIMD+POSIX · 2 hilos | Muy grande | 100 | 2.423 | 1.804 | 1.896 | 1.305 – 14.66 | 0.9718 | 78.2% | 1.85× |
| SIMD+POSIX · 4 hilos | Mediana | 100 | 0.8765 | 0.5490 | 1.230 | 0.2640 – 8.866 | 0.5537 | 140.3% | 0.29× |
| SIMD+POSIX · 4 hilos | Grande | 100 | 1.534 | 0.8925 | 1.879 | 0.4220 – 12.34 | 0.7447 | 122.5% | 0.56× |
| SIMD+POSIX · 4 hilos | Muy grande | 100 | 2.666 | 1.946 | 1.924 | 1.360 – 14.30 | 1.225 | 72.2% | 1.72× |
| SIMD+POSIX · 8 hilos | Mediana | 100 | 3.163 | 1.679 | 3.822 | 0.7500 – 21.34 | 1.313 | 120.8% | 0.09× |
| SIMD+POSIX · 8 hilos | Grande | 100 | 2.488 | 1.611 | 2.124 | 1.027 – 13.83 | 1.480 | 85.4% | 0.31× |
| SIMD+POSIX · 8 hilos | Muy grande | 100 | 4.093 | 2.854 | 3.504 | 1.914 – 25.64 | 1.814 | 85.6% | 1.17× |
| SIMD+POSIX · 16 hilos | Mediana | 100 | 5.947 | 3.119 | 7.298 | 1.421 – 41.32 | 2.529 | 122.7% | 0.05× |
| SIMD+POSIX · 16 hilos | Grande | 100 | 5.761 | 3.588 | 6.106 | 1.446 – 39.80 | 4.262 | 106.0% | 0.14× |
| SIMD+POSIX · 16 hilos | Muy grande | 100 | 7.795 | 4.222 | 8.978 | 2.370 – 55.34 | 3.241 | 115.2% | 0.79× |
| OpenMP · 2 hilos | Mediana | 100 | 0.1932 | 0.1350 | 0.1399 | 0.1210 – 0.9090 | 0.0605 | 72.4% | 1.17× |
| OpenMP · 2 hilos | Grande | 100 | 0.7347 | 0.5155 | 0.6147 | 0.4720 – 5.520 | 0.2177 | 83.7% | 0.98× |
| OpenMP · 2 hilos | Muy grande | 100 | 2.730 | 2.583 | 0.5655 | 2.061 – 4.523 | 0.7325 | 20.7% | 1.29× |
| OpenMP · 4 hilos | Mediana | 100 | 0.0837 | 0.0670 | 0.0647 | 0.0640 – 0.5130 | 0.0112 | 77.4% | 2.35× |
| OpenMP · 4 hilos | Grande | 100 | 0.3072 | 0.2720 | 0.0923 | 0.2610 – 0.7540 | 0.0300 | 30.1% | 1.85× |
| OpenMP · 4 hilos | Muy grande | 100 | 1.635 | 1.388 | 0.5540 | 1.098 – 4.589 | 0.8237 | 33.9% | 2.41× |
| OpenMP · 8 hilos | Mediana | 100 | 0.3012 | 0.1450 | 0.9731 | 0.0710 – 8.018 | 0.0880 | 323.0% | 1.09× |
| OpenMP · 8 hilos | Grande | 100 | 0.5382 | 0.5405 | 0.1248 | 0.2660 – 1.425 | 0.0380 | 23.2% | 0.93× |
| OpenMP · 8 hilos | Muy grande | 100 | 3.501 | 1.191 | 7.129 | 0.9900 – 32.23 | 0.5283 | 203.6% | 2.81× |
| OpenMP · 16 hilos | Mediana | 100 | 3.878 | 1.212 | 9.316 | 0.3210 – 70.73 | 1.374 | 240.2% | 0.13× |
| OpenMP · 16 hilos | Grande | 100 | 2.180 | 1.373 | 2.443 | 0.7110 – 23.04 | 1.466 | 112.1% | 0.37× |
| OpenMP · 16 hilos | Muy grande | 100 | 4.894 | 2.498 | 7.274 | 1.427 – 51.80 | 1.688 | 148.6% | 1.34× |
| Python NumPy (IA) | Mediana | 100 | 0.8088 | 0.6996 | 0.4135 | 0.5645 – 4.050 | 0.1989 | 51.1% | 0.23× |
| Python NumPy (IA) | Grande | 100 | 3.075 | 2.798 | 1.287 | 2.281 – 13.58 | 0.5192 | 41.8% | 0.18× |
| Python NumPy (IA) | Muy grande | 100 | 34.97 | 24.95 | 36.07 | 5.486 – 225.99 | 27.05 | 103.1% | 0.13× |
| Python Pillow (IA) | Mediana | 100 | 2.179 | 1.847 | 1.058 | 1.431 – 6.948 | 0.7017 | 48.5% | 0.09× |
| Python Pillow (IA) | Grande | 100 | 7.408 | 6.176 | 3.316 | 5.328 – 27.40 | 1.465 | 44.8% | 0.08× |
| Python Pillow (IA) | Muy grande | 100 | 27.01 | 24.51 | 7.196 | 20.32 – 56.08 | 6.867 | 26.6% | 0.14× |
Tiempos en milisegundos (ms). CV = coef. de variación (desv./media). Speedup = mediana(Secuencial) / mediana(configuración), mismo entorno e imagen.
③ Diagramas de cajas y bigotes — 100 ejecuciones por configuración
La distribución completa de las 100 corridas de cada configuración. La altura de la caja y los bigotes revelan la estabilidad; los puntos, los outliers por planificación del SO.
3.1 Panorama por entorno (todos los algoritmos, escala logarítmica)
3.2 Tiempo vs. número de hilos (algoritmos paralelos en C)
④ Nativo vs. Virtualizado (preguntas 3 y 4)
Un mismo sistema operativo, nativo o dentro de VirtualBox, para la implementación insignia SIMD+POSIX.
⑤ Análisis de Speedup
5.1 Speedup vs. número de hilos
5.2 Speedup vs. tamaño de imagen (hilos fijos)
5.3 C/C++ (bajo nivel) vs. Python generado por IA
5.4 Mapa de calor del Speedup
⑥ Síntesis de lo que muestran los datos
- Las implementaciones en C con SIMD+POSIX dominan en todos los entornos; en Windows alcanzan un Speedup de hasta 27.0× (SIMD+POSIX · 8 hilos en Muy grande), porque su secuencial no está vectorizado y SIMD aprovecha vectorización + hilos.
- El Python generado por IA (NumPy/Pillow) queda sistemáticamente por debajo de 1×: más lento que el secuencial en C (rojo en el mapa de calor).
- La virtualización añade dispersión: las máquinas virtuales muestran más outliers y mayor IQR, sobre todo a 8 y 16 hilos.
- El Speedup tiende a saturarse o caer al pasar de 4–8 hilos, coherente con el límite de núcleos físicos.
Comentarios
Publicar un comentario