Rutinas de ejecución y monitorizado de de hebras, procesos y entornos paralelos.
Soporte de sincronización mediante cerrojos OpenMP. Las rutinas de tiempo dan soporte para la portabilidad del timer.
Los prototipos de la librería de rutinas están definidas en el fichero “omp.h”.
void omp_set_num_threads(int num_threads);
Afecta al numero de hebras usadas posteriormente por la regiones paralelas no especificadas por la clausula num_threads.
int omp_get_num_threads(void);
Devuelve el numero de hebras en el equipo actual.
int omp_get_max_threads(void);
Devuelve el numero máximo de hebras que pueden utilizarse en una nueva región paralela.
int omp_get_thread_num(void);
Devuelve el identificador de la hebra actual, donde el identificador esta entre 0 y el tamaño máximo del equipo menos 1.
int omp_get_num_procs(void);
Devuelve el numero de procesadores disponibles para el programa.
int omp_in_parallel(void);
Devuelve true si la llamada a la rutina se realiza dentro de una región paralela activa; en otro caso devuelve false.
void omp_set_dynamic(int dynamic_threads);
Activa o desactiva el ajuste dinámico del número de subprocesos disponibles.
int omp_get_dynamic(void);
Devuelve el valor de la variable de control interno (VIC) dyn-var, para determinar si el ajuste dinámico del número de procesos está activado o desactivado.
void omp_set_nested(int nested);
Activa o desactiva el paralelismo anidado, mediante la modificación de nest-var (VIC).
int omp_get_nested(void);
Devuelve el valor del nest-var ()VIC, que determina si el paralelismo anidado está activado o desactivado.
void omp_set_schedule(omp_sched_t kind, int modifier);
Afecta al planificador por defecto usado en las rutinas, modifica la variable run-sched-var (VIC).
void omp_get_schedule(omp_sched_t *kind,int *modifier);
Devuelve el planificador aplicado en las rutinas de planificación.
int omp_get_thread_limit(void)
Devuelve el numero máximo de hebras disponibles para el programa.
void omp_set_max_active_levels(int max_levels);
Limita el numero regiones paralelas anidadas, modifica la variable max-active-levels-var (VIC).
int omp_get_max_active_levels(void);
Devuelve el valor de la max-active-levels-var (VIC), que determina el número máximo de regiones paralelas anidadas.
int omp_get_level(void);
Devuelve el número de regiones paralelas anidadas que contiene la llamada.
int omp_get_ancestor_thread_num(int level);
Devuelve, para un determinado nivel anidado de la hebra actual, el numero de hebra padre o al que actualmente pertenece.
int omp_get_team_size(int level);
Devuelve, para un determinado nivel anidado de la hebra actual, el tamaño del equipo del hebra padre o al que actualmente pertenece.
int omp_get_active_level(void);
Devuelve, para un determinado nivel anidado de la hebra actual, el numero de hebra del padre.
void omp_init_lock(omp_lock_t *lock); void omp_init_nest_lock(omp_nest_lock_t *lock);
Esta rutina inicializa los cerrojos de OpenMP
void omp_destroy_lock(omp_lock_t *lock); void omp_destroy_nest_lock(omp_nest_lock_t *lock);
Estas rutinas de asegurar que el bloqueo de OpenMP no está inicializado.
void omp_set_lock(omp_lock_t *lock); void omp_set_nest_lock(omp_nest_lock_t *lock);
Estas rutinas proporcionan un medio de establecer un bloqueo de OpenMP.
void omp_unset_lock(omp_lock_t *lock); void omp_unset_nest_lock(omp_nest_lock_t *lock);
Estas rutinas proporcionan un medio de establecer un bloqueo de OpenMP.
int omp_test_lock(omp_lock_t *lock); int omp_test_nest_lock(omp_nest_lock_t *lock);
Estas rutinas comprueba si el cerrojo esta bloqueado, no suspendiendo la ejecución de la tarea.
double omp_get_wtime(void);
Devuelve el valor del reloj en segundos.
double omp_get_wtick(void);
Devuelve la precisión del reloj