02/11/2009

Se nos llena la boca

Posted in Ciencia tagged , , , , , a 9:44 am por interloper

Hoy todos los informativos le dedicarán un par de minutos: hoy despega el satélite SMOS, dedicado a hacer un seguimiento del cambio climático, utilizando tecnología desarrollada por una universidad española, la UPC.

Y mientras tanto, mientras se nos llena la boca diciendo lo buenos que son nuestros investigadores, que ponen cacharritos con luces en el espacio, a todos los informativos se les olvidará hablar del estudio que habla de la mediocridad de las investigaciones de universidades españolas. Porque claro, igual si no nos enteramos de que no somos los mejores, hasta acabamos siéndolo…

09/10/2009

Get away from her, you bitch!

Posted in Ciencia, Cine, Curiosidades tagged , , , , , a 5:45 pm por interloper

Quien no haya visto todavía “Aliens: El Regreso”, que deje inmediatamente de leer y se vaya corriendo a verla. No es un consejo, es una orden. Si es uno de los mayores clásicos del cine de acción y ciencia-ficción es por algo.

Entre esos motivos están una dirección espléndida, unos actorazos de aupa, Vasquez, una tensión que te mantiene pegado al asiento durante toda la peli, unos escenarios curradísimos, Vasquez, un repertorio de armas de impresión, y algunas de las escenas más memorables de este género cinematográfico. Ah, si… Y Vasquez.

Entre esas escenas, una de las mejores es, ya cerca del final de la película, la siguiente (advierto: la calidad del video es una basura, pero ha sido la única que he encontrado… si veo por ahi una bien grabada, ya me encargaré de actualizar el post):

¿Y a cuenta de qué salgo yo ahora con Aliens? Bueno, pues aparte de porque es una de mis películas favoritas, de porque nunca está mal recordar escenas como esa, y de porque para algo es mi blog y en él hablo de lo que me sale de la punta del pie, saco el asunto hoy porque un grupo de investigadores japoneses ha desarrollado, basándose en la peli, un “Power Loader” real, que funciona de verdad, y que es capaz de levantar más de 100 kgs con cada brazo.

Ahora solo nos falta viajar a un planeta extraterrestre y encontrar una raza alienígena asesina contra la que usarlo, porque si no… Para qué haberlo inventado?

Bahía 13, por favor…

03/10/2009

Preparandonos para el dia 7…

Posted in Ciencia a 3:57 pm por interloper

Toda la información, aquí.

12/01/2009

BOINC v6.4.5 y el GPGPU

Posted in Ciencia tagged , , , , , , a 7:55 pm por interloper

Para los indecisos… Acabo de enterarme de que se ha publicado la actualización a una nueva versión de BOINC (para quienes no sepan de qué hablo, les remito a mi anterior post acerca del tema, aquí), que incorpora un avance que considero bastante importante… La posibilidad de aprovechar la potencia de cálculo GPGPU para la obtención de los resultados. Puede que algunos os preguntéis qué demonios es esto… Intentaré dar una explicación sencilla.

Si leísteis la anterior entrada acerca de BOINC (si no lo hicísteis, os he dejado el link arriba, asi que no seais perezosos!), en ella hablaba un poco acerca del procesamiento en paralelo. Concretamente, en nuestro caso, daba por supuesto que cada ordenador solo puede realizar, a efectos prácticos, una sola tarea en cada momento, por lo que en su caso el comportamiento sería el de procesamiento en serie. Tener, como decía en esa entrada, cincuenta millones de ordenadores nos permitiría estar ejecutando, en cada instante, cincuenta millones de tareas a la vez. Pero qué sucede si cada ordenador puede ejecutar, a su vez, más de una tarea a la vez? Hasta ahora mismo, eso era algo que ya se estaba haciendo. Por poner un ejemplo, en mi ordenador del trabajo, con doble núcleo (a grosso modo para los neófitos, dos procesadores en uno) se ejecutan a la vez dos tareas por unidad de tiempo (matemática básica: con 25 millones de ordenadores doble core se podría realizar la misma cantida de trabajo que con 50 millones de un solo núcleo). Pero… qué sucedería si pudiesemos utilizar más recursos del ordenador aparte del procesador para realizar cómputo?

La duda evidente es, claro está, dónde encontrar esos recursos. La respuesta es, en este caso, en la tarjeta gráfica. Una importante característica de los elementos de video, de los cuales normalmente se encarga este componente (aunque la labor también pueda ser realizada por el propio procesador central) es que poseen un altísimo grado de paralelismo. Supongamos un juego de ordenador en 3D. En él, cada figura u objeto con que nos topamos está diseñado mediante una malla de polígonos sobre la que, posteriormente, se coloca una textura que “pintará” el interior del polígono.

guy_mod_02(Click para ampliar)

Al mostrar las imágenes por pantalla, es necesario procesar la posición relativa de cada uno de esos polígonos con respecto a la cámara, decidir cuales de ellos serán visibles para el jugador (es decir, cuales no estarán ocultos detrás de otros), y sobre cada uno de ellos habrá que aplicar la correspondiente textura. Una vez se tiene eso, solo queda enviar la correspondiente información a la pantalla, y el resultado es como el que puedes ver en la imagen superior. En todo este proceso hay dos pasos que contienen un altísimo número de operaciones totalmente independientes entre si: El cálculo de la posición relativa de cada polígono en pantalla, y la aplicación de las texturas a los polígonos visibles (el proceso de decisión de los polígonos visibles es, desafortunadamente, secuencial). Con este objetivo en mente, los diseños de las tarjetas gráficas se han ido especializando en la realización de este tipo de tareas, y mientras que un microprocesador normal suele poseer un diseño considerablemente genérico, las GPUs (siglas de Graphics Processing Unit, el procesador de la tarjeta gráfica, vamos…) han desarrollado una arquitectura donde se explota al máximo el paralelismo de estas operaciones para obtener una altísima velocidad de procesamiento. Como muestra, un botón:

7800-gpu-overview

La imagen superior muestra la arquitectura básica de una de las familias gráficas de la casa Nvidia. Como podéis observar, hay tres filas de elementos repetidos. En la primera de esas filas se realiza la rotación y posicionamiento de los distintos vértices que componen las figuras. En la segunda, lo que se lleva a cabo (aunque no lo hubiese mencionado con anterioridad) es el sombreado de los píxeles de cada polígono. En este punto, se aplican los valores de brillo o efectos que ese punto tendrá (explosiones, relieves, transparencia, etc.). Finalmente, en la tercera fila se aplica la textura a cada uno de los polígonos (evidentemente, si el polígono está rotado en alguna de las tres dimensiones, será necesario rotar igualmente la textura), y se envía a la salida por pantalla. El bloque marcado como Z-Cull es el encargado de determinar qué polígono será visible y cual no. El número de operaciones que una GPU puede realizar por segundo es abrumadora. Piensa que, en juegos de última generación, simplemente la cabeza de un personaje puede tener más de 3000 polígonos que es necesario procesar… junto a otro montón de cosas que aparecerán en pantalla!

Una vez explicado el funcionamiento básico de una tarjeta gráfica, pasemos al concepto que realmente nos ocupaba en esta ocasión… El GPGPU. Qué es eso? Se trata de una tendencia que se está empezando a explotar muy recientemente llamada “Procesamiento General en GPU”. O lo que es lo mismo, aprovechar el alto paralelismo de las tarjetas gráficas para realizar otras operaciones distintas a aquella para la que fueron diseñadas. Mediante técnicas que “engañan” a los distintos componentes de la GPU para que realicen operaciones de diverso tipo camufladas como polígonos y texturas, se puede explotar el paralelismo interno de distintos fragmentos de un programa para obtener los resultados con mayor velocidad. Así de facil, así de complicado.

Y precisamente, eso es lo que se ha implementado en esta ocasión para el cliente BOINC. Aunque por el momento esta extensión solo está disponible para las tarjetas gráficas Nvidia (como la que hemos destripado anteriormente, las ATI tendrán que esperar), se trata de un avance muy significativo, ya que implica que ahora no solo se podrá aprovechar el procesador del PC, sino que otro potentísimo elemento de procesamiento como es la tarjeta gráfica podrá ser puesta, también, al servicio de la ciencia. Al final los informáticos (que ahora todos sabemos, gracias al anuncio de T€l€fónica, que son todos chinos, con bata y gafas) van a hacer con el ordenador como los charcuteros con el cerdo, que se aprovecha todo!

Y para que no me digáis que no está todo completo… El olvidado link a la web de la que descargar BOINC.

[Imagen superior tomada del portfolio de Eric Maslowski]
[Imagen inferior tomada de Tom’s Hardware]
[Más información sobre GPGPU: gpgpu.org y la Omniscente]

15/11/2008

Tu PC al servicio del bien común

Posted in Ciencia tagged , , , , , , a 4:12 pm por interloper

Piensa en tu ordenador. Fíjate en cuánto lo usas, piensa en las horas que pasa encendido en casa sin nadie delante, con la pantalla apagada, y sin hacer realmente nada. Planteate el hecho de que, incluso cuando lo estás usando, la mayor parte del tiempo no estás aprovechando más del 50% de su potencia.

Ahora, imagínate poder hacer que tu ordenador, a través de tu conexión a internet, pudiese ser utilizado para la investigación de un remedio contra el SIDA, el análisis de la radiación emitida por un púlsar a millones de años luz de la Tierra, para realizar simulaciones de plegado de proteínas, o incluso a evaluar los resultados de los experimentos que se realicen en el LHC (cuando vuelva a estar en funcionamiento, claro está…). ¿Acaso no sería bueno aportar tu pequeño granito de arena al mundo de la investigación?

La computación distribuida

Los programas que ejecutamos en nuestro ordenador se componen, en general, de diversas tareas que, combinadas, dan los resultados finales o output de la aplicación. Y estas tareas puede que sean dependientes las unas de las otras, o no. Por supuesto, si la tarea C depende de la tarea B, y esta a su vez de la A, el ordenador deberá ejecutarlas secuencialmente: A, B y por último C. Sin embargo, si las tres tareas son totalmente independientes entre sí, existiría la posibilidad de ejecutarlas en paralelo, todas a la vez, de modo que el tiempo de ejecución total no fuese la suma de los tres tiempos de ejecución, sino únicamente el de la tarea más lenta.

Ahora supongamos que tenemos la necesidad de ejecutar cien millones de tareas distintas e independientes entre si, cada una de las cuales tardarían, pongamos, doce horas en ser ejecutada. Si un único ordenador tuviese que ejecutarlas, tardaría mil doscientos millones de horas en ejecutarlo todo. Pero… ¿Y qué sucede si tenemos cincuenta millones de ordenadores? Pues que podríamos repartir dos tareas por ordenador, y tardar un único día en obtener los resultados. Esa es, precisamente, la idea que se esconde detrás del paradigma de computación distribuida: tener una serie de equipos que se vayan encargando de realizar todos los procesos independientes de una aplicación con el objetivo de reducir el tiempo de ejecución necesario para obtener los resultados.

Pero habrás notado que el número de ordenadores del que he hablado en este ejemplo hipotético es muy elevado… Cincuenta millones de ordenadores no es una cantidad que esté al alcance de todo el mundo… Tanto por espacio como por gasto económico, es una completa locura. Un laboratorio de un centro de investigación puede llegar a tener cien, doscientos ordenadores… Incluso unos cuantos miles, si empezamos a hablar de organismos de investigación de peso. Pero no millones.

Y en cambio… ¿Que sucedería si los ordenadores que realizan los cálculos no fuesen, obligatoriamente, todos pertenecientes a la misma compañía o grupo? ¿Y si hubiese una manera de aprovechar los miles de equipos que, dia tras dia, permanecen conectados a internet y encendidos, pero sin un usuario delante haciendo absolutamente nada? Es así como nace World Community Grid.

World Community Grid

Fundado por IBM sin ánimo de lucro, el sistema fue lanzado en 2004. La empresa mantiene catorce servidores conectados a la red desde los que, una vez recibida toda la información del proyecto por parte de las organizaciones investigadoras, divide los contenidos de estudio en pequeños paquetes que distribuye a través de internet a los diversos ordenadores conectados a la WCG, los cuales se encargan de llevar a cabo las tareas requeridas para, posteriormente, devolver los resultados a los servidores centrales. Una vez recibidos todas las respuestas desde los clientes, éstos servidores recopilan y tratan adecuadamente los resultados, y se los hacen llegar de nuevo a las organizaciones. Puedes encontrar algo más de información aquí.

De este modo, el WCG ya ha completado tres proyectos: Human Proteome Folding Project (plegado del proteoma humano), Help Defeat Cancer (investigación para facilitar la identificación y cura de cáncer de pecho, cabeza y cuello), y Fiocruz Genome Comparison Project. Mientras tanto, actualmente hay hasta siete proyectos más activos o en espera.

Y no solo eso. Al conectarse al World Community Grid (a continación contaré cómo hacerlo), el cliente que descargaremos también nos permite unirnos a muchos otros proyectos de investigación, como Einstein@Home, uFluids, QMC@Home, o muchos más, la mayoría de ellos de gran interés. Gracias a ello, la posibilidad de aportar nuestra pequeña ayuda al progreso científico aumenta, ¡y seguro que es bien acogida y necesitada!

Instalando el cliente de WCG

Llegados a este punto, espero haberte convencido de que es bueno (y necesario) instalar el cliente de WCG en tu equipo y unirte a esta red de apoyo a la ciencia. ¿Cómo hacerlo? Es muy sencillo. Lo primero que debes hacer es descargarte el programa sobre el que ejecutar las aplicaciones. Éste se llama BOINC, está disponible para descargar desde su página en la web de la Universidad de Berkeley. Una vez instalado, podrás comenzar a añadir aplicaciones.
En la imagen de la izquierda (click para ampliar), por ejemplo, tenemos cuatro proyectos activos Si queremos añadir uno nuevo, no tendremos más que hacer click en Herramientas -> Unirse a un proyecto, y seguir las instrucciones que nos irán apareciendo. El proceso es realmente sencillo, y muy intuitivo… Yo, poco después de hacer las capturas, añadí un quinto proyecto, Ibercivis, en el que se agrupan distintas asociaciones españolas de investigación para respaldar sus proyectos en un sistema de computación distribuída como éste.

A la derecha, en esta otra captura, se ve el contenido de la pestaña de Tareas, que es la carga de trabajo real que nuestro equipo tiene por cada proyecto, así como el estado en que se encuentra cada uno en este momento, y unas cuantas estadísticas más. Una pena que, habiendo puesto a funcionar el cliente recientemente en éste portátil, no tenga todavía ningún resultado al 100% que mostrar…

Just one little problem…

Ok, dirás. Todo esto es muy bonito, voy a salvar al mundo gracias a mi ordenador, y todo ello a base de solo unos pocos clicks, pero… ¿No hay nada negativo? Por supuesto, como todo, siempre hay alguna pega a todo esto… Aunque es fácilmente solventable. ¿Y cual es ese punto en contra? El uso de nuestro ordenador para cálculo intensivo como éste provoca que la carca de trabajo aumente considerablemente, y por defecto, el cliente BOINC está configurado para usar el 100% del procesador disponible. Es decir, que si estáis ejecutando una aplicación que consume el 40% del tiempo de trabajo, BOINC se quedará el 60% restante… Lo que implica que el procesador estará trabajando a pleno rendimiento constantemente. Y en consecuencia, se calentará. Si vuestro PC está bien preparado para afrontar el calor, no hay ningún problema real. Si en cambio es como mi portátil, que si se sobrecalienta, se apaga, ya no es tan gracioso. ¿La solución? Pedirle a BOINC que no utilice todo el procesador. ¿Cómo? De la siguiente forma:

En Avanzado -> Preferencias -> Uso del procesador, podéis indicarle al programa que, como tengo yo puesto para mi equipo, no utilice nunca más del 50% del procesador (Otras Opciones, abajo del todo). Incluso podéis decirle (en la parte de arriba) que el cálculo solo se ejecute cuando no estáis delante del PC, de modo que cuando estáis trabajando con él, BOINC no se esté quedando con parte del tiempo del procesador. En mi caso, y con la configuración tal y como está en la imagen de la izquierda, la temperatura del procesador oscila siempre entre los 50 y los 70 grados, algo normal para un equipo con una carga de trabajo intensiva como la que la WCG genera.

Creo que iniciativas como ésta son las que demuestran que el trabajo desinteresado, y con la ayuda de todos, es capaz de hacer cosas realmente grandes, que los proyectos colaborativos son una vía de pensamiento que realmente funciona y que si todos ponemos un poco de nuestra parte (en este caso, un poco de procesador a calcular), los resultados pueden ser espectaculares. Instálalo, y pon tu grano de arena a esta playa que estamos construyendo.

24/08/2008

Cuando los robots aprenden a mentir

Posted in Ciencia a 12:52 pm por interloper

Os dejo aquí con un artículo realmente MUY interesante que he encontrado… El desarrollo al más puro estilo darwiniano de la inteligencia artificial que desemboca primero en la aparición de un sistema de comunicación entre robots, y por otro lado, e inesperadamente, en la aparición de “mentirosos” y “héroes”.

El artículo en Libro de Notas.

El estudio lo desarrolla Darío Floreano en la EPFL, en Suiza… Cuando vaya para allá en noviembre trataré de enterarme un poco en primera persona de ese funcionamiento, y si puedo, lo comentaré por aquí…

18/08/2008

En el fondo, somos poca cosa…

Posted in Ciencia a 5:33 pm por interloper

ADVERTENCIA: Si sufres de depresión o te sientes ninguneado, o piensas que tu vida vale poco, no sigas leyendo… Esto no mejoraría las cosas.

Yo lo he advertido…

El caso es que, echando un vistazo entre unos de los muchos blogs en los que me gusta pasar las horas, me he encontrado hoy con un dato curioso… He encontrado algo de información acerca de una imágen bastante famosa en la comunidad astronómica, la conocida como Hubble Ultra Deep Field. La imágen, en concreto, es esta:

Se trata de una imágen tomada por el telescopio Hubble en la que se pueden ver del orden de 10,000 (diezmil) galaxias de nuestro universo. Ya parece un número brutal… Pero cada una de esas galaxias está formada por un número de estrellas que varían entre diez millones y un trillón de estrellas. La mayoría de ellas, claro está, con sus sistemas solares asociados. La media de tamaño de cada una de esas estrellas es de, aproximadamente, un millón de veces el tamaño de La Tierra.

¿Te sientes pequeño? Todavía falta…

Esa imágen ha retratado aproximadamente una trece-millonésima (demonios, no se ni cómo se escribe eso… 1/13,000,000, para los de ciencias) parte del universo. Un universo del que, incluso con esa brutal cantidad de estrellas gigantescas y sistemas solares, está formado en un 90% de vacío…

Y sigue en expansión.

Para quien guste de este tipo de cosas, aquí hay algo más de información (bendita Wikipedia), y desde la web oficial podéis descargar la imágen a resolución máxima (6200×6200).

Y como extra, para quien no lo haya visto aún o no haya tenido suficiente… Un video de youtube con una pequeña comparación de tamaños de estrellas.

08/01/2008

Hierba, ¿la nueva gasolina?

Posted in Ciencia a 12:24 am por interloper

MatrazFumetas, abstenerse. No va de esa hierba esta entrada.

Acabo de leer una interesante noticia. Se ha hecho público un estudio acerca de la viabilidad de utilizar biocombustible obtenido mediante el tratamiento de plantas perennes, como la hierba. Hasta ahora, solo había estudios sobre papel basados en investigaciones llevadas a cabo en laboratorios, con pequeñas muestras de hierba, que no ofrecían resultados aplicables a la realidad de la macroproducción. Así que, parece ser que hace ya seis años, un grupo de científicos contrató a una decena de granjeros para que, durante un quinquenio, cultivasen hierba en un total de en torno a sesenta hectáreas. Hecho esto, la transformaron en etanol, y analizaron su capacidad energética.

Lee el resto de esta entrada »