Afinidad de OpenMP y CPU

2 minutos de lectura

Afinidad de OpenMP y CPU
Jakub M.

Será sched_setaffinity o pthread_attr_setaffinity_np trabajar para establecer la afinidad de subprocesos en OpenMP?

Relacionado: Afinidad de CPU

1641929738 442 Afinidad de OpenMP y CPU
osgx

Sí, las llamadas con nombre funcionarán para establecer la afinidad de subprocesos. El único problema es corregir el número de subproceso y establecer la afinidad correcta en el subproceso correcto (puede intentar usar la programación estática de for bucle para un número conocido de subprocesos).

Como sé, casi todos los openmp permiten establecer afinidad a través del entorno. El nombre de la variable de entorno varía (no estaba estandarizado hace un tiempo). yo suelo http://www.spec.org/omp2001/results/omp2001.html página para encontrar la implementación de openMP y buscará un nombre de variable de entorno específico. La afinidad se establece en ~ la mitad de los resultados de specOMP. También hay algunas configuraciones adicionales de ajuste de rendimiento de OpenMP en los resultados.

P.ej Para el compilador de Intel la variable es

 export KMP_AFFINITY=compact,0

Para el compilador sun:

 export SUNW_MP_PROCBIND=TRUE

Para gcc (antes de openmp 3.1)

 export GOMP_CPU_AFFINITY=0-63

donde 63 es el número máximo de CPU (cuando se cuenta desde 0)

Y Estándar OpenMP más reciente, versión 3.1 define la variable de entorno OMP_PROC_BIND (consulte la sección 4.4), que es una forma estandarizada de configurar la afinidad en OpenMP. El uso es:

 export OMP_PROC_BIND=true

  • ¡Gracias! nada a nivel de idioma, como pthread_attr_setaffinity_np?

    – Jakub M.

    30 nov.

  • no, el estándar openmp no tiene pragma o funciones de vinculación de subprocesos. La única forma (y la recomendada) es vincular subprocesos a través de una variable de entorno, específica del compilador o openmp3.1. Esta configuración debe hacerse temprano, antes de iniciar main.

    – osgx

    30 de noviembre de 2011 a las 13:28

  • entonces, estrictamente hablando, su respuesta debe comenzar con “No” 🙂

    – Jakub M.

    30 nov. 2011 a las 15:00

  • No, solo mi comentario. OpenMP en sí mismo no tiene funciones de configuración de afinidad; pero OpenMP generalmente se implementa sobre pthread y libpthread tiene una función de configuración de afinidad. Lo mismo ocurre con el kernel de Linux. Si puede ejecutar el código definido por el usuario en el subproceso, puede vincular el subproceso a la CPU.

    – osgx

    30 nov.

.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad