Examen Convocatoria Apolo 2021 2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

Examen Convocatoria 2021-2

Centro de Computación Científica Apolo


<[email protected]>
14 de agosto de 2021

Nombre: David Madrid Restrepo


Código: 202010010010
Teléfono de Contacto: 3196188077
Correo Electrónico: [email protected]
Semestre: 04

1
Apolo Examen Convocatoria 2021-1 14 de agosto de 2021

IMPORTANTE: Por favor muestre el procedimiento y justifique todas sus respuestas. Respuesta
que no se encuentre correctamente argumentada no será válida. El examen tiene una duración estimada
de 4 horas pero, dado que deben descargar CentOS 7 para crear las máquinas virtuales, tienen
hasta el lunes a las 08:00 AM para entregar la parte práctica. Pueden consultar internet y las
referencias bibliográficas que tengan a su disposición, pero el trabajo debe ser realizado por usted y,
en caso de ser necesaria una sustentación, deben estar en capacidad de explicar el trabajo
realizado.

INSTRUCCIONES:
1. Se recomienda que ponga a descargar el instalador de CentOS 7. mientras desarrolla los puntos
teóricos. Así, puede avanzar en el desarrollo del examen mientras descarga la aplicación. Los insta-
ladores están disponibles en https://www.centos.org/download/. Como se van a utilizar máquinas
virtuales, deben tener un virtualizador instalado en la máquina. Pueden utilizar el virtualizador
con el que se sientan más cómodo. Algunas opciones son VirtualBox (https://www.virtualbox.org/
y VMWare (https://www.vmware.com/).
2. Desarrolle el componente teórico.
3. Envíe por correo, a [email protected], la respuesta del componente teórico.
4. Desarrolle el componente práctico:
a) Instale y configure las máquinas virtuales de acuerdo con las instrucciones en el punto 1.
b) Desarrolle los demás puntos del componente práctico utilizando las máquinas virtuales.
5. Comparta la imagen de la máquina virtual y envíe el link, junto con el hash de la máquina
virtual, al correo [email protected]. Puede utilizar Dropbox, OneDrive, Google Drive,
WeTransfer o cualquier servicio similar.

CONDICIONES ADICIONALES:
• En caso de no poder configurar las máquinas virtuales con CentOS, puede realizar la
instalación con Ubuntu (https://ubuntu.com/). Esta opción tiene una penalización del 50 % en la
evaluación.
• En caso de no poder configurar ninguna máquina virtual, los ejercicios de compilación, punto
2, y programación, punto 3 pueden ser desarrollados en cualquier máquina. En este caso, no
hay penalización en la evaluación.

1. Examen Teórico
1.1. Sistemas Operativos
(a) En los procesadores existen varios modos (o anillos) de ejecución, cada uno con diferentes privilegios.
Lo normal es denominar modo kernel al modo que tiene todos los privilegios y modo usuario al
que tiene menos privilegios. El proceso que se ejecuta en modo usuario debe realizar una llamada
al sistema (system call ) para utilizar los servicios del sisetema operativo, el cual se ejecuta en modo
kernel. Explique qué es una llamada al sistema (system call ).
(b) Una de las funciones más importantes de un sistema operativo es permitir que múltiples procesos
utilicen el procesador. El componente responsable de esta tarea es el planificador o scheduler. En
general, estos son los estados, que denominaremos S, en los que puede estar un proceso:
Ready: El proceso está listo para su ejecución. El scheduler lo puede ejecutar cuando lo considere
apropiado.
Running: El proceso está siendo ejecutado en ese momento
Blocked: El proceso está esperando que termine una operación de entrada/salida, por lo que no
puede ser ejecutado

Página 2 de 6
Apolo Examen Convocatoria 2021-1 14 de agosto de 2021

Ended: El proceso terminó su ejecución.


Adicionalmente, se tienen unos eventos, que denominaremos E, que son:
Current process stopped: El proceso que está en ejecución es suspendido y el scheduler debe
seleccionar el proceso a ejecutar.
I/O Request: El proceso que está en ejecución solicita una operación de entrada/salida.
I/O Completed: La operación de entrada/salida que esperaba el proceso se culmina exitosamente.
i. Complete la siguiente tabla, donde cada fila representa un estado ∈ s S, cada columna un
evento e ∈E y el contenido de la entrada Si,j es el nuevo estado al que se pasar cuando se está
en el estado si y se produce el evento ej . Por ejemplo, la primera casilla corresponde al estado
en el que queda el proceso cuando está en estado Ready y el proceso que se está ejecutando es
suspendido. Para simplificar, suponga que cuando el proceso está en estado Ready, es el
único proceso en la cola de espera.
Current process
I/O Request I/O Completed
stopped
Ready
Running
Blocked
Ended
Justifique su respuesta.
ii. Represente gráficamente esta máquina de estados finita
(c) Sea un sistema operativo con un espacio de direccionamiento de 64 bits.
i. ¿Cuál es el tamaño máximo que puede tener la memoria?
ii. Si tiene páginas de 16Kb de tamaño, ¿cuántas páginas tiene?
iii. Si tiene 4096 páginas, ¿de qué tamaño es cada página?
Nota: Si le queda más fácil, puede expresar los resultados como potencias de 2.
1.2. Linux
(a) Las bibliotecas de funciones, también conocidas como librerías, son uno de los recursos más utilizados
para la reutilización de software.
i. ¿Qué son los archivos con extensión .a en linux?
ii. ¿Qué son los archivos con extensión .so en linux?
iii. ¿Qué diferencia hay entre ellos?
(b) Una de las decisiones más importantes que se toma al instalar un sistema operativo es la distribución
del almacenamiento. Explique qué es LVM (Logical Volume Manager), cómo funciona, qué ventajas
y qué desventajas tiene.
(c) En los sistemas Linux, cada usuario tiene un id asociado.
i. ¿Qué pasa si hay dos usuarios con el mismo id?
ii. ¿Qué pasa si hay un usuario diferente de root que tiene id 0?
(d) ¿Qué es un daemon y en qué se diferencia de un proceso normal?
(e) ¿Por qué la memoria compartida en Linux no es compatible con apuntadores? Es decir, ¿por qué
una misma memoria compartida a la que acceden dos programas diferentes puede tener direcciones
diferentes en cada uno de ellos?
1.3. Redes
(a) Explique cómo se establece una conexión de TCP.
(b) Defina qué es la dirección MAC, la dirección IP y el nombre de una máquina, y explique qué
relaciones hay entre ellas.
(c) Si se va a enviar un paquete IP a una máquina que está en otra red, ¿a qué dirección MAC se envía?

Página 3 de 6
Apolo Examen Convocatoria 2021-1 14 de agosto de 2021

(d) Explique que es la máscara de red.


1.4. Virtualización
(a) ¿Qué diferencia hay entre una máquina virtual y un contenedor tipo docker?
(b) ¿Qué es un hypervisor?
(c) ¿Por qué es importante que haya soporte en hardware para virtualización?
1.5. Hardware Un usuario necesita ejecutar un programa que cuenta el número de vehículos que
aparecen en unas fotografías. Tiene que analizar cientos de miles de fotografías y cuenta con muy
poco tiempo para hacerlo, por lo cual recurre a usar los servicios de un centro de supercómputo. El
usuario explica que el programa ejecuta millones de operaciones de punto flotante sobre matrices por
cada imagen, y necesita la mayor precisión posible en sus cálculos.
El centro de supercómputo cuenta con tres supercomputadores con las siguientes características:
Newton
• Número de nodos: 25
• Sockets por nodo: 3
• Cores por procesador: 4
• Frecuencia CPU: 2.16 GHz
• Operaciones de punto flotante por segundo: 4 (Doble precisión)
Euler
• Número de nodos: 3
• Sockets por nodo: 4
• Cores por procesador: 24
• Frecuencia CPU: 1.7 GHz
• Cuenta con un set de instrucciones AVX2
Ada
• Número de nodos: 6
• Sockets por nodo: 1
• Cuenta con procesadores Intel Xeon Gold 6152
(a) ¿Cuál de los tres supercomputadores le recomendaría al usuario para que obtenga los resultados en
el menor tiempo posible? Justifique su respuesta.
(b) Si, además, el usuario cuenta con la posibilidad de comprar una GPU (Graphics Processing Unit)
Nvidia Tesla V100 con las siguientes características:
Conectividad PCIe
Ancho de banda de 32 Gb/s
Rendimiento con Nvidia GPU Boost de 7 ŁFLOPS a doble precisión
¿Le recomendaría usted al usuario comprar la GPU y no utilizar los servicios del centro de super-
cómputo? Justifique su respuesta.
Nota: Existe una forma de calcular el pico de rendimiento máximo teórico de un supercomputador
expresado en miles de millones de operaciones de punto flotante por segundo (GFLOPS). Para mayor
información puede ingresar a:
http://sgowtham.com/journal/hpl-2-0-benchmark-with-gcc-4-1-2-on-rocks-5-4-2/
Ayuda: Las GPU están clasificadas según la taxonomía de Flynn como SIMD. Esta característica puede
ser de utilidad para la ejecución de operaciones sobre matrices.

Página 4 de 6
Apolo Examen Convocatoria 2021-1 14 de agosto de 2021

2. Examen Práctico
2.1. Configuración de las máquinas virtuales
Importante: Se recomienda tomar snapshots de las máquinas virtuales regularmente. Así, en caso de
tener problema en la configuración, pueden regresar a un estado previo.
(a) Instalación: Descargue el instalador de CentOS 7 y configure dos (2) máquinas virtuales con dicho
sistema operativo.
(b) Red:
i. Asegúrese de que cada máquina tenga dos interfaces de red. Una interfaz que le permita salir
a Internet y otra interfaz que le permita comunicarse con la otra máquina. La interfaz NAT deberá
tener una IP dada por DHCP. La interfaz Host Only deberá tener una IP estática en el rango
de red 192.168.56.0/24
ii. Muestre por medio el comando ping que las máquinas tienen conectividad entre ellas y que
tenga internet.
iii. Establezca e ingrese por medio de ssh a ambas máquinas desde su terminal y desde una
máquina a otra.
iv. Copie un archivo que usted haya creado de una máquina a otra.
v. Instale en la máquina virtual, si no están instaladas, los compiladores de C, C++ y Fortran, y
Anaconda (https://www.anaconda.com/), el ambiente de desarrollo de Python.
2.2. Compilación de QuEST QuEST es un simulador de computación cuántica que tiene varios
modos de funcionamiento:
local: Utiliza todos los núcleos de todos los procesadores del nodo para realizar los cálculos.
GPU: Utiliza CUDA (GPU) para ejecutar los cálculos.
local+GPU: Utiliza todos los núcleos de todos los procesadores del nodo y CUDA (GPU) para para
realizar los cálculos.
Distribuido: Utiliza todos los núcleos de todos los procesadores de todos los nodos para realizar los
cálculos.
Nota: Tenga presente que la compilación de QuEST puede requerir instalar paquetes adicionales.
(a) Descargue el codigo de QuEST (https://github.com/QuEST-Kit/QuEST/) en la máquina virtual
y compile la aplicación en modo local, registrando cada una de las actividades que realizó para
poderlo compilar.
(b) Comprima en un solo archivo todos los archivos, incluyendo el registro de las actividades, y llámelo
QuEST-local. Este archivo es parte de los productos que deben entregar.
(c) Compile la aplicación en modo distribuido, registrando cada una de las actividades que realizó
para poderlo compilar.
(d) Ejecute el programa distribuyendo su ejecución en las dos máquinas virtuales, registrando cada una
de las actividades que realizó para ejecutarlo.
(e) Comprima en un solo archivo todos los archivos, incluyendo los registros de las actividades, y llámelo
QuEST-distribuido. Este archivo es parte de los productos que deben entregar.
2.3. Programación
(a) Escriba una función en C o C++ que reciba el nombre de un programa como parámetro, lo
ejecute y espere a que termine su ejecución.
(b) Un buen programador debe encontrar un balance entre la claridad del código y su eficiencia. Una
forma de lograr es ese balance es escribiendo el código de manera que pueda ser optimizado por
el compilador. A continuación, encontrará dos algoritmos. El primero, algoritmo 1, es una implemen-
tación recursiva de la factorización que utiliza una técnica llamada tail recursion, mientras que el
segundo, algoritmo 2 es la implementación tradicional.

Página 5 de 6
Apolo Examen Convocatoria 2021-1 14 de agosto de 2021

Algorithm 1 Factorial - tail recursion


1: procedure FacT(n, a)
2: if n == 0 then
3: return a
4: end if
5: return Fact(n-1,n*a)
6: end procedure

Algorithm 2 Factorial
1: procedure FacT(n)
2: if n == 0 then
3: return 1
4: end if
5: return Fact(n-1)*a
6: end procedure

i. Implemente ambas funciones y determine cuál es más eficiente


ii. Explique por qué funciona mejor la implementación más eficiente.

3. Entregables
El desarrollo del examen debe ser enviado por correo a la cuenta [email protected]. Se debe entregar en
dos correos de la siguiente manera:
Primer correo: Debe ser enviado el sábado 14 de agosto de 2021 antes de las 8:30 PM. El tiempo
adicional es para que puedan organizar todo en formato PDF. Este correo debe contener las respuestas
a las preguntas teóricas.

Segundo correo: Debe ser enviado a más tardar el lunes 16 de agosto de 2021 a las 08:00 AM. Este correo
debe contener: los archivos QuEST-local, QuEST-distribuido, las implementaciones y la explicación
de los problemas de programación, los hash (utilice MD5) de la imagen de las máquinas virtuales y
los links para descargarlas.

Muchos éxitos!

Página 6 de 6

También podría gustarte