Anterior: Centímetros | Siguiente: Don Hertzfeldt
Mi reino por un...
Supercomputación
Creo que sobra decir que, si no me he ido de vacaciones ni he escrito uno de estos "Flying Circus" es porque he estado bastante ocupado. A diferencia de Ion que está por Mongolia comiendo entrañas de cabra.
Ya que no puedo dedicarme a las nuevas experiencias gastronómicas de Asia Central me dedico a pasar el rato haciendo chorradas que tienen que ver con mi trabajo. Es equivalente a masturbarse cuando tus amigos se están cepillando a la novia de Cristiano Ronaldo.
Cosas que he hecho durante este triste tiempo y aún no he contado:
Montar un servidor público de SAGE aprovechando que tenemos un pc viejo muerto de asco y un nombre en el DNS de la politécnica que no usamos. Podéis cacharrear todo lo que queráis, de hecho está hecho para cacharrear. Ha costado como un poquito y he tenido que parchear los scripts de instalación pero os presento el primer servidor sage público de la Politécnica de Madrid
Un talón de aquiles jodido de nuestros códigos es la lectura y escritura de datos. Como si fuera un locutor de los 40 principales voy a llamarlo I/O a partir de ahora. Actualmente leemos y escribimos en paralelo pero lo hacemos sin formato. Aunque conseguimos transferencias de hasta 26 BGi/s (un blu-ray por segundo) lo hacemos a un coste muy elevado. El archivo queda fragmentado y sólo puede utilizarse como restart file. Si necesitamos post procesar nuestros resultados tenemos que escribir en serie.
Para resolver este problema me he pillado MPI, HDF5, un poco de Fortran 2003 (sí, habéis leído bien) y he creado VSIO. Es una librería tremendamente simple para leer y escribir archivos HDF5 en serie y en paralelo asumiendo una descomposición de dominios trivial. Supongamos que el dominio computacional es un cubo. Tendremos tres tamaños: NX, NY y NZ. La manera más habitual de descomponer el dominio es asignar a cada nodo los índices correspondientes de la última dimensión, en este caso NX. Así, cada nodo irá de un nx_beg a un nx_end.
Lo que hace VSIO es juntar las variables para escribir los datos en el archivo y generar un dataset de tamaño NX x NY x NZ.
La gracia es que la librería está programada en C y Fortran la llama a través de wrappers escritos con el módulo ISO_C_BINDING. Esto significa que necesitáis un compilador de Fortran de putísima madre para compilarlo. Con el GCC, nada por debajo del 4.4 va a poder con ello. Si usáis el de Intel más os vale pasar del 11.0
Yo aún no he podido encontrar ningún bug así que espero que alguna alma caritativa mejore los tests que he diseñado (más bien pocos). Si quieréis un ejemplo podéis mirar los programas main.c y main.f90. Son el mismo programa y escriben los mismos archivos sólo que uno está escrito en C y el otro en Fortran.
Más cuando tenga algo de tiempo para respirar.
-
Tags:
Ingeniería
Creo que sobra decir que, si no me he ido de vacaciones ni he escrito uno de estos "Flying Circus" es porque he estado bastante ocupado. A diferencia de Ion que está por Mongolia comiendo entrañas de cabra.
Ya que no puedo dedicarme a las nuevas experiencias gastronómicas de Asia Central me dedico a pasar el rato haciendo chorradas que tienen que ver con mi trabajo. Es equivalente a masturbarse cuando tus amigos se están cepillando a la novia de Cristiano Ronaldo.
Cosas que he hecho durante este triste tiempo y aún no he contado:
Montar un servidor público de SAGE aprovechando que tenemos un pc viejo muerto de asco y un nombre en el DNS de la politécnica que no usamos. Podéis cacharrear todo lo que queráis, de hecho está hecho para cacharrear. Ha costado como un poquito y he tenido que parchear los scripts de instalación pero os presento el primer servidor sage público de la Politécnica de Madrid
Un talón de aquiles jodido de nuestros códigos es la lectura y escritura de datos. Como si fuera un locutor de los 40 principales voy a llamarlo I/O a partir de ahora. Actualmente leemos y escribimos en paralelo pero lo hacemos sin formato. Aunque conseguimos transferencias de hasta 26 BGi/s (un blu-ray por segundo) lo hacemos a un coste muy elevado. El archivo queda fragmentado y sólo puede utilizarse como restart file. Si necesitamos post procesar nuestros resultados tenemos que escribir en serie.
Para resolver este problema me he pillado MPI, HDF5, un poco de Fortran 2003 (sí, habéis leído bien) y he creado VSIO. Es una librería tremendamente simple para leer y escribir archivos HDF5 en serie y en paralelo asumiendo una descomposición de dominios trivial. Supongamos que el dominio computacional es un cubo. Tendremos tres tamaños: NX, NY y NZ. La manera más habitual de descomponer el dominio es asignar a cada nodo los índices correspondientes de la última dimensión, en este caso NX. Así, cada nodo irá de un nx_beg a un nx_end.
Lo que hace VSIO es juntar las variables para escribir los datos en el archivo y generar un dataset de tamaño NX x NY x NZ.
La gracia es que la librería está programada en C y Fortran la llama a través de wrappers escritos con el módulo ISO_C_BINDING. Esto significa que necesitáis un compilador de Fortran de putísima madre para compilarlo. Con el GCC, nada por debajo del 4.4 va a poder con ello. Si usáis el de Intel más os vale pasar del 11.0
Yo aún no he podido encontrar ningún bug así que espero que alguna alma caritativa mejore los tests que he diseñado (más bien pocos). Si quieréis un ejemplo podéis mirar los programas main.c y main.f90. Son el mismo programa y escriben los mismos archivos sólo que uno está escrito en C y el otro en Fortran.
Más cuando tenga algo de tiempo para respirar.
