Recientemente he estado leyendo sobre sistemas GRID , dichos sistemas se realizan para repartir la carga de trabajo de cálculos pesados entre multitud de ordenadores que harán pequeñas partes de los cálculos para luego integrarlos en un único resultado. Muchos de éstos sistemas estan aglomerados en grandes salas de supercomputadores, y muchos otros estan basados en la colaboración de la gente no investigadora, que cede ciclos de reloj de su cpu cuando sus computadores no están ejerciendo ninguna actividad por parte de los usuarios.

Ahora bien, aquí tenemos un pequeño problema: los usuarios de a pié normalmente no pueden acceder a los recursos de los GRID, tan sólo pueden colaborar donando poténcia de cálculo... lo que me llevó a pensar sobre si sería posible crear una red P2P a modo de GRID, en la que se cediera potencia de cálculo, o se solicitara en función de las necesidades del momento.

Pongamos un ejemplo sencillo y bastante... ridículo, pero servirá: Supongamos que quiero calcular el factorial de 3.000.000, ésta operación consiste en alrededor de 3.000.000 de multiplicaciones consecutivas.

factorial(n) = n·(n-1)·(n-2)·(n-3)·...·3·2

Hay que decir que si hago el factorial de 16536 obtengo un resultado de 62577 cifras (en base 10), imaginen cuantas cifras tendría el resultado del factorial de 3.000.000 , la verdad es que muchísimas. ¿Qué se podría hacer para agilizar el cálculo? Pues multiplicar paralelamente diferentes partes del producto total. Por ejemplo, un PC multiplicaría de 2 a 40.000 , otro de 40.000 a 70.000 , otro de 70.000 a 90.000 ... y así hasta el final (no he ajustado demasiado bien los números para que todos los ordenadores tuvieran una carga semejante, pero éso es indistinto ahora mismo).

Una vez calculados los primeros resultados, se podría obtener el resultado final a partir de ellos. Como vemos, existen algunos problemas que se pueden paralelizar, es decir, resolver sus partes no de forma secuencial sinó todas a la vez (por que no dependen unas de otras). ¿De qué serviría todo ésto? Pues para aprovechar la potencia de cómputo de los ordenadores actuales, que se está desperdiciando, para acercar a todo aquel que no dispone de medios la capacidad de ejecutar cálculos importantes. Aquí sólo podemos ver dos ventajas (por que no soy muy ducho en explicar los beneficios que reporta), pero fijémonos en que todo ésto podría repercutir en un mejor rendimiento para los científicos: físicos, matemáticos, químicos, biólogos, o para estudiar los sistemas económicos mundiales...

Pero no nos olvidemos de lo siguiente... si alguien ya ha hecho un cálculo... para qué volver a hacerlo? Éste sería otro de los beneficios de la red P2P, obviamente para cálculos simples no sale a cuenta efetuar una búsqueda dentro de la red, y ni tan siquiera saldría a cuenta paralelizar (hay un pequeño coste computacional en la sincronización y el viaje de los datos a través de la red), pero para cáculos grandes, tener resultados almacenados, ya sea en memoria RAM o en el disco duro puede ser una gran ventaja. Por ejemplo, és muy posible que fuera más rápido buscar el factorial de 3.000.000 y enviarlo a través de la red (en caso de que estuviera calculado) que distribuir el cálculo entre montondes de ordenadores y esperar los resultados. (Ojo, si ésto no fuera cierto para el caso 3.000.000, tranquilos, lo sería para algun otro número no muy lejano).

Está claro que diseñar una red de tales características y que sea realmente eficiente tiene una dificultad intrínseca muy elevada (Sólo hace falta pensar en la dificultad que tendría el ordenador para determinar si un problema se puede paralelizar, y de qué forma hacerlo, lo que a su vez también consumiría potencia de cálculo) , pero no por ello dudo de que sea posible diseñarla y ponerla en práctica . Tenémos que avanzar mucho en aspectos como este, la comunidad científicotécnica tiene que conseguir el apoyo del ciudadano acercándose a él, y una vía sería permitirle acceder a resultados de sus investigaciones, incentivar su curiosidad.