Sistema computacional
Se usa un cluster del laboratorio del grupo de Computación Científica y Programación Paralela, de la Universidad de Murcia. El cluster consta de 5 nodos, de los que se usan 3 en el concurso:
saturno es un sistema de memoria compartida con 4 Intel hexa-core NEHALEM-EX EC E7530 (total de 24 cores), 1.87 GHz, y 32 GB de memoria compartida. Se usa para los problemas de OpenMP.
marte y mercurio son AMD Phenom II X6 1075T (hexa-core), 3 GHz, 8 GB (marte) y 15 GB (mercurio), caches privadas L1 y L2 de 64 KB y 512 KB, y L3 de 6 MB compartida por todos los cores en cada nodo, con una tarjeta NVIDIA Fermi.
Los nodos están conectados a través de fast-ethernet.
Sistema del concurso
Se utiliza Mooshak para los concursos. Se accede a través de la página del Concurso Español de Programación Paralela (luna.inf.um.es). Hay que pedir cuenta al profesor correspondiente. El concurso a seleccionar es PP-FP2014.
Al entrar al concurso hay 5 opciones disponibles::
-Se puede seleccionar y ver un problema. Para cada problema se proporciona:
El esquema que usa Mooshak para la entrada/salida, para la toma de tiempos y para el cálculo del speed-up (aumento de velocidad con respecto a una solución secuencial simple). Este fichero no se puede modificar, sino que lo usa Mooshak internamente.
Un fichero con una solución proporcionada por los organizadores. Normalmente se proporciona una solución secuencial, pero en algunos casos se puede proporcionar una paralela básica que se puede modificar. Los participantes pueden introducir cambios en las versiones proporcionadas para analizar el uso del paralelismo. Se trata de intentar acelerar lo máximo posible la solución del problema.
Un ejemplo de fichero de entrada similar al que se utiliza para evaluar el problema.
-Los participantes pueden seleccionar y enviar el fichero donde han escrito su solución
-Se pueden hacer preguntas a los organizadores con la opción Preguntas.
-La opción Ayuda da más información sobre Mooshak (no es de utilidad para nuestra prueba).
-y Salir.
Se pueden ver los envíos, la clasificación y las preguntas.
La prueba
Hay algunos problemas con OpenMP (se usa saturno), otros con MPI y/o OpenMP (en marte y/o mercurio), y otros con CUDA (en mercurio). Los problemas son adaptaciones a la estructura del concurso de los que aparecen en las transparencias y se dan como ejemplo.
El número de nodos y cores y el tipo de problema se indica con comentarios al principio del fichero sec.c (o sec.cu para CUDA). El problema se indica también en los comentarios, y hay que seleccionarlo cuando sec.c se va a enviar al sistema.
Los comentarios al principio del fichero deber ir en el formato correcto. Se declaran 4 varaibles:
CPP_CONTEST: nombre del concurso, PP-FP2014. No hay que modificarlo.
CPP_PROBLEM: nombre del problema. No hay que modificarlo.
CPP_LANG: C+OPENMP para problemas OpenMP, C+OPENMP+MPI para problemas MPI o MPI+OpenMP, y CUDA para problemas en CUDA.
CPP_PROCESSES_PER_NODE: número de cores a reservar en el nodo. Se modifica para indicar los recursos que se quiere usar:
-en problemas OPENMP se debe indicar “saturno 1”. Se reservan así todos los cores de saturno (24). El número de hilos a usar en el programa hay que indicarlo en el fichero sec.c, por ejemplo con la función omp_set_num_threads.
-en problemas MPI se indica el número de procesos que se pondrán en marcha en marte y mercurio. Por ejemplo, “marte 2 mercurio 3” indica que se ponen en marcha 2 procesos MPI en marte y 3 en mercurio. Se pueden usar todos los cores en marte y mercurio, y cada proceso puede lanzar hilos OpenMP.
-en problemas CUDA se usa la tarjeta de mercurio, por lo que hay que indicar “mercurio 1”.
Puntuación
En los concursos se obtiene una clasificación teniendo en cuenta el speed-up conseguido para cada problema (la velocidad respecto a la versión secuencial proporcionada por la organización).
En nuestro caso para cada problema se puede ver el tiempo que se ha tardado y la velocidad, que será cero si no se mejora el tiempo de la solución básica. Si la solución que se envía va v veces más rápida que la básica la puntuación es v-1. Si se realizan más de 10 envíos, por cada envío adicional se resta uno a la puntuación.