Hoy en día los clusters junto con las bibliotecas de paso de mensajes y los sistemas de memoria compartida distribuida han puesto al cómputo paralelo al alcance de todos. La programación con paso de mensajes actualmente es portable pero es complicada, excepto para simples patrones de acceso a datos. Además, es substancialmente diferente cuando la cantidad de datos a procesar excede la capacidad de la memoria: utilizando a ésta sólo como un caché. Un sistema de memoria compartida distribuida simplifica la programación, pero los sistemas actuales no pueden integrar arquitecturas heterogéneas, por ejemplo, de 32 y 64 bits.
Esta tesis presenta el diseño de una memoria compartida distribuida implementada toda en software, llamada DDS (del inglés: Data Diffusion Space). Su espacio de direcciones compartido es de 264 bytes, en ambas arquitecturas de 32 y de 64 bits, y es extra al espacio de direcciones de cada proceso en cada nodo corriendo una aplicación. Los datos colocados en DDS son difundidos, o migrados y replicados, en forma automática en la memoria de los procesadores que los utilizan, sin importar si se encuentran en su disco o en la memoria o en el disco de otros procesadores. De esta manera, la programación de aplicaciones bajo DDS es la misma si la cantidad de datos excede o no la capacidad de la memoria. Su interfaz, para acceder datos compartidos, es similar a la de un sistema de archivos.
Esta tesis también presenta el diseño de un sistema de archivos paralelo, FSDDS, cuyos archivos de datos son mapeados sobre DDS, y por consiguiente sus datos son difundidos en las memorias de los nodos que los utilizan. La interfaz de FSDDS para acceder los datos es la misma que la de DDS. De esta manera, la programación con DDS y FSDDS es prácticamente la misma para aplicaciones cuyos datos caben en memoria, cuyos datos desbordan la memoria, o cuyos datos se leen/escriben en archivos. Y FS/DDS pueden integrar algunas plataformas heterogéneas. FS/DDS manejan un caché en cada nodo y los accesos a datos son resueltos, de ser posible, con una de las copias en la caché de otro nodo, disminuyendo así el número de accesos a disco y, potencialmente, mejorando el desempeño de las aplicaciones. Esto se demuestra utilizando un modelo analítico y resultados experimentales. El desempeño de FS/DDS es en general mejor que el de MPI/PVFS; y su uso es más fácil.
Abstract
Today clusters along with messages passing libraries and distributed shared memory systems have made parallel computing ready to hand. Programming with message passing is now portable but is complicated, except for simple access patterns to data. Moreover, it is substantially different when the amount of data to process exceeds the capacity of the available memory: using this only as a cache. A distributed shared memory simplifies the programming task, but the current systems cannot easily integrate heterogenous architectures, for example, 32- and 64-bit architectures.
This thesis presents the design of a distributed shared memory implemented all in software, call DDS (Data Diffusion Space). Its shared addresses space is of size 264 bytes, in both architectures of 32 and 64 bits, and is extra to the addresses space of each process in each node running an application. The data placed in DDS are diffused, or migrated and replicated, automatically in the memory of the accessing processors regardless of their location, their local disk or the memory or disk of other processors. Thus the programming of applications under DDS is the same whether or not the amount of data to process exceeds the memory capacity. Its interface to access shared data is similar to that of a file system. This thesis also presents the design of a parallel file system, FSDDS, whose data files are mapped onto DDS, and therefore their data are diffused to the memories of the accessing nodes. The interface of FSDDS to access data is the same as that of DDS. This way, the programming with DDS and FSDDS are practically the same for applications whose data fit in memory, whose data overflow the memory, or whose data are read from or written to files. And FS/DDS can integrate some heterogenous platforms.
FS/DDS handle a cache in each node and data accesses are solved, if possible, with a copy in the cache of other nodes, thus decreasing the number of accesses to disk and, potentially, improving application performance. This is demonstrated using an analytical model and experimental results. The performance of FS/DDS is in general better than the that of MPI/PVFS; and its use is simpler.