CAPÍTULO 3. INTEGRACIÓN CON SISTEMAS HPC
3.7 Resultados en el clúster HPC de la UCLV
El clúster de la UCLV es utilizado por diferentes tipos de usuarios con requerimientos propios de cada uno, de ahí que se encuentre un mismo tipo de programas con diferentes versiones. En la figura 3.7.1 se muestra un listado de todos los módulos disponibles, obtenido mediante el comando “module avail”. También se incluyen los software
instalados más utilizados, los cuales se encuentran compartidos para todos los usuarios y a su vez, ellos pueden instalar los propios. Como se explicó anteriormente, de un mismo
software pueden existir diferentes versiones y los que se encuentran marcados con (D), son los predeterminados.
También se utilizó la opción “--try-toolchain”, disponible en EasyBuild, para instalar módulos con toolchains más específicos. Durante este proceso fue necesario modificar manualmente algunos módulos, así como cambiar los toolchains, debido a que utilizaban versiones antiguas que nos son compatibles con los sistemas operativos modernos, como es el caso de Debian 8 Jessie.
Figura 3.7.1 Lista de los software instalados.
3.8 Conclusiones
A través de los scripts propuestos se demostró cómo se puede automatizar la instalación de las dependencias de EasyBuild, así como su correcta ejecución. Además, fue posible recopilar los paquetes fuentes descargados por los usuarios hacia el repositorio central, lo cual permitió un mejor aprovechamiento del ancho de banda y de la capacidad de almacenamiento. Por otra parte, se definió cómo integrar EasyBuild a entornos HPC a través de la configuración de las variables de entorno.
CONCLUSIONES
1. Las herramientas SWTools, Smithy, IVEC Build System y Spack realizan funciones similares a EasyBuild, pero solo solucionan parcialmente los problemas enfrentados por los administradores y usuarios de los sistemas HPC, que surgen al instalar
software para aplicaciones de cálculo científico.
2. EasyBuild, que incorpora a su diseño las ventajas de los gestores de paquetes existentes, constituye una herramienta que cumple con los requisitos de flexibilidad, coexistencia de versiones, resolución automática de dependencias y documentación actualizada.
3. La implementación de EasyBuild y Lmod, brinda autonomía a los usuarios del clúster, lo cual facilita el trabajo a los administradores de los sistemas HPC, en cuanto al tiempo y esfuerzo invertidos en el despliegue de aplicaciones para cálculo científico.
4. El procedimiento desarrollado para la implementación de EasyBuild como gestor de paquetes y Lmod como herramienta de módulos permite el despliegue eficiente de aplicaciones para cálculo científico en sistemas HPC.
5. El script de instalación creado hace posible instalar de manera automatizada todas las dependencias de EasyBuild, así como ejecutarlo correctamente, tanto en sistemas operativos Debian como en Ubuntu y CentOS.
6. El script de recopilación de paquetes fuentes desarrollado permite recolectar los paquetes fuentes descargados por cada usuario, lo cual contribuye a enriquecer el repositorio central y a un mejor aprovechamiento del ancho de banda ante la descarga masiva de los mismos.
RECOMENDACIONES
Se proponen como recomendaciones:
Compartir los resultados del trabajo con la Universidad de Oriente y la Universidad de Ciencias Informáticas, para que evalúen la factibilidad del uso de EasyBuild como gestor de paquetes en sistemas HPC.
Proponer este trabajo como material de estudio para administradores de sistemas que deseen instalar EasyBuild como gestor de paquetes.
REFERENCIAS BIBLIOGRÁFICAS
[1] J. d. J. R. Quezada, S. B. Rionda, J. M. V. Félix, and I. A. M. Torres, "Diseño e implementación de un clúster de cómputo de alto rendimiento," Acta Universitaria,
vol. 21, pp. 24-33, 2011.
[2] N. Jones and M. R. Fahey, "Design, Implementation, and Experiences of Third- Party Software Administration at the ORNL NCCS," Proceedings of the 50th Cray
User Group (CUG08), 2008.
[3] M. Geimer, K. Hoste, and R. McLay. (2014, enero 2016). Modern scientific software management using easybuild and lmod. Proceedings of the First
International Workshop on HPC User Support Tools, 41-51. Disponible:
https://hpcugent.github/easybuild/files/
[4] O. R. N. Laboratory. (marzo 2016). Oak Ridge Leadership Computing Facility. Disponible: https://www.olcf.ornl.gov/center-projects/swtools/
[5] J. L. Furlani and P. W. Osel. (2011, abril 2016). Welcome to the Environment Modules Project. Disponible: http://modules.sourceforge.net/
[6] S. S. Tools. (marzo 2016). SW-Tools for SAP Business One. Disponible:
http://www.swtools.com/indexeng.htm
[7] A. DiGirolamo. (marzo 2016). Improving Software Installation Techniques at the National Center for Computational Sciences at Oak Ridge National Laboratory:
The Smithy software installation tool. Disponible:
https://github.com/AnthonyDiGirolamo/smithy_paper/blob/master/abstracts.md
[8] A. DiGirolamo. (marzo 2016). Smithy will help you install software with ease. Disponible: http://anthonydigirolamo.github.io/smithy/
[9] A. DiGirolamo. (2015, marzo 2016). smithy - build, test, and install software with ease Disponible: http://anthonydigirolamo.github.io/smithy/smithy.1.html
[10] C. d. C. d. Pawsey. (marzo de 2016). Inside the Pawsey supercomputing centre. Disponible: http://www.itnews.com.au/news/inside-the-pawsey-supercomputing- centre-339023
[11] C. Schwartz. (2013, marzo 2016). iVEC & Pawsey Centre Infrastructure and
Resources. Disponible:
https://cug.org/proceedings/cug2013_proceedings/includes/files/pap118-file2.pdf
[12] R. C. Bording, C. Harris, and D. Schibeci. (2015, marzo 2016). Using Maali to Efficiently Recompile Software Post-CLE Updates on a CRAY XC System.
Disponible:
https://cug.org/proceedings/cug201_proceedings/includes/files/pap115.pdf
[13] C. XC. (2015, abril 2016). Compiling applications for the Cray XC. Disponible:
http://www.training.prace-ri.eu/uploads/tx_pracetmo/Compiling-and-running- applications.pdf
[14] G. O. System. (abril de 2016). GNU Wget. Disponible:
https://www.gnu.org/software/wget/
[15] G. O. System. (abril 2016). GNU Autoconf - Creating Automatic Configuration Scripts. Disponible: http://www.gnu.org/software/autoconf/manual/
[16] G. O. System. (abril 2016). GNU Automake. Disponible:
http://www.gnu.org/software/automake/manual/
[17] G. O. System. (abril 2016). GNU Libtool - Portable Dynamic Shared Object Management. Disponible: http://www.gnu.org/software/libtool/manual/
[18] A. Elwell. (2014, marzo 2016). iVEC Site Report. Disponible:
http://slurm.schedmd.com/SUG14/site_rept_ivec.pdf
[19] L. L. N. Laboratory. (marzo 2016). Spack: A Flexible Package Manager for HPC Software. Disponible: http://computation.llnl.gov/projects/spack-hpc-package- manager
[20] T. Gamblin, M. LeGendre, M. R. Collette, G. L. Lee, A. Moody, B. R. de Supinski, et al., "The Spack package manager: Bringing order to hpc software chaos," in
Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, ser. SC, 2015.
[21] L. L. N. Laboratory. (abril 2016). Spack/Developer Guide. Disponible:
http://software.llnl.gov/spack/developer_guide.html
[22] L. L. N. Laboratory. (abril 2016). Spack/Site configuration. Disponible:
http://software.llnl.gov/spack/site_configuration.html
[23] C. Analytics. (abril 2016). Anaconda: Completely Free Enterprise-Ready Python Distribution for Large-Scale Data Processing, Predictive Analytics, and Scientific Computing. Disponible: https://store.continuum.io/cshop/anaconda/
[24] C. Analytics. (abril 2016). Conda: A Cross-Platform, Python-Agnostic Binary Package Manager. Disponible: http://conda.pydata.org
[25] P. P. Documentation. (abril 2016). setuptools 20.9.0. Disponible:
https://pypi.python.org/pypi/setuptools
[26] P. F. Dubois, T. Epperly, and G. Kumfert. (2003, abril 2016). Why Johnny can't build. Computing in Science and Engineering 5(5), 83-88. Disponible:
http://grosskurth.ca/bib/2003/dubois.pdf
[27] K. Hoste, J. Timmerman, A. Georges, and S. De Weirdt. (2012, enero 2016). Easybuild: Building software with ease. High Performance Computing, Networking,
Storage and Analysis (SCC), 2012 SC Companion: , 572-582. Disponible:
[28] G. University. (2016, febrero 2016). EasyBuild Documentation. Disponible:
https://media.readthedocs.org/pdf/easybuild/develop/easybuild.pdf
[29] G. University. (2016, abril 2016). Bootstrapping using supplied source tarballs.
EasyBuild Documentation. Disponible:
http://easybuild.readthedocs.io/en/latest/Installation.html#bootstrapping-using- supplied-source-tarballs
[30] TECNOLOGÍAPYME. (2010, marzo 2016). Cómo elegir una distribución linux
para nuestra empresa entre las basadas en Debian. Disponible:
http://www.tecnologiapyme.com/software/como-elegir-una-distribucion-linux-para- nuestra-empresa-entre-las-basadas-en-debian
[31] EZEQUIEL. (2010, marzo 2016). ¿Cómo elegir la mejor distribución Linux?
Disponible: http://www.puntogeek.com/2010/09/02/tip-%c2%bfcomo-elegir-la- mejor-distribucion-linux/#comments
[32] C. M. B. Rodríguez, "Propuesta de Servicio de Directorio Activo en GNU/Linux mediante Samba4," Trabajo de Diploma, Departamento de Telecomunicaciones y Electrónica, Universidad Central "Marta Abreu" de Las Villas, 2012.
[33] R. M. G. Labrador. (2014, abril 2016). 14127 ADMINISTRACIÓN DE SERVIDORES LINUX (UBUNTU/FEDORA/CENTOS). Disponible:
https://www.informatica.us.es/~ramon/articulos/AdminServidoresLinux.pdf
[34] R. Hertzog and R. Mas. (2014, abril 2016). The Debian Administrator's Handbook, Debian Wheezy from Discovery to Mastery. Disponible: https://debian- handbook.info/download/es-ES/stable/debian-handbook.pdf
[35] J. B. Dueñas. (2015, marzo 2016). Configuración De Servidores Con GNU/Linux. Disponible:
https://bakara.files.wordpress.com/2011/03/configuracion_servidores_linux- 20110929-septiembre.pdf
[36] FreeBSD. (2015, marzo 2016). About FreeBSD. Disponible:
https://www.freebsd.org/about.html
[37] U. d. Córdoba, M. Colombia, and S. Sahagún. (2010, marzo 2016). Características de Debian. Disponible: http://gnu-linuxdebian.blogspot.com/
[38] S. V. G. Arredondo. (2010, marzo de 2016). CentOS es la distribución que más se
utiliza en servidores web. Disponible:
http://www.alcancelibre.org/article.php/20100802204257924
[39] R. Ierusalimschy, L. H. d. Figueiredo, and W. Celes. (2016, abril 2016). Lua About. Disponible: http://www.lua.org/about.html
[40] R. Ierusalimschy, L. H. d. Figueiredo, and W. Celes. (2008, abril 2016). Manual de Referencia de Lua 5.1 Disponible: https://www.lua.org/manual/5.1/es/manual.html
[41] A. HPC. (2016, abril 2016). New Release of Lmod Environment Modules System. Disponible: http://www.admin-magazine.com/HPC/Articles/Lmod-6.0-Exploring- the-Latest-Edition-of-the-Powerful-Environment-Module-System
[42] A. HPC. (2016, abril 2016). Lmod – Alternative Environment Modules. Disponible:
http://www.admin-magazine.com/HPC/Articles/Lmod-Alternative-Environment- Modules
[43] Python. (2001, abril 2016). ConfigParser-Configuration File Parser. Disponible:
http://docs.python.org/2/library/configparser.html
[44] G. University. (2016, abril 2016). Bootstrapping EasyBuild. EasyBuild
Documentation. Disponible:
http://easybuild.readthedocs.io/en/latest/Installation.html#bootstrapping
[45] G. University. (2016, abril 2016). on the develop branch at Github. Disponible:
https://github.com/hpcugent/easybuild-
easyconfigs/tree/develop/easybuild/easyconfigs/e/EasyBuild
[46] G. University. (2016, abril 2016). Installing EasyBuild without admin rights.
EasyBuild Documentation. Disponible:
http://easybuild.readthedocs.io/en/latest/Installation_Alternative.html#alt-inst-easy- install-pip
GLOSARIO
ABI Application Binary Interface o Interfaz binaria de aplicación, da el acceso
de los programas a los recursos del hardware y a los servicios disponibles en un sistema.
API Application Programming Interface o Interfaz de Programación de
Aplicaciones, es el conjunto de subrutinas, funciones y procedimientos que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
BASH La sintaxis de órdenes de Bash es un conjunto de instrucciones basadas en la sintaxis del intérprete Bourne. Su especificación definitiva puede encontrarse en el Bash Reference Manual distribuido por el proyecto
GNU/Linux.
CMake Es una herramienta multiplataforma de generación o automatización de código abierto, diseñada para construir, probar y empaquetar software.
Cray Es un fabricante estadounidense de supercomputadoras. Entre sus principales construcciones están Cray-1, Cray-2 en sus inicios. Otras más actuales son Cray XT y Cray XC.
DAG Directed Acyclic Graph o Grafo Acíclico Dirigido, es un grafo dirigido que no tiene ciclos lo cual significa que para cada vértice ‘v’, no hay un camino directo que empiece y termine en ‘v’. Los DAG aparecen en modelos donde no tiene sentido que un vértice tenga un camino directo a él mismo.
DSL Domain Specific Language o Lenguaje Específico de Dominio, son lenguajes diseñados para la implementación de soluciones en un área de dominio restringida. Están pensados para que sean complementados con otros lenguajes.
EPIC Explicitly Parallel Instruction Computing o Procesamiento de instrucciones explícitamente en paralelo tiene como objetivo aumentar la capacidad de los microprocesadores para ejecutar instrucciones de
software en paralelo mediante el uso del compilador, en lugar de la compleja circuitería en cápsula.
FFTW Fastest Fourier Transform in the West, es un software de biblioteca para el cálculo de transformadas de Fourier discretas, se conoce como el más rápido software libre para la aplicación de la transformada rápida de Fourier (FFT).
GCC GNU Compiler Collection, es un conjunto de compiladores creados por el
proyecto GNU/Linux. GCC es un software libre y lo distribuye la Free Software Foundation (FSF) bajo la licencia general pública GPL.
GitHub GitHub es una plataforma de desarrollo colaborativo de software para alojar proyectos a través del sistema de control de versiones Git. Aloja el repositorio de código y brinda herramientas muy útiles para el trabajo en equipo, dentro de un proyecto. Además de eso, se puede contribuir a mejorar el software de los demás.
GNU GPL GNU General Public License es la licencia más ampliamente usada en el mundo del software y garantiza a los usuarios finales la libertad de usar, estudiar, compartir y modificar el software. Su propósito es declarar que el
software cubierto por esta licencia es un software libre y protegerlo de intentos de apropiación que restrinjan esas libertades a los usuarios
referencia al lenguaje de marcado para la elaboración de páginas web.
Homebrew Es un sistema de gestión de paquetes de software para Mac OS X. Sus principales ventajas son la sencillez, la velocidad y que es menos intrusivo. Hombrew trata de utilizar las herramientas y bibliotecas existentes en Mac OS X, por lo que suele compilar los programas de una forma rápido y requerir menos dependencias. Está basado en sencillos scripts ruby que indican cómo obtener los paquetes, dependencias y cómo instalarlos.
IRC Internet Relay Chat o simplemente Chat, es un servicio de Internet.
El mismo permite la comunicación inmediata a través de Internet entre dos o más personas en formato textual en tiempo real.
Jaguar Es una supercomputadora Cray XT-5HE, de la familia Cray XT, creada por la firma Cray Inc. Equipada con procesadores AMD x86-64 Opteron Hexa Core 2600 MHz, posee en total 224.162 núcleos de procesamiento
Opteron. Es el sistema más rápido disponible para investigación abierta y el primero en superar un rendimiento sostenido de 1 petaFLOPS en una aplicación científica de 64 bits. La máquina fue entregada al ORNL y comenzó a funcionar en noviembre de 2009, con una versión del sistema operativo Linux denominado CrayLinuxEnvironment.
LAPACK Linear Algebra Package, es una biblioteca de software de álgebra lineal numérica. Proporciona rutinas para la resolución de sistemas de ecuaciones lineales entre otros.
Mac OS X Es un entorno operativo basado en Unix, desarrollado, comercializado y vendido por Apple Inc. Actualmente llamado OS X
Makefile Make es una herramienta de gestión de dependencias, típicamente, las que existen entre los archivos que componen el código fuente de un programa, para dirigir su recompilación o “generación” automáticamente. Los
de la compilación de programas. Todos los Makefiles están ordenados en forma de reglas, al especificar qué es lo que hay que hacer para obtener un módulo en concreto.
MPICH Es un programa de biblioteca de desarrollo de libre disposición e implementación portable de MPI, una norma estándar de paso de mensaje para aplicaciones de memoria distribuida que utilizan computación paralela. MPICH es software gratuito y disponible para la mayoría de Unix (incluye GNU/Linux y Mac OS X) y Microsoft Windows.
MPI Message Passing Interface o Interfz de Paso de Mensaje, es un estándar que define la sintaxis y la semántica de las funciones contenidas en una biblioteca de paso de mensajes diseñada para ser usada en programas que exploten la existencia de múltiples procesadores. MPI es una especificación para programación de paso de mensajes, que proporciona una librería de funciones para C, C++ o Fortran que son empleadas en los programas para comunicar datos entre procesos.
MVAPICH En una implementación de alto rendimiento de la norma MessagePassing Interface (MPI) que corren sobre las interconexiones InfiniBand.
NFS Network File System o Sistema de archivos de red, es un método para
compartir archivos entre máquinas de una red de tal forma que da la impresión de trabajar sobre el disco duro local propio. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales.
Nix Es un potente gestor de paquetes para GNU/Linux y otros sistemas Unix
que hace que la gestión de paquetes sea fiable y reproducible. Proporciona actualizaciones y restauraciones, la instalación de múltiples versiones de un paquete, la gestión de paquetes multiusuario y una fácil configuración de entornos de compilación.
OpenMPI OpenMPI es una implementación de la interfaz de paso de mensajes MPI, se caracteriza por su alta eficiencia y prestaciones para la ejecución en entornos distribuidos (clústers de ordenadores).
PGI Portland Group Incorporated, empresa que produce un conjunto de
compiladores disponibles comercialmente como Fortran, C, C++ para la computación de alto rendimiento.
PyPI Python Package Index o PyPI es el repositorio de software oficial para aplicaciones de terceros en el lenguaje de programación Python. Los desarrolladores de Python pretenden que sea un catálogo exhaustivo de todos los paquetes de Python escritos en código abierto.
Python Es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.
Ruby Es un lenguaje de programación dinámico y de código abierto enfocado en la simplicidad y productividad. Combina una sintaxis inspirada en Python
y Perl con características de programación orientada a objetos similares a
Smalltalk. Comparte también funcionalidad con otros lenguajes de programación como Lisp, Lua, Dylan y CLU.
zsh Es un potente intérprete de comandos para sistemas operativos de tipo
Unix, se diseñó para poder usarse interactivamente y se le han incorporado muchas de las características principales de otras consolas de Unix como,