Saturday, March 27, 2010

Usando dSFMT

Antes de empezar el Master de Física Computacional y Aplicada sólo había usado generadores de números aleatorios escritos en Fortran.
En la asignatura Simulación con Dinámica Molecular y Monte Carlo tuve que hacer una simulación del modelo de Ising para la que necesitaba un buen generador escrito en C.
Googleando un poco acabé encontrando el Mersenne Twister desarrollado en 1997 por Makoto Matsumoto y Takuji Nishimura, que, según Wikipedia:
... provides for fast generation of very high-quality pseudorandom numbers, having been designed specifically to rectify many of the flaws found in older algorithms.
Ahora para el proyecto final del máster estoy utilizando la versión 2.1 en C del Double precision SIMD-oriented Fast Mersenne Twister (dSFMT) que es una variante del Mersenne Twister que introdujeron Mutsuo Saito y Makoto Matsumoto en el 2006. La librería se puede descargar de la página web de los inventores.

Esta variante es mucho más rápida que el MT en la mayoría de las plataformas. Además cuenta con la ventaja de que proporciona directamente numeros reales de doble precisión.

Existen implementaciones de SFMT en otros lenguajes (aún no de dSFMT) que han sido realizadas por voluntarios.

Lo último que han hecho ha sido una versión del MT para GPUs.

No comments:

Post a Comment