World Community Grid – Contribuyendo al desarrollo de proyectos científicos

By | September 30, 2017

Existen proyectos científicos de gran envergadura cuyo desarrollo requiere de una capacidad de computación -e inversión- enormes. Una forma de ayudar a que estos proyectos salgan adelante es recurriendo una vez más a la clásica división de tareas en vez de tener concentrados todos los cálculos y cómputos en uno o varios superordenadores. La solución pasa por tanto por crear tareas más simples que son enviadas a unidades de procesamiento independientes encargadas de realizar los cálculos correspondientes. Estas unidades devuelven los resultados de los cálculos a la unidad central, contribuyendo de esta manera individualmente al desarrollo global del proyecto.

En este aspecto, World Community Grid (WCG) es un proyecto de computación distribuida que tiene como objetivo la ayuda a diversos proyectos científicos normalmente de carácter médico, como puede ser la lucha contra el virus Zika, VIH o la detección de marcadores de cáncer. La infraestructura del proyecto es proporcionada por IBM.

De forma resumida, la manera de contribuir a proyectos de WCG es mediante un programa cliente que se encargará de procesar en nuestra máquina diversas tareas de los proyectos a los que estamos suscritos. En el caso de WCG se utilizará el agente Boinc desarrollado en la Universidad de Berkeley. Dicho agente aprovechará los ciclos de CPU que no estemos utilizando para destinarlos -donarlos- al procesamiento de tareas de nuestros proyectos.

Pasos para colaborar con proyectos de WCG

El primer paso es crear una cuenta en la web oficial, ya sea desde el enlace principal o desde el enlace de referencia de mi perfil (recibio reconocimiento simbólico -los conocidos badges o distintivos- por cada persona que entra a contribuir a algún proyecto, sin ningún beneficio económico)

Una vez registrados nos podremos suscribir a los proyectos que deseemos:

Para contribuir a estos proyectos, tendremos que instalar el cliente Boinc en nuestro sistema. En mi caso, en vez de instalar el agente Boinc en mi máquina principal lo que hice fue crear una serie de máquinas virtuales con KVM en mi Debian Stretch de sobremesa. Para virtualizar de forma sencilla en vuestro ordenador también podéis utilizar VirtualBox o VmWare Player. El sistema utilizado en esas máquinas es Ubuntu Server 16.04 LTS. A cada máquina virtual le instalé un agente Boinc. Gracias a la virtualización, asigno unos recursos de CPU, RAM, disco, etc… pudiendo levantar o parar cada nodo virtual en función de los recursos que pueda dedicar en cada momento para contribuir a los proyectos.

Para instalar el cliente Boinc en Debian o distro derivada seguiremos los siguientes pasos como root o usuario con permisos administrativos mediante sudo. En el caso de mis nodos con Ubuntu Server 16.04 LTS:

  1. Instalación del paquete boinc-client que nos servirá para gestionar el agente en modo desde nuestra terminal:
    sudo apt-get install boinc-client
    

    Si queremos un GUI del agente podemos instalar el paquete boinc-manager, aunque para un servidor con el paquete anterior es suficiente:

    sudo apt-get install boinc-manager
    
  2. Asociar el agente con nuestro perfil en WCG. El agente tendremos que lanzarlo con el usuario boinc y pasarle como argumento la URL de WCG y nuestro Account Key, que encontraremos en Settings -> My Profile:
    # Con root
    su - boinc -c 'boinccmd --project_attach http://www.worldcommunitygrid.org <Account Key>'
    # O con sudo si somos un usuario con permisos administrativos
    sudo -u boinc boinccmd --project_attach http://www.worldcommunitygrid.org <Account Key>
    

Tenéis todas instrucciones de instalación también para RHEL y derivadas en la web de WCG y también en la wiki oficial de Boinc.

Gestión del servicio y agente

Podemos gestionar el servicio mediante el comando service:

service boinc-client [ start | stop | restart | status | force-reload | schedule ]

Encontraremos los logs del agente en /var/log/boing.log. Si el agente se ha iniciado correctamente, deberíamos ver la línea "Initialization completed" tras iniciarlo:

Podemos ajustar el comportamiento del agente en cada dispositivo donde esté instalado aplicando diversos perfiles en el administrador de dispositivos de nuestra cuenta de WCG:

Por otro lado, mediante el comando boinccmd podemos hacer consultas con las que obtener información sobre las tareas que se están ejecutando, estado del agente, etc… Algunos ejemplos:

# Mostrar información del host relevante para la actividad de Boinc
sudo -u boinc boinccmd --get_host_info

# Ver el estado completo del cliente
sudo -u boinc boinccmd --get_state

# Ver tareas asignadas al cliente
sudo -u boinc boinccmd --get_tasks

Podéis ampliar información sobre el uso del cliente Boinc en su wiki oficial.

Para ver el progreso de nuestras contribuciones iremos a My Contribution en la web de WCG:

En caso de cualquier duda podéis consultar la sección de ayuda del proyecto. Es bastante completa y útil tanto para poner en marcha nuestras contribuciones como en la sección de troubleshooting en caso de que tengamos algún problema.