RIGOR ESTADÍSTICO Y VISUALIZACIÓN

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.

4
entornos (Windows/Linux · nativo/VirtualBox)
5
implementaciones
3
tamaños de imagen
144
configuraciones
14 400
ejecuciones medidas

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:

Speedup(config) = mediana( TSecuencial ) / mediana( Tconfig )  [mismo entorno · misma imagen]

> 1 indica aceleración; < 1 indica que la versión fue más lenta que la secuencial.

Entornos y set de imágenes

ImagenArchivoDimensiones (px)
Medianamediana.bmp620 × 465 px
Grandegrande.bmp1240 × 930 px
Muy grandemuy_grande.bmp2480 × 1860 px
Dataset: tres imágenes BMP idénticas cuya resolución se duplica en cada paso (620×465 → 1240×930 → 2480×1860), por lo que el número de píxeles se cuadruplica entre niveles. Esto permite evaluar la escalabilidad de los hilos bajo una carga de cómputo creciente de forma exponencial.

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

EntornoImagenMejor configuraciónMediana mejor (ms)Mediana Secuencial (ms)Speedup
Windows 11 nativoMedianaSIMD+POSIX · 2 hilos0.25161.9727.84×
GrandeSIMD+POSIX · 2 hilos0.42266.44215.24×
Muy grandeSIMD+POSIX · 8 hilos1.06528.6126.86×
Windows 11 en VirtualBox (host Linux)MedianaSIMD+POSIX · 2 hilos0.29642.3007.76×
GrandeSIMD+POSIX · 2 hilos0.49447.60115.37×
Muy grandeSIMD+POSIX · 8 hilos1.25433.8426.98×
Linux nativoMedianaOpenMP · 8 hilos0.07300.24003.29×
GrandeOpenMP · 8 hilos0.31150.62902.02×
Muy grandeSIMD+POSIX · 4 hilos1.2012.3591.96×
Linux en VirtualBox (host Windows 11)MedianaOpenMP · 4 hilos0.06700.15752.35×
GrandeOpenMP · 4 hilos0.27200.50351.85×
Muy grandeOpenMP · 8 hilos1.1913.3452.81×

Windows 11 nativo

ConfiguraciónMedianaGrandeMuy grande
msSpeedupmsSpeedupmsSpeedup
Secuencial · 1 hilo1.9721.00×6.4421.00×28.611.00×
SIMD+POSIX · 1 hilos0.26167.54×0.74018.70×6.3104.53×
SIMD+POSIX · 2 hilos0.25167.84×0.422615.24×3.1179.18×
SIMD+POSIX · 4 hilos0.31706.22×0.499112.91×1.33221.48×
SIMD+POSIX · 8 hilos0.41484.75×0.69219.31×1.06526.86×
SIMD+POSIX · 16 hilos0.75922.60×1.2235.27×1.28122.34×
OpenMP · 2 hilos1.0581.86×4.0691.58×16.401.74×
OpenMP · 4 hilos0.57563.43×3.2062.01×7.4833.82×
OpenMP · 8 hilos0.45564.33×1.7653.65×6.8524.18×
OpenMP · 16 hilos0.45424.34×1.7133.76×6.8334.19×
Python NumPy (IA)0.27577.15×14.340.45×55.190.52×
Python Pillow (IA)12.150.16×39.880.16×151.120.19×
Ver tabla estadística detallada — Windows 11 nativo (36 configuraciones × 100 ejecuciones)
ConfiguraciónImagennMediaMedianaDesv. est.Mín – MáxIQRCVSpeedup
Secuencial · 1 hiloMediana1002.9941.9721.7701.699 – 9.3152.01259.1%1.00×
Secuencial · 1 hiloGrande1006.7376.4420.78436.192 – 11.470.517711.6%1.00×
Secuencial · 1 hiloMuy grande10036.3928.6116.7623.27 – 90.7518.0146.0%1.00×
SIMD+POSIX · 1 hilosMediana1000.28420.26160.05620.2161 – 0.52240.073019.8%7.54×
SIMD+POSIX · 1 hilosGrande1000.79480.74010.12700.6401 – 1.1310.234116.0%8.70×
SIMD+POSIX · 1 hilosMuy grande1006.8106.3104.4582.099 – 16.217.70865.5%4.53×
SIMD+POSIX · 2 hilosMediana1000.26370.25160.04240.2065 – 0.36100.070916.1%7.84×
SIMD+POSIX · 2 hilosGrande1000.44530.42260.14370.3816 – 1.7970.043232.3%15.24×
SIMD+POSIX · 2 hilosMuy grande1003.4493.1172.1251.268 – 10.023.42761.6%9.18×
SIMD+POSIX · 4 hilosMediana1000.32090.31700.06060.1974 – 0.46300.081818.9%6.22×
SIMD+POSIX · 4 hilosGrande1000.55450.49910.17490.4113 – 1.5380.093331.5%12.91×
SIMD+POSIX · 4 hilosMuy grande1002.1461.3322.0390.8745 – 16.380.820595.0%21.48×
SIMD+POSIX · 8 hilosMediana1000.42750.41480.07620.3558 – 1.0890.045217.8%4.75×
SIMD+POSIX · 8 hilosGrande1000.73130.69210.15270.5955 – 1.4820.085420.9%9.31×
SIMD+POSIX · 8 hilosMuy grande1001.3521.0650.82250.9550 – 7.7160.376060.8%26.86×
SIMD+POSIX · 16 hilosMediana1000.79810.75920.12920.6056 – 1.1160.217916.2%2.60×
SIMD+POSIX · 16 hilosGrande1001.2591.2230.15231.037 – 1.9460.143712.1%5.27×
SIMD+POSIX · 16 hilosMuy grande1001.5581.2810.79161.145 – 6.3880.116450.8%22.34×
OpenMP · 2 hilosMediana1001.1301.0580.21091.036 – 2.6880.054418.7%1.86×
OpenMP · 2 hilosGrande1004.3934.0690.62643.844 – 6.2480.979714.3%1.58×
OpenMP · 2 hilosMuy grande10023.9016.4012.8314.51 – 97.5218.2653.7%1.74×
OpenMP · 4 hilosMediana1000.67770.57560.16660.5012 – 1.0890.315924.6%3.43×
OpenMP · 4 hilosGrande1002.9983.2060.39291.945 – 3.6030.614413.1%2.01×
OpenMP · 4 hilosMuy grande1008.2887.4831.5717.234 – 12.661.07219.0%3.82×
OpenMP · 8 hilosMediana1000.47010.45560.07120.4268 – 1.1030.024615.1%4.33×
OpenMP · 8 hilosGrande1001.7911.7650.17861.623 – 3.3950.083110.0%3.65×
OpenMP · 8 hilosMuy grande1006.9676.8520.41056.293 – 8.9700.53515.9%4.18×
OpenMP · 16 hilosMediana1000.47740.45420.13200.4111 – 1.5970.027727.7%4.34×
OpenMP · 16 hilosGrande1001.7331.7130.11441.570 – 2.5580.02916.6%3.76×
OpenMP · 16 hilosMuy grande1006.8226.8330.24316.237 – 7.7810.12963.6%4.19×
Python NumPy (IA)Mediana1000.32220.27570.07900.2226 – 0.51120.145524.5%7.15×
Python NumPy (IA)Grande10012.8514.344.4621.407 – 17.700.636034.7%0.45×
Python NumPy (IA)Muy grande10050.9355.1915.375.328 – 67.921.75730.2%0.52×
Python Pillow (IA)Mediana10011.4412.155.3671.043 – 40.101.41246.9%0.16×
Python Pillow (IA)Grande10038.9539.8813.193.801 – 94.543.89633.9%0.16×
Python Pillow (IA)Muy grande100144.82151.1230.3714.35 – 173.985.86421.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ónMedianaGrandeMuy grande
msSpeedupmsSpeedupmsSpeedup
Secuencial · 1 hilo2.3001.00×7.6011.00×33.841.00×
SIMD+POSIX · 1 hilos0.30877.45×0.87778.66×7.3324.61×
SIMD+POSIX · 2 hilos0.29647.76×0.494415.37×3.7059.13×
SIMD+POSIX · 4 hilos0.37226.18×0.587912.93×1.56521.63×
SIMD+POSIX · 8 hilos0.48574.74×0.80949.39×1.25426.98×
SIMD+POSIX · 16 hilos0.89152.58×1.4385.29×1.50622.47×
OpenMP · 2 hilos1.2491.84×4.7871.59×19.251.76×
OpenMP · 4 hilos0.67393.41×3.7382.03×8.8263.83×
OpenMP · 8 hilos0.53434.30×2.0743.67×8.0864.18×
OpenMP · 16 hilos0.53034.34×2.0133.78×8.0454.21×
Python NumPy (IA)0.32357.11×16.820.45×65.090.52×
Python Pillow (IA)14.260.16×46.820.16×177.440.19×
Ver tabla estadística detallada — Windows 11 en VirtualBox (host Linux) (36 configuraciones × 100 ejecuciones)
ConfiguraciónImagennMediaMedianaDesv. est.Mín – MáxIQRCVSpeedup
Secuencial · 1 hiloMediana1003.5112.3002.0641.964 – 10.712.38058.8%1.00×
Secuencial · 1 hiloGrande1007.9167.6010.93667.197 – 13.640.560311.8%1.00×
Secuencial · 1 hiloMuy grande10042.8033.8419.7027.25 – 106.8421.2146.0%1.00×
SIMD+POSIX · 1 hilosMediana1000.33280.30870.06550.2540 – 0.61030.089019.7%7.45×
SIMD+POSIX · 1 hilosGrande1000.93400.87770.15080.7407 – 1.3560.279316.1%8.66×
SIMD+POSIX · 1 hilosMuy grande1008.0167.3325.2432.425 – 19.399.10465.4%4.61×
SIMD+POSIX · 2 hilosMediana1000.30990.29640.04980.2420 – 0.41720.084916.1%7.76×
SIMD+POSIX · 2 hilosGrande1000.52340.49440.16940.4475 – 2.1130.055632.4%15.37×
SIMD+POSIX · 2 hilosMuy grande1004.0633.7052.5041.470 – 11.684.07861.6%9.13×
SIMD+POSIX · 4 hilosMediana1000.37740.37220.07200.2357 – 0.54010.098019.1%6.18×
SIMD+POSIX · 4 hilosGrande1000.65090.58790.20380.4865 – 1.7850.108731.3%12.93×
SIMD+POSIX · 4 hilosMuy grande1002.5231.5652.3751.030 – 18.940.962394.1%21.63×
SIMD+POSIX · 8 hilosMediana1000.50150.48570.09000.4120 – 1.2780.052217.9%4.74×
SIMD+POSIX · 8 hilosGrande1000.85980.80940.18060.6871 – 1.7510.097921.0%9.39×
SIMD+POSIX · 8 hilosMuy grande1001.5891.2540.96691.124 – 9.1140.453460.8%26.98×
SIMD+POSIX · 16 hilosMediana1000.93700.89150.15370.7029 – 1.3360.256616.4%2.58×
SIMD+POSIX · 16 hilosGrande1001.4801.4380.17791.223 – 2.2470.156112.0%5.29×
SIMD+POSIX · 16 hilosMuy grande1001.8271.5060.91991.346 – 7.4140.141350.4%22.47×
OpenMP · 2 hilosMediana1001.3251.2490.24441.196 – 3.1070.059118.4%1.84×
OpenMP · 2 hilosGrande1005.1684.7870.74934.440 – 7.4761.10214.5%1.59×
OpenMP · 2 hilosMuy grande10028.0119.2515.0116.83 – 115.0921.0853.6%1.76×
OpenMP · 4 hilosMediana1000.79780.67390.19830.5837 – 1.2740.371124.9%3.41×
OpenMP · 4 hilosGrande1003.5283.7380.45632.289 – 4.2520.721812.9%2.03×
OpenMP · 4 hilosMuy grande1009.7298.8261.7998.382 – 14.911.24218.5%3.83×
OpenMP · 8 hilosMediana1000.55360.53430.08390.4984 – 1.2970.031715.2%4.30×
OpenMP · 8 hilosGrande1002.1072.0740.21621.890 – 4.0390.105110.3%3.67×
OpenMP · 8 hilosMuy grande1008.1988.0860.50967.462 – 10.630.60246.2%4.18×
OpenMP · 16 hilosMediana1000.56120.53030.15740.4785 – 1.9090.034728.0%4.34×
OpenMP · 16 hilosGrande1002.0402.0130.13381.833 – 2.9800.05756.6%3.78×
OpenMP · 16 hilosMuy grande1008.0088.0450.29987.261 – 9.1280.23133.7%4.21×
Python NumPy (IA)Mediana1000.37860.32350.09300.2591 – 0.60130.168024.6%7.11×
Python NumPy (IA)Grande10015.0916.825.2471.640 – 21.020.911334.8%0.45×
Python NumPy (IA)Muy grande10059.9865.0918.146.294 – 80.462.90130.2%0.52×
Python Pillow (IA)Mediana10013.4714.266.2781.228 – 46.271.80646.6%0.16×
Python Pillow (IA)Grande10045.8246.8215.474.425 – 110.064.47833.8%0.16×
Python Pillow (IA)Muy grande100170.14177.4435.6816.90 – 202.606.78421.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ónMedianaGrandeMuy grande
msSpeedupmsSpeedupmsSpeedup
Secuencial · 1 hilo0.24001.00×0.62901.00×2.3591.00×
SIMD+POSIX · 1 hilos0.15201.58×0.65700.96×2.2421.05×
SIMD+POSIX · 2 hilos0.09602.50×0.40951.54×1.5981.48×
SIMD+POSIX · 4 hilos0.10202.35×0.35701.76×1.2011.96×
SIMD+POSIX · 8 hilos0.20301.18×0.39701.58×1.5221.55×
SIMD+POSIX · 16 hilos0.39400.61×0.48501.30×1.5431.53×
OpenMP · 2 hilos0.17251.39×0.65050.97×2.6750.88×
OpenMP · 4 hilos0.14051.71×0.41701.51×1.3891.70×
OpenMP · 8 hilos0.07303.29×0.31152.02×2.1031.12×
OpenMP · 16 hilos0.20701.16×0.62551.01×1.7971.31×
Python NumPy (IA)0.87650.27×3.8270.16×7.3970.32×
Python Pillow (IA)2.2800.11×7.7270.08×29.440.08×
Ver tabla estadística detallada — Linux nativo (36 configuraciones × 100 ejecuciones)
ConfiguraciónImagennMediaMedianaDesv. est.Mín – MáxIQRCVSpeedup
Secuencial · 1 hiloMediana1000.23140.24000.05020.1210 – 0.41500.047521.7%1.00×
Secuencial · 1 hiloGrande1000.74080.62900.22990.5010 – 1.4400.321831.0%1.00×
Secuencial · 1 hiloMuy grande1002.3792.3590.21452.064 – 3.0430.22759.0%1.00×
SIMD+POSIX · 1 hilosMediana1000.16200.15200.03080.1360 – 0.37300.034519.0%1.58×
SIMD+POSIX · 1 hilosGrande1000.67410.65700.07120.5770 – 1.0880.046010.6%0.96×
SIMD+POSIX · 1 hilosMuy grande1002.2592.2420.07222.169 – 2.4990.11103.2%1.05×
SIMD+POSIX · 2 hilosMediana1000.10500.09600.02160.0900 – 0.25000.018020.6%2.50×
SIMD+POSIX · 2 hilosGrande1000.42450.40950.06310.3520 – 0.76900.066514.9%1.54×
SIMD+POSIX · 2 hilosMuy grande1001.5591.5980.18791.229 – 1.9050.294512.0%1.48×
SIMD+POSIX · 4 hilosMediana1000.11010.10200.01960.0960 – 0.21300.014017.8%2.35×
SIMD+POSIX · 4 hilosGrande1000.36000.35700.04910.2830 – 0.48700.065713.7%1.76×
SIMD+POSIX · 4 hilosMuy grande1001.2211.2010.09441.115 – 1.5580.08657.7%1.96×
SIMD+POSIX · 8 hilosMediana1000.20640.20300.02850.1680 – 0.29700.042513.8%1.18×
SIMD+POSIX · 8 hilosGrande1000.45990.39700.22250.3050 – 2.0360.125748.4%1.58×
SIMD+POSIX · 8 hilosMuy grande1001.4761.5220.11651.233 – 1.6750.16957.9%1.55×
SIMD+POSIX · 16 hilosMediana1000.40680.39400.05400.3160 – 0.65500.061713.3%0.61×
SIMD+POSIX · 16 hilosGrande1000.49460.48500.05460.4040 – 0.68800.066311.0%1.30×
SIMD+POSIX · 16 hilosMuy grande1001.5531.5430.16401.226 – 2.0750.227210.6%1.53×
OpenMP · 2 hilosMediana1000.18140.17250.03190.1540 – 0.35900.040017.6%1.39×
OpenMP · 2 hilosGrande1000.69300.65050.13400.5530 – 1.1360.100719.3%0.97×
OpenMP · 2 hilosMuy grande1002.6942.6750.27962.306 – 3.5210.441210.4%0.88×
OpenMP · 4 hilosMediana1000.14570.14050.01610.1360 – 0.25900.012011.1%1.71×
OpenMP · 4 hilosGrande1000.40940.41700.08200.2990 – 0.63900.152520.0%1.51×
OpenMP · 4 hilosMuy grande1001.4571.3890.20591.229 – 2.0320.381314.1%1.70×
OpenMP · 8 hilosMediana1000.69180.07301.6740.0720 – 7.6870.0123242.0%3.29×
OpenMP · 8 hilosGrande1000.63570.31150.71030.2900 – 4.2200.4582111.7%2.02×
OpenMP · 8 hilosMuy grande1002.3782.1030.99881.214 – 4.8621.01242.0%1.12×
OpenMP · 16 hilosMediana1000.31350.20700.44120.1210 – 3.9580.0658140.7%1.16×
OpenMP · 16 hilosGrande1000.69960.62550.27360.4240 – 2.5650.174339.1%1.01×
OpenMP · 16 hilosMuy grande1001.8511.7970.28201.372 – 3.8920.299315.2%1.31×
Python NumPy (IA)Mediana1000.89300.87650.11080.7303 – 1.2450.140712.4%0.27×
Python NumPy (IA)Grande1003.9023.8270.47333.163 – 5.4120.667612.1%0.16×
Python NumPy (IA)Muy grande1009.3497.3975.1665.231 – 34.422.87755.3%0.32×
Python Pillow (IA)Mediana1002.3232.2800.30911.859 – 3.2150.410513.3%0.11×
Python Pillow (IA)Grande1007.8337.7270.71156.798 – 10.450.84909.1%0.08×
Python Pillow (IA)Muy grande10029.3129.442.41726.26 – 39.053.8268.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ónMedianaGrandeMuy grande
msSpeedupmsSpeedupmsSpeedup
Secuencial · 1 hilo0.15751.00×0.50351.00×3.3451.00×
SIMD+POSIX · 1 hilos0.37350.42×1.1060.46×2.6361.27×
SIMD+POSIX · 2 hilos0.39450.40×0.56750.89×1.8041.85×
SIMD+POSIX · 4 hilos0.54900.29×0.89250.56×1.9461.72×
SIMD+POSIX · 8 hilos1.6790.09×1.6110.31×2.8541.17×
SIMD+POSIX · 16 hilos3.1190.05×3.5880.14×4.2220.79×
OpenMP · 2 hilos0.13501.17×0.51550.98×2.5831.29×
OpenMP · 4 hilos0.06702.35×0.27201.85×1.3882.41×
OpenMP · 8 hilos0.14501.09×0.54050.93×1.1912.81×
OpenMP · 16 hilos1.2120.13×1.3730.37×2.4981.34×
Python NumPy (IA)0.69960.23×2.7980.18×24.950.13×
Python Pillow (IA)1.8470.09×6.1760.08×24.510.14×
Ver tabla estadística detallada — Linux en VirtualBox (host Windows 11) (36 configuraciones × 100 ejecuciones)
ConfiguraciónImagennMediaMedianaDesv. est.Mín – MáxIQRCVSpeedup
Secuencial · 1 hiloMediana1000.25820.15750.56410.1000 – 5.3970.1230218.4%1.00×
Secuencial · 1 hiloGrande1000.62520.50350.63670.4080 – 6.3160.1907101.8%1.00×
Secuencial · 1 hiloMuy grande1004.0783.3452.5101.970 – 19.841.71361.5%1.00×
SIMD+POSIX · 1 hilosMediana1000.52690.37350.44030.2400 – 3.1660.218583.6%0.42×
SIMD+POSIX · 1 hilosGrande1001.4571.1060.87230.6640 – 4.9960.830259.9%0.46×
SIMD+POSIX · 1 hilosMuy grande1002.8042.6360.66862.143 – 6.9370.448223.8%1.27×
SIMD+POSIX · 2 hilosMediana1000.72630.39451.1190.2200 – 7.0270.3642154.0%0.40×
SIMD+POSIX · 2 hilosGrande1000.81070.56750.72720.4140 – 6.4020.307789.7%0.89×
SIMD+POSIX · 2 hilosMuy grande1002.4231.8041.8961.305 – 14.660.971878.2%1.85×
SIMD+POSIX · 4 hilosMediana1000.87650.54901.2300.2640 – 8.8660.5537140.3%0.29×
SIMD+POSIX · 4 hilosGrande1001.5340.89251.8790.4220 – 12.340.7447122.5%0.56×
SIMD+POSIX · 4 hilosMuy grande1002.6661.9461.9241.360 – 14.301.22572.2%1.72×
SIMD+POSIX · 8 hilosMediana1003.1631.6793.8220.7500 – 21.341.313120.8%0.09×
SIMD+POSIX · 8 hilosGrande1002.4881.6112.1241.027 – 13.831.48085.4%0.31×
SIMD+POSIX · 8 hilosMuy grande1004.0932.8543.5041.914 – 25.641.81485.6%1.17×
SIMD+POSIX · 16 hilosMediana1005.9473.1197.2981.421 – 41.322.529122.7%0.05×
SIMD+POSIX · 16 hilosGrande1005.7613.5886.1061.446 – 39.804.262106.0%0.14×
SIMD+POSIX · 16 hilosMuy grande1007.7954.2228.9782.370 – 55.343.241115.2%0.79×
OpenMP · 2 hilosMediana1000.19320.13500.13990.1210 – 0.90900.060572.4%1.17×
OpenMP · 2 hilosGrande1000.73470.51550.61470.4720 – 5.5200.217783.7%0.98×
OpenMP · 2 hilosMuy grande1002.7302.5830.56552.061 – 4.5230.732520.7%1.29×
OpenMP · 4 hilosMediana1000.08370.06700.06470.0640 – 0.51300.011277.4%2.35×
OpenMP · 4 hilosGrande1000.30720.27200.09230.2610 – 0.75400.030030.1%1.85×
OpenMP · 4 hilosMuy grande1001.6351.3880.55401.098 – 4.5890.823733.9%2.41×
OpenMP · 8 hilosMediana1000.30120.14500.97310.0710 – 8.0180.0880323.0%1.09×
OpenMP · 8 hilosGrande1000.53820.54050.12480.2660 – 1.4250.038023.2%0.93×
OpenMP · 8 hilosMuy grande1003.5011.1917.1290.9900 – 32.230.5283203.6%2.81×
OpenMP · 16 hilosMediana1003.8781.2129.3160.3210 – 70.731.374240.2%0.13×
OpenMP · 16 hilosGrande1002.1801.3732.4430.7110 – 23.041.466112.1%0.37×
OpenMP · 16 hilosMuy grande1004.8942.4987.2741.427 – 51.801.688148.6%1.34×
Python NumPy (IA)Mediana1000.80880.69960.41350.5645 – 4.0500.198951.1%0.23×
Python NumPy (IA)Grande1003.0752.7981.2872.281 – 13.580.519241.8%0.18×
Python NumPy (IA)Muy grande10034.9724.9536.075.486 – 225.9927.05103.1%0.13×
Python Pillow (IA)Mediana1002.1791.8471.0581.431 – 6.9480.701748.5%0.09×
Python Pillow (IA)Grande1007.4086.1763.3165.328 – 27.401.46544.8%0.08×
Python Pillow (IA)Muy grande10027.0124.517.19620.32 – 56.086.86726.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)

Panorama de distribuciones — Windows 11 nativo
Panorama de distribuciones — Windows 11 nativo Cada caja resume las 100 ejecuciones de esa configuración: la línea central es la mediana, la caja abarca el rango intercuartílico (Q1–Q3), los bigotes el resto y los puntos son outliers. Ejes: Tiempo de ejecución (ms) vs. configuración.
Panorama de distribuciones — Windows 11 en VirtualBox (host Linux)
Panorama de distribuciones — Windows 11 en VirtualBox (host Linux) Cada caja resume las 100 ejecuciones de esa configuración: la línea central es la mediana, la caja abarca el rango intercuartílico (Q1–Q3), los bigotes el resto y los puntos son outliers. Ejes: Tiempo de ejecución (ms) vs. configuración.
Panorama de distribuciones — Linux nativo
Panorama de distribuciones — Linux nativo Cada caja resume las 100 ejecuciones de esa configuración: la línea central es la mediana, la caja abarca el rango intercuartílico (Q1–Q3), los bigotes el resto y los puntos son outliers. Ejes: Tiempo de ejecución (ms) vs. configuración.
Panorama de distribuciones — Linux en VirtualBox (host Windows 11)
Panorama de distribuciones — Linux en VirtualBox (host Windows 11) Cada caja resume las 100 ejecuciones de esa configuración: la línea central es la mediana, la caja abarca el rango intercuartílico (Q1–Q3), los bigotes el resto y los puntos son outliers. Ejes: Tiempo de ejecución (ms) vs. configuración.

3.2 Tiempo vs. número de hilos (algoritmos paralelos en C)

Tiempo vs. hilos — Windows 11 nativo
Tiempo vs. hilos — Windows 11 nativo Distribución de las 100 ejecuciones de los algoritmos paralelos en C al variar los hilos. La línea discontinua marca la mediana del Secuencial. Ejes: Tiempo (ms) vs. nº de hilos.
Tiempo vs. hilos — Windows 11 en VirtualBox (host Linux)
Tiempo vs. hilos — Windows 11 en VirtualBox (host Linux) Distribución de las 100 ejecuciones de los algoritmos paralelos en C al variar los hilos. La línea discontinua marca la mediana del Secuencial. Ejes: Tiempo (ms) vs. nº de hilos.
Tiempo vs. hilos — Linux nativo
Tiempo vs. hilos — Linux nativo Distribución de las 100 ejecuciones de los algoritmos paralelos en C al variar los hilos. La línea discontinua marca la mediana del Secuencial. Ejes: Tiempo (ms) vs. nº de hilos.
Tiempo vs. hilos — Linux en VirtualBox (host Windows 11)
Tiempo vs. hilos — Linux en VirtualBox (host Windows 11) Distribución de las 100 ejecuciones de los algoritmos paralelos en C al variar los hilos. La línea discontinua marca la mediana del Secuencial. Ejes: Tiempo (ms) vs. nº de hilos.

④ Nativo vs. Virtualizado (preguntas 3 y 4)

Un mismo sistema operativo, nativo o dentro de VirtualBox, para la implementación insignia SIMD+POSIX.

Linux: nativo vs. VirtualBox (Pregunta 3)
Linux: nativo vs. VirtualBox (Pregunta 3) SIMD+POSIX. Las cajas claras (VM) muestran más outliers y mayor dispersión que las nativas.
Windows: nativo vs. VirtualBox (Pregunta 4)
Windows: nativo vs. VirtualBox (Pregunta 4) SIMD+POSIX. Penalización por virtualización en Windows.
Los 4 entornos lado a lado (imagen muy grande)
Los 4 entornos lado a lado (imagen muy grande) Escala logarítmica para Secuencial (1 hilo) y SIMD+POSIX (8 hilos).

⑤ Análisis de Speedup

5.1 Speedup vs. número de hilos

Speedup vs. hilos — Windows 11 nativo
Speedup vs. hilos — Windows 11 nativo Speedup = mediana(Secuencial) / mediana(configuración). La línea punteada en 1× separa aceleración (arriba) de penalización (abajo). Ejes: Speedup (×) vs. nº de hilos.
Speedup vs. hilos — Windows 11 en VirtualBox (host Linux)
Speedup vs. hilos — Windows 11 en VirtualBox (host Linux) Speedup = mediana(Secuencial) / mediana(configuración). La línea punteada en 1× separa aceleración (arriba) de penalización (abajo). Ejes: Speedup (×) vs. nº de hilos.
Speedup vs. hilos — Linux nativo
Speedup vs. hilos — Linux nativo Speedup = mediana(Secuencial) / mediana(configuración). La línea punteada en 1× separa aceleración (arriba) de penalización (abajo). Ejes: Speedup (×) vs. nº de hilos.
Speedup vs. hilos — Linux en VirtualBox (host Windows 11)
Speedup vs. hilos — Linux en VirtualBox (host Windows 11) Speedup = mediana(Secuencial) / mediana(configuración). La línea punteada en 1× separa aceleración (arriba) de penalización (abajo). Ejes: Speedup (×) vs. nº de hilos.

5.2 Speedup vs. tamaño de imagen (hilos fijos)

Speedup vs. imagen — Windows 11 nativo
Speedup vs. imagen — Windows 11 nativo Evolución del Speedup conforme crece la imagen, a hilos fijos. Ejes: Speedup (×) vs. tamaño de imagen.
Speedup vs. imagen — Windows 11 en VirtualBox (host Linux)
Speedup vs. imagen — Windows 11 en VirtualBox (host Linux) Evolución del Speedup conforme crece la imagen, a hilos fijos. Ejes: Speedup (×) vs. tamaño de imagen.
Speedup vs. imagen — Linux nativo
Speedup vs. imagen — Linux nativo Evolución del Speedup conforme crece la imagen, a hilos fijos. Ejes: Speedup (×) vs. tamaño de imagen.
Speedup vs. imagen — Linux en VirtualBox (host Windows 11)
Speedup vs. imagen — Linux en VirtualBox (host Windows 11) Evolución del Speedup conforme crece la imagen, a hilos fijos. Ejes: Speedup (×) vs. tamaño de imagen.

5.3 C/C++ (bajo nivel) vs. Python generado por IA

C/C++ vs. Python (IA) — Speedup
C/C++ vs. Python (IA) — Speedup Escala logarítmica. Todas las barras de C superan 1×; las de Python quedan por debajo.

5.4 Mapa de calor del Speedup

Mapa de calor del Speedup
Mapa de calor del Speedup Verde = aceleración (>1×); rojo = más lento que el secuencial (<1×). El número es el Speedup exacto.

⑥ 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.
Universidad del Istmo (UNISTMO) · Sistemas de Cómputo Paralelo y Distribuido

Comentarios

Entradas populares de este blog

Metodología y Entorno de Pruebas

Confrontación e Interpretación de Hipótesis