AC TEST UGR
![]() |
![]() |
![]() |
Título del Test:![]() AC TEST UGR Descripción: test de arquitectura de computadores de la ugr |




Comentarios |
---|
NO HAY REGISTROS |
¿Que paradigma de programacion paralela implementa OpenMP?. Paso de mensajes mediante procesos. Memoria compartida mediante procesos. Memoria compartida mediante hebras. SIMD. ¿Cual de las siguientes no es una directiva de OpenMP?. exclusive. for. master. single. Que resultado muestra por pantalla la ejecución del siguiente código que no usa funciones OpenMP suponiendo que OMP_NUM_THREADS=3?. Ninguna correcta. xx. xxx. x. En el siguiente fragmento de código ¿qué hebras ejecutaran los "section" de "sections"?. Hebras 0 y 1. Todas posibles. Hebras 0 y 2. Hebras 1 y 2. ¿Cuantas hebras ejecutarán una directiva sections con 4 secciones (section) en una platadoema con 2 cores en la que se ha fijado la variable de entorno OMP_NUM_THREADS al valor 3?. 3. 1. 2. 4. ¿Cuál de los siguientes fragmentos de código paralelo calcula correctamente la sumatoria de los primeros números impares hasta el N=1000?. #pragma omp parallel sections { #pragma omp section for(long i=1; i sum += i; for(long i=3; i sum += i; }. #pragma omp parallel for for(long i=1; i sum += i; int sum=0;. ninguna. int sum=0; #pragma omp parallel for(long i=1; i sum += i; int sum=0;. ¿Cual será el valor de n tras ejecutar el siguiente código?. 8. 16. 2. Indeterminado. ¿Cual de las siguientes afirmaciones es correcta?. Ninguna es correcta. Directivas y cláusulas son iguales. Las directivas ajustan el comportamiento de las cláusulas. Las cláusulas ajustan el comportamiento de las directivacs. ¿Cual será el valor de n tras ejecutar el siguiente codigo?. 6. -1. 5. no se sabe. Cuando se usa una planificación schedule=guided en un bucle for en OpenMP, el tamaño del chunk... es siempre constante. Se adapta dinámicamente en función de la velocidad de cada hebra. Siempre debe ser mayor que 1. Va decreciendo conforme se van ejecutando las iteraciones del bucle. El tiempo de ejecucion de un programa paralelo... Se reduce conforme el tamaño del problema aumenta. Aumenta conforme el tamaño del problema disminuye. Siempre será menor que el de su versión secuencial, para cualquier tamaño del problema. Puede ser mayor que el tiempo de la versión secuencial para tamaños de problema pequeños, debido a la sobrecarga introducida al crear y destruir las hebras. Supongamos una máquina en la que el número de hebras de las que se puede disponer para ejecutar zonas paralelas de código es ilimitado. En esas condiciones, ¿qué valdrá la variable al terminar de ejecutar el siguiente código?. 5. N esta indefinida al salir del bucle porque es privada. Dependerá del numero de hebras que lo ejecuten en el momento. 1. ¿Cual es la función de la cláusula en el siguiente código? #pragma omp parallel if(n>20). Evitar la sobrecarga introducida al paralelizar el código para tamaños del problema pequeños. No ejecutar el código del bloque estructurado si n<=20. Las otras respuestas no son correctas. Ejecutar las ramas if y else del bloque estructurado en paralelo. ¿Con cuántas hebras se ejecuta este código si previamente se ha fijado la variable de entorno OMP_NUM_THREADS=8?. 4. 8. 2. 1. Indica que reparto de iteraciones a hebras es correcto suponiendo 3 hebras y la clausula Schedule(dynamic,2). iteración: 0 1 2 3 4 5 6 7 8 9 hebra: 0 0 1 1 2 2 2 2 0 1. iteración: 0 1 2 3 4 5 6 7 8 9 hebra: 0 0 1 1 2 2 1 1 0 0. iteración: 0 1 2 3 4 5 6 7 8 9 hebra: 0 0 1 1 2 2 0 0 0 2. ) iteración: 0 1 2 3 4 5 6 7 8 9 hebra: 0 0 0 1 1 1 2 2 2 0. En el siguiente fragmento de código¿Aue hebras ejecutarán los section de sections?. 0 y 1. 1 y 2. Todas correctas. 0 y 2. ¿Que opcion es mas eficiente para repartir la iteraciones de un bucle entre varias hebras?. #pragma omp for. #pragma omp parallel for schedule(dynamic). #pragma omp parallel for schedule(static). Todas igual de eficientes. Dado el siguiente codigo y suponiendo el vector inicializado ¿Qué opción es verdadera?. La ejecución finaliza antes si v no contiene ningún múltiplo de 3. La ejecución finaliza antes si v contiene muchos múltiplos de 3. Los valores contenidos en v no afectan a la velocidad de ejecución. Sólo el desenrollado de bucle puede servir para optimizar el código. ¿Que código cree que generaría un compilador si se utiliza la opción -O0?. a. b. c. ninguna. ¿Que opcion es mas eficiente para reparter las iteraciones de un bucle entre varias hebras?. a. b. c. d. ¿Que opcion es mas eficiente para repartir las iteraciones de un bucle entre varias hebras?. a. b. c. d. ¿Para que puede servir especificar la opcion --exclusive a srun?. Para no compartir nucleos fisicos con otros trabajos que se estén ejecutando. Para no compartir nodos del cluster con otros trabajos que se esten ejecutando. Para no compartir zocalos (sockets) de CPU con otros trabajos que se estén ejecutando. Para no permitir que otros trabajos se añadan a la cola (partition) hasta que srun haya terminado de ejecutarse. ¿Cual es el numero total de zócalos de CPU (sockets) que hay en la particion ac (la formada por tres equipos atcgrid[1-3]?. 6. 8. 2. 3. ¿Cual de las siguientes lineas permite a un script de SLURM utilizar dos procesadores?. SBATCH --ntask=1. SBATCH --hint=nomultithread. SBATCH --cpus-per-task=2. SBATCH --partition=ac4. ¿Para que sirve el comando sinfo?. Lista informacion de las particiones. Lista informacion de las particiones, los nodos y los trabajos encolados. Lista de informacion de las particiones y los trabajos encolados. Lista de informacion de las particiones y de los nodos. ¿Para que se utiliza la orden put bajo un cliente sftp conectado al front-end de atcgrid?. Subir un fichero desde la maquina local al front-end de atcgrid. Ejecutar interactivamente un script en un nodo de computo. Descargar un fichero desde el frontend de atcgrid a local. subir un script a la cola ac de slurm. ¿Qué variable de Slurm permite conocer el identificador de un trabajo?. SLURM_JOBID. SLURM_JOB_USER. SLURM_SUBMIT_DIR. SLURM_JOB_NAME. Indique cual es la orden correcta para compilar un programa OpenMP llamado programa.c. gcc -O2 -fopenmp -o programa.c programa.c. gcc -O2 -fopenmp programa.c -o programa. gcc -openmp -o programa.c programa. gcc -O2 -openmp programa.c -o programa. ¿Cual es la opcion abreviada de la opcion --cpus-per-task=24 incluida en el comando srun o sbatch?. -p 24. -c 24. Ninguna correcta. -cpt 24. ¿Cuantos nodos de cómputo hay en total en atcgrid?. 4. 5. 3. 2. ¿Cuantos microprocesadores tiene cada nodo de computo de atcgrid?. 3. 1. 2. 4. Indique cuales son los principales componentes del lenguaje OpenMP. Ninguna correcta. Directivas al compilador. Instrucciones al compilador. Variables de entorno. En el codigo Xinit puede no estar correctamente dispobible para otras hebras ¿Que directiva utilizaría en lugar de master para que funcionase correctamente?. parallel. parallel single. single. no modificaria nada, funciona correctamente. ¿Entre que lineas añadiría "#pragma omp atomic" para evitar una condicion de carrera?. 1-2. 2-3. 3-4. Ninguna correcta. Si desea ejecutar la siguiente linea de codigo en una zona de exclusion mutua ¿Que directiva deberia utilizar? actualiza_matrices(matriz1, matriz2, suma_parcial);. critical. atomic. ninguna. single. ¿Cual de las siguientes combinaciones de directivas no es correcta?. Ninguna. #pragma omp parallel for. #pragma omp parallel single. #pragma omp parallel sections. ¿Que ocurre si se coloca la directiva barrier en 2 puntos diferentes del codigo?. Cuando una hebra llega a una barrera se espera hasta que todas las hebras de la region se encuentren esperando en cualquiera de las dos barreras. Se produce interbloqueo impidiendo el paso de la hebras se les asignamos el mismo nombre a ambas directivas. Error de compilacion. Todas las hebras de la region se sincronizan cuando llegan a la primera barrera y se vuelven a sincronizar cuando llegan a la segunda. ¿Cual de la siguiente directivas no incluye una barrera implícita al final?. sections. parallel. for. atomic. ¿Cual de las siguientes afirmaciones sobre la sintaxis de directivas es correcta?. Las clausulas son obligatorias. Comienzan por #pragma omp nombre-directiva. Comienzan por ==omp nombre directiva pragma. Comienzan por #omp pragma nombre-directiva. ¿Cual de las siguientes afirmaciones acerca de la directiva master es cierta?. Las hebras solo se sincronizan al principio de la directiva, pero no al final. Las hebras se sincronizan al final de la directiva pero no al principio. Ninguna correcta. Algunas al principio y otras al final. Indica en el siguiente bloque de codigo como se comportan las variables i y j que actuan como contadores de los diferentes bucles. Suponga el vector a inicializado a 0. Ambas variables son compartidas. La variable i es compartida y la j es privada. Ambas variables son privadas. La variable i es privada y j es compartida. ¿Cual de los siguientes operadores no esta disponible en la clausula reduction?. -. %. ^. |. En OpenMP, el uso de las clausulas es. Opcional solo cuando el numero de hebras en la region paralela es mayor que 1. Obligatorio solo cuando no se ha especificado ninguna directiva. Opcional. Obligatorio siempre. Indique cual de las siguientes directivas no admiten claúsulas. parallel y section. sections y for. barrier y master. for y single. Dado el siguiente fragmento de código ¿Cual es el valor de la variable b fuera de la región paralela al terminar su ejecucion?. 5. 10. 0. Indefinido. Dado el siguiente fragmento de codigo ¿Cual de las siguientes afirmaciones sobre el valor de la variable a fuera de la region paralela al terminar la ejecucion del programa es cierta?. Siempre tendría el mismo valor que si se omitiese la cláusula private(a). Su valor es siempre distinto antes y despues de la region paralela. Ninguna es correcta. Siempre tendría el mismo valor que si se utilizase la clausula shared(a) en lugar de private(a). ¿Cual de las siguientes clausulas copia el valor de una variable entre las distintas copias privadas que tienen las hebras de esa misma variable(difusion)?. shared. private. lastprivate. firstprivate. ¿Cual de las siguientes afirmaciones es más correcta cuando incluimos simultaneamente las clausulas firsprivate(var1) y lastprivate(var1) en una direectiva combinada parallel sections?. se crea una copia privada de la variable var1 para cada hebra. Se inicializan las copias privadas de la variable var1. Al salir del bloque paralelo la variable var1 toma el valor que tenía en la ultima seccion (section). Todas son correctas. ¿Con que directiva se debe usar la clausula copyprivate?. master. single. atomic. con cualquiera. Dado el siguiente codigo ¿que valor de a imprimiria cada hebra?. Error de compilacion. La hebra master tendria a=5 y el resto un valor indefinido. Todas las hebras tendrian a = 0. Todas las hebras tendrian a = 5. Indique cual de las siguientes afirmaciones sobre el numero de threads que se utilizan en una region paralela OpenMP es cierta. El numero de threads que fija la cláusula num_threads prevalece ante lo fijado por la funcion de entorno de ejecucion omp_set_num_threads(). El numero de threads que fija la funcion de entorno de ejeccion omp_set_num_threads() prevalece ante cualquiera que sea el resultado de evaluar la clausula if. Si el resultado de evaluar la clausula if es positivo se utiliza una única thread, independientemente de lo fijado por la clausula num_threads(). El numero de threads solo se puede fijar mediante la utilizacion de clausulas y variables de entorno. Indique el tipo de reparto que se realiza en el siguiente codigo. Asuma inicializacion de las variables a y b a valores estocásticos y c a valor cero. El que devuelve la variable de control run-sched-var. El que devuelven las variables run-sched-var y dyn-sched-var. El que indique la variable de control interno def-sched-var. El que devuelve la funcion de entorno omp-set-dynamic(). El tamaño del chunk cuando se usa la clausula schedule con una asignacion de iteraciones de tipo guided es. El que indique la variable de control interno def_sched_var. El valor que se especifica en la variable chunk de la clausula schedule. Proporcional al numero de iteraciones que restan divido por el numero de hebras. Se asigna en tiempo de ejecucion. Cual de las siguientes es verdadera. La clausula dynamic se suele usar cuando se desconoce el tiempo de cada iteracion independientemente del numero de hebras. La clausula dynamic se suele usar cuando se desconoce el tiempo de cada iteracion y el numero de hebras. La clausula dynamic no añade ninguna sobrecarga. La clausula dynamic siempre reparte iteraciones en bloques de 1. ¿Cuantas hebras se utilizarian para ejecutar una region paralela de un programa en un computador del cluster con 4 nucleos fisicos y 8 nucleos logicos si unicamente establecemos las variables de entorno OMP_DYNAMIC=FALSE y OMP_NUM_THREADS=24?. 24. 8. 4. No se puede determinar hasta ejecutar el programa. ¿Que controla la variable de control interna dyn-var?. El ajuste dinamico del numero de hebras que se utilizaran para ejecutar regiones paralelas. El uso de memoria dinamica para las variable privada creadas por OpenMP. El reparto dinamico de las iteraciones de un bucle entre las hebras disponibles en la region paralela. El uso de memoria dinamica para las variables compartidas. Indica que reparto de iteraciociones a hebras es correcto suponiendo 3 hebras y la clausula schedule(static). iter: 0 1 2 3 4 5 6 7 8 9 10 11 hebra: 0 1 2 3 0 1 2 3 0 1 2 3. iter: 0 1 2 3 4 5 6 7 8 9 10 11 hebra: 0 1 2 0 1 2 0 1 2 0 1 2. iter: 0 1 2 3 4 5 6 7 8 9 10 11 hebra: 0 1 2 2 1 0 2 1 0 2 1 0. iter: 0 1 2 3 4 5 6 7 8 9 10 11 hebra: 0 0 0 0 1 1 1 1 2 2 2 2. Indica cual de las siguientes afirmaciones sobre la planificacion de iteraciones en bucles de OpenMP es cierta. La forma de asignacion noo se puede modificar mediante la utilizacion de funciones de entorno de ejecucion. static, dynamic, guided y runtime son formas de asignacion. Por defecto, se utiliza la forma de asignacion dynamic. El tamaño del chunk unicamente se puede modificar mediante el uso de la clausula schedule. Indica cual es la variable de entorno asociada a la variable de control nest_var indicando tambien su funcionalidad. export OMP_NESTED=TRUE y sirve para permitir zonas paralelas anidadas. export VAR_OMP_NESTED=TRUE y sirve para permitir modificar variables compartidas en exclusion mutua. export OMP_NESTED_VAR=TRUE y sirve para permitir modificar variables compartidas. export VAR_NESTED=TRUE y sirve para entrar en una seccion critica. Supongamos el siguiente bucle que debe ser desenrrollado para optimizar el codigo. Se sabe que N es multiplo de 4. Indique cuantos saltos contendrá el código desenrrollado si el contador del bucle queremos que se incremente de 4 en 4. Considere a, b y c vectores ya inicializados con valores reales for(int i=0; i<N; i++) a[i]+=b[i]*c[i]. N/4-1. N/4. N*4. N/4+1. ¿Que desventaja se produce al evitar el uso de punteros en un codigo ambiguo?. El codigo es mas dependiente de la maquina. El compilador puede asignar valores a las variables en tiempo de compilacion. Se realizan cargas de memoria mientras que un almacenamiento esta en marcha. Las instrucciones de almacenamiento se realizan despues o bastante antes de las de carga de memoria. ¿Cual de las siguientes cuestiones sobre la optimizacion de codigo es correcta?. Es conveniente tener en cuenta la arquitectura o conjunto de arquitecturas en las que se a de ejecutar la aplicacion a programar. Para optimizar facilmente resulta mejor dejar el proceso de optimizacion para el final. Los cuellos de botella en el codigo no se deben optimizar salvo si se hace en lenguaje ensamblador. Desde lenguajes de alto nivel no se pueden realizar optimizaciones específicas para un procesador en concreto. Para una cache L1 de tipo asociativo por conjuntos, cuya linea de cache es de 64B, tiene 4 vía de tamaño de 32KB ¿Que valor debemos asignar en XXX para que los punteros tempA y tempB estén apuntando a zonas de memoria que empiezan en posiciones que son multiplos de 64 y que no se asignarán al mismo conjunto de cache L1?. 2KB. Ninguno. 6KB. 4KB. ¿Para que sirve la tecnica de precaptacion o prefetch?. Ninguna otra respuesta es correcta. Predice los siguientes bloques de memoria que se van a usar pero no los carga en la caché. Carga bloques de memoria en la caché antes de que se vayan a utilizar. Predice los siguientes bloques de memoria que se van a usar y los carga en la cache. Indique cual de las siguientes ventajas es propia de la tecnica del desenrollado de bucles. Elimina todos los saltos de un bucle. Reduce el tamaño del codigo a ejecutar. Genera una ejecucion de la condicion de salto mas rapida. Aumenta la probabilidad de encontrar instrucciones independientes que podrán ejecutarse en paralelo. ¿Como se puede reducir el numero de saltos de un programa reorganizando las opciones case de las sentencias switch?. Primero deben ir las opciones case que tengan mas probabilidad de ejecutarse que las otras opciones. Primero deben ir las opciones case que tengan un mayor numero de instrucciones. Primero deben ir las opciones case que tengan un menor numero de instrucciones. Primero deben ir las opciones case que tengan menos probabilidad de ejecutarse que las otras opciones. Dada la siguiente multiplicacion de matrices ¿Cual sería el orden correcto de los bucles para mejorar la localidad de los accesos?. i,k,j. k,j,i. No hace falta permutar. k,i,j. |