Uno de los grandes retos de la HPC (High Performance Computing) consiste en
optimizar el subsistema de Entrada/Salida, (E/S), o I/O (Input/Output). Ken
Batcher resume este hecho en la siguiente frase: "Un supercomputador es un
dispositivo que convierte los problemas limitados por la potencia de cálculo en
problemas limitados por la E/S" ("A Supercomputer is a device for turning compute-bound
problems into I/O-bound problems") . En otras palabras, el cuello de botella ya no
reside tanto en el procesamiento de los datos como en la disponibilidad de los
mismos. Además, este problema se exacerbará con la llegada del Exascale y la
popularización de las aplicaciones Big Data.
En este contexto, esta tesis contribuye a mejorar el rendimiento y la facilidad
de uso del subsistema de E/S de los sistemas de supercomputación.
Principalmente se proponen dos contribuciones al respecto: i) una interfaz de
E/S desarrollada para el lenguaje Chapel que mejora la productividad del
programador a la hora de codificar las operaciones de E/S; y ii) una
implementación optimizada del almacenamiento de datos de secuencias genéticas.
Con más detalle, la primera contribución estudia y analiza distintas
optimizaciones de la E/S en Chapel, al tiempo que provee a los usuarios de una
interfaz simple para el acceso paralelo y distribuido a los datos contenidos en
ficheros. Por tanto, contribuimos tanto a aumentar la productividad de los
desarrolladores, como a que la implementación sea lo más óptima posible.
La segunda contribución también se enmarca dentro de los problemas de E/S, pero
en este caso se centra en mejorar el almacenamiento de los datos de secuencias
genéticas, incluyendo su compresión, y en permitir un uso eficiente de esos
datos por parte de las aplicaciones existentes, permitiendo una recuperación
eficiente tanto de forma secuencial como aleatoria. Adicionalmente, proponemos
una implementación paralela basada en Chapel.