Estoy tratando de ejecutar LIBSVM en modo paralelo, sin embargo mi pregunta es en OpenMP en general. De acuerdo con LIBSVM FAQ, he modificado el código con #pragma llamadas para usar OpenMP. También he modificado el Makefile (por Un * x) mediante la adición de un argumento -fopenmp por lo que se convierte en:¿Cómo saber si OpenMP está funcionando?
CFLAGS = -Wall -Wconversion -O3 -fPIC -fopenmp
El código se compila bien. Compruebo (ya que no es mi PC) si OpenMP se instala por:
/sbin/ldconfig -p | grep gomp
y veo que está instalado -probablemente-:
libgomp.so.1 (libc6,x86-64) => /usr/lib64/libgomp.so.1
libgomp.so.1 (libc6) => /usr/lib/libgomp.so.1
Ahora; cuando ejecuto el programa, no veo ninguna mejora de velocidad. También cuando consulto "arriba" el proceso usa como máximo% 100 CPU (hay 8 núcleos), también no hay un cuello de botella de CPU (solo un usuario más con% 100 de uso de CPU), esperaba ver más de % 100 (o un indicador diferente) que el proceso usa múltiples núcleos.
¿Hay alguna forma de comprobar si funciona en varios núcleos?
Sólo un pensamiento, pero no debería ser máximo. 100%/número de núcleos cuando solo se está ejecutando un hilo? – Tibor
no, cuando se emplean multinúcleos (al menos en la instalación de mi servidor) vemos valores mucho más grandes que 100% –
@Tibor, la parte superior predeterminada es Irix que muestra 100% para la carga completa de una sola CPU yn * 100% para la carga completa de n CPUs. Si desactiva el modo Irix (presione 'I'), se mostrará 100% cuando se utilicen todas las CPU. –