TEST BORRADO, QUIZÁS LE INTERESE: MP-MPI
COMENTARIOS | ESTADÍSTICAS | RÉCORDS |
---|
REALIZAR TEST
Título del Test:
MP-MPI Descripción: Test de MPI Autor: John Lennon OTROS TESTS DEL AUTOR Fecha de Creación: 08/12/2024 Categoría: Informática Número Preguntas: 45 |
COMPARTE EL TEST
Comentar
No hay ningún comentario sobre este test.
Temario:
MPI_Bcast() Es una rutina colectiva que sirve para enviar el mismo mensaje desde el proceso root a los demás procesos dentro de un comunicador. Es una rutina colectiva que sirve para dividir los datos del bufer de envío entre los procesos dentro de un comunicador. Es una rutina colectiva que sirve para recoger las partes del bufer de recepción que se encuentran en los procesos dentro de un comunicador. MPI_Irecv() El proceso que lo ejecuta necesita realizar un MPI_Wait() para estar seguro de que se han recibido los datos. Se puede usar el bufer de recepción en los siguientes comandos ya que es bloqueante. Normalmente el siguiente comando es un MPI_Wait(). La función MPI_Init() Solo debe ejecurase en el proceso root. Se puede ejecutar varias veces en un proceso MPI. Debe llamarse en cada programa MPI antes de usar otras fuciones MPI y solo debe llamarse una sola vez. En el comando: MPI_Send(message, 13, MPICHAR, x, 10, MPI_COMM_WORLD); ¿Cuando puede modificarse x sin que se afecte el mensaje que se envía? Cuando la rutina retorna, es decir en los comandos siguientes a este. En cualquier momento Antes de ejecutar la rutina. Cualquiera de las opciones. MPI_Send(message, 4, MPI_CHAR, 5, tag, MPI_COMM_WORLD) envía un mensaje al proceso: 4 tag 5. ¿Qué combinación de rutinas MPI entre dos procesos vecinos que tienen que recibir y enviar datos uno del ortro es más eficiente? MPI_Irecv + MPI_Send MPI_Isend + MPI_Irecv No se sabe ya que MPI es portable pero no su eficiencia. MPI_Recv(message, 4, MPI_CHAR, 5, tag, MPI_COMM_WORLD, &status) Describe el parámetro tag: Es el tipo de grupo de procesos. Es tipo del método de comunicación. Es un número asignado por el usuario que debe casar en ambos, emisor y receptor. Es el tipo de message en el mensaje de recepción. MPI_Probe() se utiliza Para ver si ha llegado un mensaje del que no se sabe el emisor ni la etiqueta, sin bloquearse. Para bloquearse hasta que haya llegado un mensaje del que no se sabe el emisor ni la etiqueta. Para recibir solo los mensajes que se han enviado con MPI_Isend(). Si rank en el siguiente código es el rango del proceso actual y size es el número de procesos MPI en el comunicador, que sentencia es verdadera: for (i=0; i < size; i++) { if (rank == i) { printf("Hello from rank %d\n", rank); j = 10*i; } } El bucle asegura que todas las operaciones se realizan en paralelo en todos los procesos. El valor final de j es 10*(size-1) en todos los procesos. El valor final de j es 10*rank en el proceso rank. El bucle asegura que todas las operaciones se ejecutan en orden: rank 0 primero, rank 1 después,... El comando MPI_Get_count() sirve para Para saber el número de byes recibidos en el mensaje antes de leerlo. Para saber cuantos mensajes están pendientes de lectura. Saber la fuente, la etiqueta y el número de elementos del tipo de datos recibido antes de leerlos. ¿Cuando retorna la rutina MPI_Recv()? Después de que llegue el mensaje que la rutina espera, pero antes de que se hayan recopilado los datos del mensaje. Después del tiempo especificado en la rutina. Después de que llegue el mensaje que la rutina espera y se han recopilado los datos del mensaje. ¿Cual de estas rutinas se bloquea hasta que se haya recibido o enviado el mensaje no bloqueante? MPI_Get_count() MPI_WAIT() MPI_Test(). MPI_Gather() Es una rutina colectiva que sirve para recoger las partes del bufer de recepción que se encuentran en los procesos dentro de un comunicador. Es una rutina colectiva que sirve para enviar el mismo mensaje desde el proceso root a los demás procesos dentro de un comunicador. Es una rutina colectiva que sirve para dividir los datos del bufer de envío entre los procesos dentro de un comunicador. ¿Cual es el nombre del comunicador MPI por defecto? COMM_WORLD MPI_COMM_WORLD DEF_MPI_COMM_WORLD. El comando MPI_Get_processor_name() Devuelve el tipo de procesador, por ejemplo Intel i7-4770K Devuelve el hostname del PC donde se ejecuta el programa MPI. Ninguna de las opciones. ¿Cuales son los principales riesgos del MPI_Ssend()? Serialización. Interbloqueo. Todas las opciones. ¿Qué significa una rutina MPI de paso de mensaje no bloqueante (o asíncrona)? La rutina retorna cuando todas las acciones MPI del proceso local se han realizado, pero la transferencia del mensaje puede no haber sido completada. La rutina bloquea las acciones MPI de otros procesos hasta que se hayan completado las acciones del proceso actual. La rutina retorna cuando se ha completado la transferencia del mensaje. La rutina retorna inmediatamente, pero la transferencia del mensaje podría no haberse realizado. ¿Qué realiza la rutina MPI_Wtime()? Devuelve el tiempo transcurrido desde un tiempo arbitrario en el pasado. Espera el tiempo especificado en el parámetro antes de retornar. Devuelve el tiempo de ejecución del proceso actual. MPI_Reduce() Es una rutina colectiva que sirve para dividir los datos del bufer de envío entre los procesos dentro de un comunicador. Es una rutina colectiva que aplica una operación de reducción (como la suma) en todos los procesos del comunicador y pone el resultado en un proceso del comunicador. Es una rutina colectiva que sirve para recoger las partes del bufer de recepción que se encuentran en los procesos dentro de un comunicador. ¿Cual es la diferencia entre MPI_Wait() y MPI_Test()? MPI_Wait() se una con MPI_Recv() y MPI_Test() con MPI_IRecv() MPI_Wait() es bloqueante y MPI_Test() es no bloqueante MPI_Wait() es no bloqueante y MPI_Test() es bloqueante. ¿Se puede enviar un vector donde cada elemento es una estructura con distintos tipos de datos en MPI? Si, si se crea un tipo de dato derivado MPI_Type_struct. No, MPI solo permite el envío de los datos predefinidos en C. No, solo si la estructura tiene elementos del mismo tipo de datos. MPI_Barrier() Normalmente no se necesita y se usa solo para debugging o profiling. Se debe usar solo después de las rutinas de comunicación MPI para asegurarse de que los datos están ya en el bufer de destino. Se debe usar después de cada rutina MPI para asegurarse de que los datos están ya en el bufer de destino. ¿Cual de los siguientes datos no es requerido en una llamada de paso de mensaje? El tipo de mensaje El número de elementos de datos en el mensaje. La dirección de comienzo de los datos del mensaje. El tamaño de los datos del mensaje en número de bytes. MPI_Barrier() Es una rutina colectiva que sirve para sincronizar los procesos dentro de un comunicador. Es una rutina colectiva que sirve para enviar el mismo mensaje desde el proceso root a los demás procesos dentro de un comunicador. Es una rutina colectiva que sirve para recoger las partes del buffer de recepción que se encuentran en los procesos dentro de un comunicador. Es una rutina colectiva que sirve para dividir los datos del bufer de envío entre los procesos dentro de un comunicador. Un proceso MPI tiene que saber el proceso que le envía el mensaje y la etiqueta asociada. No, puede recibir en esa rutina de cualquier proceso y con cualquier etiqueta si usa MPI_ANY_SOURCE y MPI_ANY_TAG. Si, para ponerlos en la correspondiente rutina de recepción. Puede recibir de cualquier proceso pero debe saber la etiqueta. ¿Cual de la siguientes sentencias es incorrecta sobre MPI? Las funciones MPI son estandarizadas, lo que significa que se comportan igual independientemente de la implementación MPI usada. Puedes compilar el código MPI usando cualquier implementación MPI que se ejecute en tu arquitectura. Cualquier proceso MPI puede enviar y recibir mensajes directamente desde y hacia otro proceso. MPI usa un modelo de programación basado en memoria compartida, lo que significa que todos los procesos pueden acceder a la memoria compartida. El comando: $ mpirun -np 4 xterm -hold -e MPI_hello Ejecuta 4 procesos MPI_hello. Las salidas por pantalla de los procesos MPI aparecen ordenadas en el mismo terminal. Ejecuta 4 terminales xterm en los cuales se ejecuta un proceso MPI_hello. Los terminales se mantendrán visibles y el usuario debe cerrarlos. Ejecuta 4 procesos MPI_hello. Las salidas por pantalla de los procesos MPI aparecen desordenadas en el mismo terminal. ¿En qué rutinas MPI se usa status o request? Request se usa en las rutinas de recepción bloqueantes y status en las no bloqueantes ya sean de emisión o recepción. El status se usa para esperar a que se haya realizado la acción y request para saber la fuente del mensaje. Status se usa en las rutinas de recepción bloqueantes y request en las no bloqueantes ya sean de emisión o recepción. El parámetro request en las rutinas de comunicación no bloqueantes sirve: Para conocer el emisor y el tag del mensaje. Para establecer la etiqueta usada en el mensaje y poder seleccionar el mensaje a leer por esa etiqueta. Para poder saber si el envío del mensaje se ha completado al usarlo como parámetro en un MPI_Wait o MPI_Test. ¿Qué devuelve MPI_COMM_RANK? La prioridad del proceso actual. El identificador numérico del proceso actual dentro de un comunicador MPI El número de procesos en un programa MPI El Identificador del proceso Linux. Si el proceso 3 manda un mensaje con tag 7 antes que otro mensaje con tag 8 al proceso 5 El proceso 5 puede leer primero el mensaje con tag 8 y luego el mensaje con tag 7 El proceso 3 no puede mandar el mensaje con tag 8 hasta que no se haya recibido el mensaje con tag 7. El proceso 5 debe leer primero el mensaje con tag 7 y luego el mensaje con tag 8 ya que MPI garantiza que los mensajes no se adelantan unos a otros. Un programa MPI es normalmente del tipo SISD: Simple Instrucción, Simple Dato. SPMD: Simple Programa, Multiple Datos SIMD: Simple Instrucción, Multiple Datos. Marca la rutina que no tiene un comunicador: MPI_Send() MPI_Init() MPI_Bcast() Todas las respuestas tienen un comunicador. MPI_Iprobe() Se utiliza para saber si ha llegado un mensaje con cualquier fuente y tag, o con fuente y tag especificados. El proceso que lo ejecuta no se bloquea si no ha llegado el mensaje. Solo puede chequear si ha llegado un mensaje de una fuente y tag especificados. Se bloquea si el mensaje que se espera no ha llegado. El comando MPI_Finalize() Todas las otras opciones son verdaderas. Puede no ser la última rutina MPI llamada por un proceso MPI. Termina la ejecución del entorno MPI. MPI_Isend() El programa no continúa su ejecución hasta que se haya completado el envío Es necesario hacer un MPI_Probe() en el mismo proceso que hizo el MPI_Isend para ver si se ha completado el envío. El programa continua sin esperar que se haya completado el envío. El parámetro status en el MPI_Recv() sirve para Para poder realizar después un MPI_Wait() y estar seguro de que se han recibido los datos. Saber la fuente y la etiqueta del remitente del mensaje. Para poder realizar después un MPI_Test() y chequear que se han recibido los datos. El comando MPI_Comm_size() Solo funciona con el comunicador MPI_COMM_WORLD Devuelve el número de procesos en el comunicador especificado. Siempre devuelve el número de tareas MPI disponibles en la aplicación. ¿Cual es el significado de una rutina MPI de paso de mensaje bloqueante? La rutina bloquea todas las acciones MPI en los otros procesos hasta que se hayan completado sus acciones. La rutina retorna cuando todas las acciones MPI locales se han completado, pero la transmisión del mensaje podría no haberse completado. La rutina retorna cuando la transmisión del mensaje se ha realizado completamente. La rutina retorna inmediatamente, pero la transmisión del mensaje podría no haberse completado. ¿Cuales son los tres usos más importantes de las rutinas de comunicación punto-a-punto no bloqueantes MPI? Ordenadas de mayor importancia primero a menor importancia el último. 1.Prevenir serializaciones 2.Prevenir interbloqieos 3.Solapar comunicación y computación. 1.Solapar comunicación y computación. 2.Prevenir interbloqieos 3.Prevenir serializaciones 1.Prevenir interbloqieos 2.Prevenir serializaciones 3.Solapar comunicación y computación. El comando MPI_Get_count() sirve para Para saber cuantos mensajes están pendientes de lectura. Saber la fuente, la etiqueta y el número de elementos del tipo de datos recibido antes de leerlos. Para saber el número de bytes recibidos en el mensaje antes de leerlo. MPI_Probe() se utiliza Para bloquearse hasta que haya llegado un mensaje del que no se sabe el emisor ni la etiqueta. Para ver si ha llegado un mensaje del que no se sabe el emisor ni la etiqueta, sin bloquearse. Para recibir solo los mensajes que se han enviado con MPI_Isend(). Las rutinas de comunicación punto-a-punto bloqueantes de envío y recepción Se pueden recibir o enviar, resp. en el otro proceso con rutinas punto-a-punto bloqueantes o no bloqueantes. Se pueden recibir o enviar, resp en el otro proceso con rutinas punto-a-punto solo bloqueantes. Se pueden recibir o enviar, resp. en los otros procesos con rutinas colectivas. ¿Qué debe cumplir una comunicación colectiva? Todos los procesos deben llamar a la rutina colectiva. La rutina colectiva debe recibirse con una rutina punto-a-punto en cada proceso. La rutina colectiva usa el mismo tag en todos los procesos. MPI_Scatter() Es una rutina colectiva que sirve para enviar el mismo mensaje desde el proceso root a los demás procesos dentro de un comunicador. Es una rutina colectiva que sirve para recoger las partes del bufer de recepción que se encuentran en los procesos dentro de un comunicador. Es una rutina colectiva que sirve para dividir los datos del bufer de envío entre los procesos dentro de un comunicador. |
Denunciar Test