160 likes | 289 Views
Software p/ clusters y cálculo. Agenda Implementaciones de MPI Almacenamiento de datos Paquetes de visualización Solvers. Implementaciones de MPI. Free/Open source: MPICH2 (http://www-unix.mcs.anl.gov/mpi/mpich/) hay versiones para todos los gustos. LAM-MPI (se está dejando de mantener)
E N D
Software p/ clusters y cálculo • Agenda • Implementaciones de MPI • Almacenamiento de datos • Paquetes de visualización • Solvers
Implementaciones de MPI • Free/Open source: • MPICH2 (http://www-unix.mcs.anl.gov/mpi/mpich/) hay versiones para todos los gustos. • LAM-MPI (se está dejando de mantener) • Open-MPI (reemplazo de LAM http://www.open-mpi.org) actualmente solo *NIX y MAC-OS • TOMPI: A Threads-Only MPI Implementation (http://theory.lcs.mit.edu/~edemaine/TOMPI/) • Comerciales • MS-MPI (parte del Microsoft Compute Cluster Pack) • MPI-PRO (Verari systems) • SCALI (www.scali.com) • Intel Cluster Pack • WMPI (http://www.criticalsoftware.com/hpc)
Almacenamiento de datos (1) • Las más utilizadas son: • CDF (Common Data Format) desarrollado en la NASA, http://nssdc.gsfc.nasa.gov/cdf/cdf_home.html • NetCDF (Network Common Data Form) http://www.unidata.ucar.edu/software/netcdf/ • HDF(Hierarchical Data Format) en sus dos versiones (hdf4 y hdf5) http://hdf.ncsa.uiuc.edu/
Almacenamiento de datos (2) • La idea es proveer una interface clara para leer y escribir grades cantidades de datos. • Debe ser independiente de la plataforma. • Idealmente con soporte para paralelismo. • Auto – descriptivo • Con la posibilidad de ser orientado a nichos. • Todas trabajan definiendo un header con atributos que describen los datos y luego los datos propiamente dichos. • Deben proveer herramientas de inspección, edición y visualización adecuadas. • Los usos habituales son de almacenamiento para herramientas de visualización y checkpointing.
HDF 4 • CDF, HDF4 y NetCDF son muy similares en las prestaciones y formas de acceso. • El tener que usar uno u otro se basa más bien en la herramienta que se utilizará para procesar los datos. • Posee una cantidad de tipos predefinidos, por ejemplo arrays multidimensionales, imagenes (datos binarios planos) y tablas. • Está limitado a archivos de 2Gb y a 20000 objetos. • Muy poco soporte para I/O parelela. • Muy soportada por las aplicaciones en general.
HDF 5 • Incompatible con HDF4 • Es posible convertir archivos HDF4 fácilmente (no a la inversa) • Es orientada a OO. • Se pueden definir atributos globales y locales. • Se pueden definir grupos. • No tiene limitación de espacio.
HDF5 – Ejemplo (atributo) dataspace_id = H5Screate_simple(1, dims, NULL); if (dataspace_id<0) throw hdf_error(std::string("Error durante H5Screate_simple (Dataspace).")); hid_t grupo_root; //Abro el grupo root para crear los atributos globales. grupo_root=H5Gopen(fileid, "/"); attribute_id = H5Acreate(dataset, name.c_str(), H5T_NATIVE_UINT, dataspace, H5P_DEFAULT); H5Awrite(attribute_id, H5T_NATIVE_UINT, &atributo)<0); H5Aclose(attribute_id); H5Gclose(grupo_root); H5Sclose(dataspace_id);
Paquetes de visualización (1) Detalles a tener en cuenta para elegir un paquete: • Requerimientos de software and hardware • Tipo de aplicación (elección entre paquete cerrado o “application builder”) • Facilidad de uso, interface de usuario. • Soporte para incorporar extensiones. • Soporte para procesamiento en paralelo (ojo con los clusters!!) • Documentación existente. • Soporte de la comunidad. • Tipo de archivo que soporta como entrada.
Paquetes de visualización (2) • Los “application builders” más conocidos son: • Iris Explorer (www.nag.co.uk) comercial. • Opendx (antes IBM Visualization Data Explorer, www.opendx.org) liberado hace algunos años. • AVS (http://www.avs.com/) es muy poderoso, pero comercial. • Khoros (http://www.idi.ntnu.no/~bilde/download/khoros/) es menos conocido, pero algunos lo usan • LabVIEW es orientado a manejo de equipamiento de laboratorio, con muchos módulos y plug-in’s pero comercial…
Paquetes de visualización (3) • Más cerrados y con nichos específicos: • Generales: GNUPlot, Matlab • Meteorología: Ferret, Vis5D+ • Molecular Dynamics: VMD, Xmol • CFD: FAST (de la NASA, hay que registrarse para tener una copia), NCARG • Si queres hacer todo a manopla porque te gusta lo difícil: • CImg: una librería muy buena de manejo de gráficos con soporte para C/C++ (cimg.sourceforge.net/download.shtml) • VTK: un standard en lo que hace a visualización con soporte para C++ y varios lenguajes interpretados (Tcl/Tk, Java y Pithon) y multiplataforma (http://public.kitware.com/VTK/)
Solvers (1) En la gran mayoría de los casos, el software que necesitas ya está hecho, a lo sumo nos convertimos en integradores
Solvers (2) • Paquetes bien conocidos y estables: • Lapack / Scalapack: la idea fundamental es resolver este tipo de cosas LU, Cholesky, QR, SVD, Schur, generalized Schur. Fundamental, hay que programar uno la rutina de distribución de datos por bloques entre los procesos. • Blas (Basic Linear Algebra Subprograms) son funciones pequeñas que se usan como bloques de construcción para otros paquetes. Hay muchas versiones desarrolladas por empresas (AMD, Cray, Intel, HP, IBM, SUN, etc) • Atlas (Automatically Tuned Linear Algebra Software) es obtener un paquete que se autoconfigure para ser lo más eficiente posible en cualquier plataforma. • MUMPS MUltifrontal Massively Parallel sparse direct Solver (http://www.enseeiht.fr/lima/apo/MUMPS/) • PSPASES: Parallel SPArse Symmetric dirEct Solver (http://www-users.cs.umn.edu/~mjoshi/pspases/)
Solvers (3) • Entorno de desarrollo para problemas: • No olvidarse del siempre querido Matlab!! • Cactus (http://www.cactuscode.org/) si bien viene de la comunidad de astrofísica, por su buena arquitectura se puede utilizar para otro tipo de aplicaciones. • PETSc (http://www-unix.mcs.anl.gov/petsc/petsc-as/) • PETSc should not be used to attempt to provide a “parallel linear solver” in an otherwise sequential code. Certainly all parts of a previously sequential code need not be parallelized but the matrix generation portion must be to expect any kind of reasonable performance. Do not expect to generate your matrix sequentially and then “use PETSc” to solve the linear system in parallel.
Solvers (3) • Partición de dominio • Chaco • Metis/parmetis • Meshpart: Matlab Mesh Partitioning and Graph Separator Toolbox (http://www.cerfacs.fr/algor/Softs/MESHPART/index.html)