Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2. Señale todas las opciones correctas: para el mapeo de hilos o procesos a los procesadores o núcleos, en Linux, el programador
puede utilizar los siguientes mecanismos.
3. La instrucción addv a,b,c (a=b+c; donde a,b y c son vectores de números enteros), es un paralelismo de tipo:
4. Que tipos de paralelismo utilizaría un servidor de bases de datos para procesar varios INSERT de manera concurrente:
5. ¿Cuáles de las siguientes técnicas son utilizadas para reducir el tiempo de acceso a memoria?
6. Utilizar caches separados para instrucciones y datos utiliza mejor el espacio del cache
9. Si ¾ de un programa es infinitamente paralelizable, ¿cuál es la máxima aceleración que se puede obtener para dicho programa?
10. ¿Cuántos bits utiliza para la etiqueta (TAG) el siguiente cache asociativo por conjuntos (set associative)?
• Tamaño de la memoria = 1MB
• Tamaño del cache = 64 KB
• Tamaño del bloque = 4B
• Tamaño del conjunto = 4 bloques
11. Para el mismo cache, pero utilizando mapeo directo, ¿cuál sería el tamaño de la etiqueta?
12. Sin paralelismo a nivel de instrucciones; que tipo de dependencia produciría la ejecución de la siguiente ejecución de
instrucciones:
R0 <- R1 + 5
R1 <- R2 – R3
13. Para encontrar la cantidad de veces que se repite el número 3 en un arreglo de 500x500, ¿cómo debería distribuir los datos (el
arreglo) entre cuatro procesadores, si dicho arreglo está almacenado en filas?
14. Considere dos hilos ejecutando los siguientes segmentos de código dentro del mismo proceso:
Hilo 1: Hilo 2:
• Mutex.lock(m1) • Mutex.lock(m2)
• C++ • C++
• Mutex.unlock(m1) • Mutex.unlock(m2)
2. Los hilos de un programa paralelo intercambian información (marque todas las opciones que sean correctas):
3. Considere 2 computadores, A y B, con arquitecturas RISC y CISC, respectivamente. Al ejecutar el programa P, los computadores
obtienen el mismo resultado en MIPS. Señale todas las proposiciones que son verdaderas sobre el rendimiento de los
mencionados computadores:
4. Considere una implementación de MPI sobre TCP. Si MPI utiliza un buffer de 2 KB (1 KB = 1024 Bytes) y TCP utilizar un buffer de
4 KB, el siguiente código bloquearía al programa, si la contraparte no ejecuta la correspondiente operación MPI_Recv()?
5. Considere una implementación de MPI sobre TCP. Si MPI utiliza un buffer de 2 KB (1 KB = 1024 Bytes) y TCP utiliza un buffer de
4 KB, el siguiente código bloquearía al programa, si la contraparte no ejecuta la correspondiente operación MPI_Recv()?
6. En el modelo BSP:
7. Considere las redes hipercubo y anillo para la multiplicación matriz * vector; señale todas las proposiciones que son verdaderas
sobre el tiempo total de ejecución (TTE).
8. Si el computador A obtiene un resultado SPECspeed mayor al del computador B por un factor de 1,5; entonces:
9. Si dos hilos de un programa ejecutan únicamente el siguiente bloque de código en un computador con varios núcleos:
{
C = 4;
C = C + 2;
}
¿Cuál será el valor de C al final del programa, considerando que C es una variable compartida?
10. Si dos hilos de un programa ejecutan únicamente el siguiente bloque de código en un computador con varios núcleos:
{
Mutex.lock();
C = 4;
C = C + 2;
Mutex.unlock();
¿Cuál será el valor de C al final del programa, considerando que C es una variable compartida?
11. En un proceso de multiplicación matriz * vector (A * b = c) iterativo (el vector c pasa a ser el vector b en la siguiente iteración),
realizado como una serie de productos escalares, qué operaciones de comunicación se debe utilizar, en una red hipercubo
(asumir que uno de los nodos almacena inicialmente la matriz A y el vector b y que el mismo nodo debe almacenar el resultado
final c)?
12. En un proceso de multiplicación matriz * vector (A * b = c) iterativo (el vector c pasa a ser el vector b en la siguiente iteración),
realizado como una serie de productos escalares, qué operaciones de comunicación se debe utilizar, en una red “fat tree”
(asumir que uno de los nodos almacena inicialmente la matriz A y el vector b y que el mismo nodo debe almacenar el resultado
final c)?
13. Si ¾ de un programa es infinitamente paralelizable, ¿cuál es la máxima aceleración que se puede obtener para dicho programa?
main () {
pthread_create(&th1, …);
/*NÚMERO DE HILOS EN ESTE PUNTO?*/
pthread_join (th1);
}
func () {
int c = c+ 1;
}
main () {
int c = 1;
pthread_create (&th1, &attr, func, …);
printf(“%d\n”, c)
pthread_join (th1);
}
Int c;
func () {
int c = c+ 2;
}
main () {
c = 0;
pthread_create (&th1, &attr, func, …);
pthread_create (&th2, &attr, func, …);
pthread_join (th1);
printf(“%d\n”, c)
pthread_join (th2);
}
4. Considere un “pipeline” para procesar documentos en 5 fases. ¿Cuál es el (work y span) si se procesan 250 documentos?
5. Considere una clase totalmente sincronizada, en Java. Para evitar deadlocks entre hilos que invocan los métodos sincronizados
de dicha clase:
ExecutorService.executor = Executor.newFixedThreadPool(2);
Future<Integer> future = executor.submit() -> {
TimeUnit.SECONDS.sleep(2);
return 987;
});
resultado = future.get(2, TimeUnit.SECONDS);
int n = 0;
void sumar() {
n = n + 1;
}
ExecutorService.executor = Executor.newFixedThreadPool(2);
IntStream.range(0, 10000).forEach(I -> executor.submit(sumar));
stop(executor);
Sytem.out.println(n);
8. ¿Cuáles serán las posibles planificaciones (scheduling) estáticas para 2 hilos, de los siguientes bucles?
total = 0;
#pragma omp parallel for
for (int i=1; i<=5; i++)
total = total + I;
printf(“%d\n”, total);
10. Considere un kernel CUDA para sumar dos vectores de 1024 elementos. El kernel es ejecutado con bloques bidimensionales de
hilos:
¿Cuál es la opción correcta para calcular el índice que le corresponde a cada hilo?
1. ¿Cuál de las siguientes secuencias de llamadas a la API sockets es correcta para un cliente HTTP?
6. En un computador big-endian, los bytes de la dirección IP 192.168.1.3 se almacenan de la siguiente manera. Considere que el
primer byte ocupa la dirección más baja de memoria.
7. ¿Cuáles de las siguientes secuencias son correctas para un servidor concurrente orientado a conexión? [funcion1(); funcion2();]
representa un bucle de las funciones.
8. ¿Cuáles de las siguientes secuencias de llamadas son correctas para el servidor echo concurrente UDP?
9. Considere la siguiente secuencia generada por XDR al procesar un árbol binario (subárbol izquierdo, raíz, subárbol derecho)
TTF4F2TF5F1TTF6F3TF7F
11. Una nube para prestar servicios solo a las universidades públicas del Ecuador es:
6. En el siguiente código:
7. OpenMPI siempre entrega los mensajes entre dos nodos en el mismo orden en que fueron enviados?
10. Teóricamente, el speedup de un programa paralelo puede ser mayor que el número de procesadores.
1. La mircoarquitectura es:
8. Considere dos hilos ejecutando los siguientes segmentos de código dentro del mismo proceso:
Hilo 1: Hilo 2:
• Mutex.lock(m1) • Mutex.lock(m2)
• C++ • C++
• Mutex.unlock(m1)
Mutex.unlock(m2)
7. Considere dos hilos ejecutando los siguientes segmentos de código dentro del mismo proceso:
Hilo 1: Hilo 2:
• Mutex.lock(m1) • Mutex.lock(m2)
• C++ • C++
• Mutex.unlock(m1)
Mutex.unlock(m2)
1. La microarquitectura es:
8. Considere dos hilos ejecutando los siguientes segmentos de código dentro del mismo proceso:
Hilo 1: Hilo 2:
• Mutex.lock(m1) • Mutex.lock(m2)
• C++ • C++
• Mutex.unlock(m1)
Mutex.unlock(m2)
Hilo 1: Hilo 2:
• Mutex.lock(m1) • Mutex.lock(m2)
• C++ • C++
• Mutex.unlock(m1)
Mutex.unlock(m2)
6. En el siguiente código:
10. Teóricamente, el speedup de un programa paralelo puede ser mayor que el número de procesadores
1. 2PC es:
7. En una arquitectura Little-endian, cual es el orden de los bytes del entero (decimal) 520, asumiendo que el byte de la izquierda
está almacenado en la dirección más baja de memoria:
2. Cual es la disponibilidad del acceso a un servidor, el cual se debe conectar mediante TRES enrutadores, cada uno con una
disponibilidad de 0,997. El servidor tiene una disponibilidad de 0,998. Los enrutadores y el servidor están conectados en serie:
3. En VRRP:
7. En map – reduce
8. Cuales de las siguientes llamadas de la API sockets son utilizadas por los servidores concurrentes orientados a conexión:
1. En una arquitectura Little-endian, cual es el orden de los bytes del entero 530
2. Para le enumeración:
3. El código
int i = 260;
FILE *fp;
fp = fopen(“archivo1”);
xdrmem_create (xdrp, buf, len, XDR_ENCODE);
xdr_int (xdrp, &i);
Grabaría:
5. En RPC:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.