Estoy ejecutando un programa de multiplicación de matrices completamente paralelo en un Mac Pro con un procesador Xeon. Creo 8 hilos (tantos hilos como núcleos), y no hay problemas de escritura compartida (no escribo en las mismas ubicaciones). Por alguna razón, mi uso de pthread_create
y pthread_join
es aproximadamente el doble de lento que con #pragma openmp
.Por qué los subprocesos POSIX son más lentos que OpenMP
No hay otras diferencias en nada ... mismas opciones de compilación, el mismo número de hilos en ambos casos, el mismo código (excepto las porciones pthread
Pragma/obviamente), etc.
Y los bucles son muy grande - No estoy paralelizando pequeños bucles.
(realmente no puedo enviar el código porque es un trabajo escolar.)
¿Por qué puede estar pasando esto? ¿OpenMP no usa los hilos POSIX? ¿Cómo puede ser más rápido?
¿Ambos usan la misma cantidad de tiempo acumulado de CPU? – Gabe
¿Ha verificado que OpenMP está utilizando la misma cantidad de subprocesos que su versión manual? – Gabe
¿Qué sucede si solo usa 7 hilos en cada uno? – Jess