• No se han encontrado resultados

Dependencias del Yade y selección del toolchain

CAPÍTULO 3. SOPORTE PARA EL SOFTWARE YADE EN EASYBUILD

3.1 Creación del soporte necesario para el software Yade

3.1.1 Dependencias del Yade y selección del toolchain

Cuando se crea un soporte en EasyBuild para un software o librería determinado es necesario hacer un previo estudio de los requisitos, herramientas y opciones de compilación de esta. Por lo tanto el desarrollador será probablemente la persona más calificada para documentar el proceso y para darle soporte a las versiones más recientes.

En el HPC de la UCLV, donde se realiza este trabajo se opta por usar el compilador toolchain

foss-2016a disponible en EasyBuild, esta opción es completamente software libre y contiene el compilador GCC junto con las bibliotecas OpenMPI (soporte a MPI), OpenBLAS (soporte a BLAS y LAPACK), ScaLAPACK y FFTW. A partir de aquí todos los archivos easyconfig

que dan soporte a las dependencias de Yade tanto los disponibles como los nuevos añadidos deben usar este toolchian para la complicación. Es probable que algunos paquetes de dependencias ya estén disponibles en EasyBuild pero no con el toolchain seleccionado por lo tanto para estos se debe crear un nuevo archivo easyconfig donde como mínimo cambie el parámetro toolchain y se especifique el seleccionado.

Yade como muchos otros software soportados por EasyBuild requiere de varios paquetes instalados previamente para la compilación y correcta ejecución del mismo, a su vez estos paquetes requieren de otros y así sucesivamente. Para EasyBuild esto no representa ningún impedimento ya que gracias a la característica 3 explicada en el capítulo 1 EasyBuild es capaz de resolver automáticamente las dependencias para un paquete determinado siempre que estas se encuentren disponibles en el soporte de EasyBuid. Por lo tanto la primera tarea sería hacer un análisis de las dependencias necesarias para el software Yade y realizar el soporte necesario para las dependencias que aún no se encuentren disponibles en EasyBuild.

Luego de un análisis del sitio oficial de Yade10 y varias pruebas de instalación manual se

obtiene que Yade requiere de los siguientes paquetes disponibles para su complicación y correcta ejecución:

Boost 1.47o superior, proporciona bibliotecas C++ portables de código libre revisada por expertos.

CGAL, proporciona un fácil acceso a los algoritmos geométricos eficientes y confiables en forma de una biblioteca C++.

Eigen (versión >= 3.2.1), es una plantilla de biblioteca C++ para álgebra lineal: matrices, vectores, solucionadores numéricos y algoritmos relacionados.

GDB, GNU Project debugger permite ver lo que está pasando en el ‘interior’ de otro

programa mientras se ejecuta, o que estaba haciendo ese otro programa en el momento en que falla.

GL2PS, es una biblioteca C que proporciona alta calidad de salida del vector (PostScript, PDF, SVG) para una aplicación OpenGL.

GTS, GNU Triangulated Surface Library es una biblioteca de software de código abierto destinada a proporcionar un conjunto de funciones útiles para hacer frente a superficies 3D.

IPython, ofrece una rica arquitectura de computación interactiva con:

 Una potente consola interactiva.

 Un núcleo para Jupyter.

 Apoyo para la visualización interactiva de datos y el uso de herramientas GUI.

 Intérpretes flexibles e integrables para cargarse en sus propios proyectos.

 Fácil de usar, herramientas de alto rendimiento para la computación paralela.

libQGLViewer, es una biblioteca de C++ basado en Qt que facilita la creación de espectadores OpenGL 3D.

Loki, es una biblioteca C++ de diseños, que contiene las implementaciones flexibles de patrones de diseño comunes y lenguajes.

matplotlib, es una biblioteca Python de trazado 2D que produce figuras de calidad de publicación en una variedad de formatos de impresos y entornos interactivos a través de plataformas.

minieigen, un pequeño contenedor de piezas centrales de Eigen, bibliotecas C++ para álgebra lineal.

PyGTS, es un paquete Python utilizado para construir, manipular y realizar cálculos sobre superficies trianguladas.

Python, intérprete de código en el lenguaje de programación Python.

Qt, es una multiplataforma C++

SQLite, es una biblioteca de software que implementa un motor de base de datos SQL, autónomo, sin servidor y sin necesidad de configuración,

VTK, es un sistema de software de código abierto, libremente disponible para gráficos 3D, procesamiento de imágenes y visualización.

zlib, biblioteca de compresión de datos sin pérdidas, para usar en prácticamente cualquier sistema operativo y hardware, diseñada para ser libre, de propósito general, no cubierto por ninguna patente.

CMake, es una familia de herramientas de código abierto, multiplataforma, para construir y probar paquetes de softwares.

Estas son sus dependencias principales, pero cada una de ellas tiene sus propias dependencias que también deben estar disponibles en EasyBuild.

En el momento en que se hizo el desarrollo del soporte ya estaban disponibles algunos archivos easyconfigs necesarios que dan soporte a algunas dependencias de Yade como por ejemplo CMake-3.5.2-foss-2016a.eb, SQLite-3.9.2-foss-2016a.eb por lo que para estos no fue necesario crear soporte alguno, solo incluirlos en el parámetro dependencies en el easyconfig propio de Yade.

Otros archivos easyconfigs que dan soporte a paquetes como Eigen, IPython, CGAL etc. ya se encontraban disponibles en EasyBuild pero no para el toolchain foss-2016a por lo tanto fue necesario crear otros nuevos con los nombres correspondientes a cada uno referentes al toolchain foss-2016a donde solamente cambió el parámetro toolchain en la mayoría de ellos. Así también se realizó para las de dependencias propias de cada uno de estos paquetes. También existían dependencias que aún no estaban disponibles en EasyBuild incluso para ningún toolchain, por lo tanto en estos casos fue necesario crear desde cero el soporte para ellas, donde en la mayoría de los casos solo con la creación del archivos easyconfig para el paquete principal y para sus dependencias fue suficiente ya que muchas de estas dependencias usan el método tradicional GNU configure, make, make install y por lo tanto usando el easyblock genérico ConfigureMake implementado en el módulo configuremake

disponible en EasyBuild es suficiente para gestionar el proceso de instalación. En el caso de libQGLViewer que usa la herramienta qmake de Qt para su complicación, se creó además del archivo easyconfig un easyblock personalizado que hereda las características del easyblock genérico configuremake y solamente se sobrescribió el método configure_step()

para utilizar en vez de la ejecución del script configure la herramienta qmake.

Y por último se creó el archivo easyconfig que da soporte al software Yade sin necesidad de crear easyblock ya que como muchas dependencias el proceso de compilación de Yade se configura con la herramienta CMake y para esta también existe un easyblock genérico en el repositorio de easyblock de EasyBuild.

Una vez creado todo el soporte necesario, utilizando la opción --dep-graph EasyBuild genera un grafo de dependencias para la instalación del software Yade donde se muestran

exactamente todas las dependencias que EasyBuild debe resolver antes de procesar el easyconfig propio de Yade. Este grafo no se muestra aquí debido a su gran tamaño.