LOS GENERADORES DE NÚMEROS ALEATORIOS UNIFORMES PARA SUPERCOMPUTADORAS.

Richard P. Brent.
Los generadores de número de pseudo-azar en moderno el vector y el supercomputadoras paralelo, considere una clase de generadores de número de azar que tienen las propiedades estadísticas buenas y puede llevarse a cabo el e_ciently en los procesadores del vector y las máquinas paralelas, se describen los generadores, y una aplicación en un Fujitsu VP 2200/10 procesador del vector se discute.

I. INTRODUCCIÓN.


Los números del pseudo-aleatorios se han usado en la velocidad creciente de procesadores del vector y paralelo a la calidad de generadores de número de azar disponible en las bibliotecas del subprograma en un supercomputadora 108 números del azar podrían usar el resultado. Correlaciones pequeñas u otras deficiencias en el generador de número de azar podría llevar fácilmente a el cómputo.

Las aplicaciones requieren los números del azar con Poisson. . .) el generador de número de azar uniforme bueno vea para la generación de números uniformemente distribuidos.

Normalmente nosotros estamos interesados con real numera el un considere los enteros Un en algún rango 0 _< Un <m.

En este caso nosotros requerimos el un = Un/m para ser (aproximadamente) uniformemente distribuido.
Los números del pseudo-azar generaron en una forma determinista sea de verdad el azar. la manera indistinguible de un de verdad la sucesión del azar.

Pruebas estadísticas que son pertinente al problema los generadores de número de azar en las bibliotecas del subprograma deba pasar varios pruebas estadísticas severas Un u0 de la sucesión, el u1, • • • que depende de un finito, el ficiently n grande. el periodo.

Para un número del pseudo-azar bueno el generador y su aplicación en un subprograma la biblioteca, la Uniformidad de o. La sucesión de números del azar deba pasar las pruebas estadísticas para la uniformidad es fácil lograr. La mayoría de los generadores en común Subsequences de la sucesión llena el u1 del neighbours impar, el u3, • • •. Así, la sucesión de pares (el u2n, u2n+1) debe ser uniformemente distribuido honradamente en la unidad. Más generalmente, se usan a menudo los números del azar
para probar un espacio d-dimensional, para que la sucesión de d-tuplas (el udn, el udn+d+1). . . o el Periodo Largo. pueda usar 1012 números del azar. En semejante caso el periodo p debe exceder 1012.

Para muchos generadores hay correlaciones fuertes Así, en la práctica el número de números del azar que quieren en la vida la misma sucesión de números del azar normalmente fácil si la sucesión se reinicia de si la sucesión será reiniciada de algunos otro valor, diga el um para un entero grande m, asociado con el número del azar el generador.

La Portabilidad de o. exactamente la misma sucesión de azar los números en dos el di_erent mecaniza, posiblemente con el wordlengths del di_erent. sea caro simular un wordlength largo en una máquina con un wordlength corto, pero la conversación debe ser fácil una máquina con el ciency.


Disjoint Subsequences. Si una simulación es a se corra en una máquina con varios procesadores, o si una simulación grande será realizada en varias máquinas independientes, él números del azar usados por cada procesador son desencaje. con 4 procesadores. Un procesador pudo el método de um generador para m grande sin generando todo los valores del intermedio el e_ciently del método para que sólo para generar cada número del azar, todo el vector / las capacidades paralelas de la máquina son las llamadas son mínimas. la rutina de número de azar debe devolver una serie de (opcionalmente) varios números en un momento, las clases de generadores de número de azar, y considera hasta qué punto ellos pasan o faltan nuestros requisitos.

Las máquinas, y en Sección 6 nosotros discutimos el específico los requisitos para varias clases de máquinas Los comentarios más detallados en una aplicación del vectorized se da en Sección 7.


II. GENERADORES DEL CONGRUENCIAL LINEAL.


Se introdujeron los generadores del congruential lineales la clase más popular de generadores. Un entero la sucesión (Un) se define por un valor inicial el wordlength. k pedazos ciclo con un periodo a lo sumo 2k. los pedazos se comportan al azar, para que la sucesión normalizada el un = Un/m pueda ser utilizable como una fuente de números del pseudo-azar Para evitar el problema de nonrandomness de loworder los pedazos, el módulo m a veces es escogido para ser un primero número. si c = 0. el cero no ocurre en la sucesión del multiplicador un porque los generadores del congruential lineales Marsaglia [19] la clase de generadores del congruential lineales. Si el d-tuples (el udn, el udn+1. . . , udn+d-1) de números normalizados cubique, entonces estos puntos quedan en un número pequeño Nd un de verdad la sucesión del azar con el error del discretization los fragmentos binarios. Estos puntos quedan en 2w hyperplanes el generador del congruential con el periodo p _ 2w lata Aunque las muestras del resultado de Marsaglia que todo lineal los generadores del congruential realizan pobremente en entre los tales generadores más buenos y generadores con los multiplicadores pobremente escogidos. escogido para que la multiplicación pudiera realizarse por un número pequeño de cambios y agrega. (un - 3)2 = 0 mod m tuples generados por RANDU quedan en sólo 16 aviones el cubo de la unidad.

III. GENERADORES DE FIBONACCI GENERALIZADOS.

Los números de Fibonacci satisfacen la repetición Fn = Fn-1 + Fn-2.
no de una sucesión satisfactoria de pseudoaleatoria los números porque la desigualdad probabilidad 1/6 para una sucesión del azar ([16], La repetición de Fibonacci para obtener "generalizó Fibonacci" o "se retrasó Fibonacci" el número del azar los generadores [12, 16, 30]. Marsaglia [20] considera los generadores F(r, s, _) qué satisface la suma (el mod m), substracción (el mod m), multiplicación (el mod m) o "exclusivo o" (el mod m = 2w).

También se llaman generadores que usan "registro de cambio" generadores o "Tausworthe" los generadores Si es + o - (el mod m) entonces una teoría de generalizó Los generadores de Fibonacci pueden ser basados adelante el la función generadora 1Xn=0 ,Ur-1. Para el ejemplo, si m = 2 y los valores iniciales no son todos ponen a cero, entonces la sucesión tiene el periodo máximo 2r-1 si y sólo si Q(x) es un polinomio primitivo (mod 2). las Mesas de tales polinomios primitivos está disponible [17, 32]. simple si r es el exponente de un Mersenne imprime x = el mod del x2r (Q(x), 2) (mod 2), involucrando un total de sólo O(r2) los funcionamientos [33]. la multiplicación. Si m = 2w y los retrasos r y s son escogidos correctamente, es posible obtener el periodo p = 8 <: 2r - 1 si _ = _, 2w-1(2r - 1) si = el mod de ± m, 2w-3(2r - 1) si = el mod de m.


Los valores iniciales deben ser impares para _ = _, no todos, de los generadores de Fibonacci generalizados encima de los generadores del congruential lineales - el periodo puede se haga muy grande escogiendo r grande. los números de los tales generadores con _ = ±, porque Un y di_er de Un+p/2k en a lo sumo pedazos de k Marsaglia [20] los informes los resultados de estadístico las pruebas en los generadores F(17, 5, _), F(31, 13, _)

Si aceptable si r y s son los su_ciently grande (no necesariamente tan grande como los generadores de _).
Nuestro argumento contra la repetición de Fibonacci simple también aplica al Fibonacci generalizado .
Una prueba estadística el generador. el límite prescrito. una prueba un "Generalizó el Triple" la prueba. r grande.

Los generadores de Fibonacci con _ = el mod de _ m son aceptables.
de otra manera que "combinación" los generadores a pase todas sus pruebas. el ficult para llevar a cabo la multiplicación (el mod m) que el addition/subtraction (el mod m) debido al requisito Al probar Fibonacci generalizado los generadores con _ = + Marsaglia usó r pequeño; los tales generadores deben ser aceptables para el su_ - el ciently r grande.


La actuación de generadores de Fibonacci generalizados en los Espacios del Cumpleaños y el Triple Generalizado las pruebas. El más simple es incluir el entero impar pequeño los multiplicadores _ y _ en el Fibonacci generalizado si m = 2w, con tal de que el xr trinomio + el xs + 1 es primitivo (mod 2) y U0. . . los Espacios del Cumpleaños y el Triple Generalizado las pruebas pero casi es como el ayuno y fácil llevar a cabo el término en la repetición de Fibonacci generalizada, es decir Nosotros llamamos los tales generadores "el 4-término generalizó Fibonacci" los generadores en contraste con el usual 3 - los término generadores. Para una discusión de generadores del 4-término,



IV. COMENTARIOS SOBRE ALGÚN USO DE GENERADORES.


Nosotros hemos discutido RANDU en el subalterno-sección en los generadores del congruential lineales, y mostrado por qué los generadores similares no serán recomendados.

El su_er de los generadores de tener un periodo p = 231 un generador en el Fujitsu VP 2200/10 a ANU. El generador con el representable del módulo como un 32 - mordido el entero. Los generadores del congruential lineales con el módulo más grande (por ejemplo 264) es los di_cult para llevar a cabo el e_ciently en muchas máquinas porque ellos requiera la aritmética de entero de múltiple-precisión.

Las propiedades de generadores del congruential lineales para aumentar el periodo. Shu_ing no mejora la actuación en algunas pruebas estadísticas, por ejemplo el La prueba de Espacios de cumpleaños. para usarlo en los procesadores del vector.

Estos vectorores de los funcionamientos, pero la combinación un solo generador, y los resultados no se garantizan para pasar las pruebas todo estadísticas (vea los comentarios en el "Excelente-Duper" el generador en la próxima sección).

Algunos generadores, sobre todo aquéllos basaron adelante el método del congruential lineal con los multiplicadores un poder de dos, el su_er de la resolución pobre, porque ellos devuelven sólo solo-precisión (el 32-pedazo) los números reales. Desde que más trabajo serio en el vector los procesadores y ayuno las máquinas paralelas usan el doubleprecision (El 64-pedazo) los números reales, es deseable para una rutina de la biblioteca para devolver los números de doble-precisión (con el bajo-orden 32 pedazos no todo el cero). Si N se usan los números del azar en una simulación, hay los generadores para suplantar el congruential lineal los generadores. mod 2w, con tal de que los retrasos son grandes. Anderson el e_ciently en un procesador del vector.


Generadores de número de azar (RAND/VP).


Los generadores se adaptan del generador Marsaglia [22] ahora prefiere sus generadores de VLP (describió debajo).
M odificado para generar varios arroyos de azar los números en paralelo" [13]. que la repetición singularizar real numera el un. bien para usar un solo generador de Fibonacci generalizado para dar el periodo máximo. el arroyo de números del azar.

Una nueva clase de generadores, termed "mismo el periodo largo" (VLP) los generadores. a los generadores de Fibonacci generalizados pero lata Los generadores de Fibonacci pueden "sólo" logre el periodo los generadores casi realizan mal como en el Cumpleaños Los espacios prueban como el Fibonacci generalizado generadores que usan el addition/subtraction. Quizás esto es por qué Marsaglia recomienda combinar ellos con una clase del di_erent de generador [22]. En cualquier evento, los generadores de VLP requieren el cómputo la dependencia causa un problema en los procesadores del vector.


E l paso de propagación de carry/borrow, el número de funcionamientos, requerido en la vuelta interna es 2-3 veces mayor que para los generadores de Fibonacci generalizados.


V. VECTOR SUGERIDO Y LOS ALGORITMOS PARALELOS.

Los generadores de número de azar son convenientes para la aplicación en los procesadores del vector y/o paralelo las máquinas.
Los generadores del congruential lineales de la forma puede llevarse a cabo el e_ciently en una máquina paralela con procesadores de k o un procesador del vector con el vector registra de longitud k, mientras usando las relaciones un - 1 mod de _c m.


Funcionamientos que usan la representación binaria de A pesar de la posibilidad de aplicación del e_cient, no se recomiendan los generadores del congruential lineales la distribución (para d> 1) y los periodo pequeños. Incluso cuando el multiplicador un se escoge pasar el Espectral Pruebe, el ak del multiplicador que es el e_ectively algunos valores de k).


Las propiedades estadísticas de generadores pueden ser los generadores, usando ± (el mod m), _, o shu_ing. Si los generadores con el relativamente primero p1 de los periodo y se combinan los p2, el periodo del generador combinado No se recomiendan los generadores de combinación más lentamente que los generadores del componente. generador de combinación que combina un lineal el generador del congruential y un generador de registro de cambio, faltas que los MTUPLE prueban en el substrings de bajo pida los pedazos [20].


Pueden llevarse a cabo los generadores de Fibonacci generalizados el e_ciently en las máquinas del vector/parallel [1]. los Tausworthe/shift registran los generadores los retrasos moderados [20]. las pruebas normales si r es el su_ciently grande, pero para cualquier r fijo les faltaría probablemente un su_ciently la prueba severa. para una rutina de la biblioteca.


Los generadores de Fibonacci generalizados F(r, s, _) basado en la multiplicación (mod 2w) el paso todos de . Las pruebas de Marsaglia [20] (w no se especifica, pero probablemente los generadores son que ellos son los di_cult para llevar a cabo sin la multiplicación de doble-precisión si w excede medio la palabra-longitud. la multiplicación de enteros del 56-pedazo mod 256. Una biblioteca un "azar" número cuyos pedazos del bajo-orden son todos el cero es inaceptable.


Los generadores de Fibonacci generalizados F(r, s,±) basado en suma o substracción (mod 2w) es bien-preparado al vector y las máquinas paralelas. El el retraso r debe escogerse grande bastante que el La prueba de Espacios de cumpleaños se pasa. para escoger un r grande para dar las longitudes del vector mucho tiempo y un periodo largo. el xr+xs+1 es primitivo (mod 2) para que el periodo Un rasgo bueno de los generadores de Fibonacci generalizados en la aritmética del flotante-punto sin la conversión del entero para flotante-apuntar los números de full)- precisión. la máquina con la aritmética de entero de 32-pedazo y 56-pedazo los fragmentos del flotante-punto, es posible generar el azar numera con todos los 56 nonzero de los pedazos y azar.


La idea es usar los números del flotante-punto en las máquinas con el flotante-punto rápido el hardware puede ser bien usar el entero del hardware de números (o vectores de números). un 4-término (en lugar del 3-término usual) la repetición, los multiplicadores del entero impares _, _> 1 (vea anteriormente). Nuestro la aplicación en el Fujitsu VP 2200 indica La repetición del 4-término, y 23 por ciento para el 3-término la repetición con los multiplicadores del non-unidad.



Archivo HTML [ Descargar archivo | Guardar en Yahoo! Maletín ]


Tripod provisto por Cable & Wireless
VI. CONSIDERACIONES DE ARQUITECTURA.

El solo procesador las máquinas de serie, por ejemplo Sparcstation, IBM PC.

Los procesadores del vector, por ejemplo Fujitsu la serie de VP, Cray.

El local-memoria los multiprocesador de MIMD, por ejemplo El compartido-memoria los multiprocesador de SIMD, por ejemplo La Máquina de conexión (CENTÍMETRO 2). En el solo-procesador "Von Neumann" de serie las máquinas los valores más grandes de r cedidos Mesa

La aplicación en las máquinas del solo-procesador aplica, porque cada procesador es semejante máquina. (Si cada procesador tiene una unidad del vector y su_cient en los procesadores del vector aplique.) Nuestra inicialización el esquema (Sección 8) asegura ese azar del di_erent se generarán las sucesiones en cada procesador proporcionado cada procesador usa una semilla del di_erent. el procesador ID a la semilla usuario proporcionada de 1024 procesadores (también llamó "células"), la semilla en el cid del procesador los 1024*useed podrían estar + el cid, asuma aquí que (0 <el useed <221). En un compartido-memoria el multiprocesador de SIMD con un número grande (diga P) de procesadores relativamente lentos, genere un segmento independiente de la sucesión (el un). las palabras de Pr. genere un solo segmento de la sucesión (el un), con cada procesador que genera cada 256-th numere en la sucesión. Este esquema puede llevarse a cabo las palabras. como emular un solo procesador del vector, y operando en los vectores de longitud 256.

VII. VECTORIZACIÓN.


La aplicación de un generador de Fibonacci generalizado en un procesador del vector, usando nuestra experiencia llevando a cabo semejante generador en el Fujitsu VP 2200.

La aplicación usual de Fibonacci generalizado los generadores involucran un bu_er del anillo de longitud la revisión [1]. copiando. en el número de números del azar que las vueltas de la aplicación deben el vectorize, la repetición pueda ser los vectorized sin el di_culty en una vuelta Para la actuación del vector buena, el número positivo (diga N) de números del azar, y usado en el TRABAJO. La copia previamente-generó los números del TRABAJO a BUF. Genere los lotes de r numera directamente en el TRABAJO como requerido. Cada uno las vueltas (s generador y r - s numera).

El "mod 1" el funcionamiento en Fortran o C. SI (X(N) .GE. En el VP 2200 evita la necesidad por los funcionamientos enmascarados.

También es más general, porque si aplica aun cuando X(N) _ 2 (qué puede ser el caso si _> 1 o _> 1), la Nota que ambos modificación de necesidad de formas si _ <0 o _ <0 - en este caso nosotros tendríamos a SI (X(N) .LT. las _ Condiciones Cañerías Doblan Ciclos _> 1 3 1 normal 3.32 _> 1 3 2 normal 2.71 _> 1 3 2 desenrollaron 2.71 _ = 1 3 2 normal 2.31 _ = 1 3 2 desenrollaron 2.21 Mesa 2: Cycles/number en el VP 2200/10 si (_, _) = (1,-1) o (-1, 1).

Perdiendo cualquier momento, pero sólo con una actuación significante una aplicación sincera pierde sólo 4 pedazos la aritmética, la rutina de la inicialización debe una máquina con un fragmento del 56-pedazo y |_|+|_ | _ 16, ponga por la rutina de la inicialización. la memoria y los registros del vector. carga o guarda uno la palabra del 64-pedazo por ciclo. En la Mesa 2, "ciclos" son el número de ciclos del reloj por el número del azar generó, mientras usando grande se retrasa r y ambos load/store conduce por tuberías (por otra parte el bandwidth de memoria si _ = _ = 1 que si _ = 1, _> 1 porque uno la instrucción de la multiplicación es "libre", usando un vector El vuelta desenrollando ahorra otro 0.1 ciclos si _ = 1 pero no si _> 1, _> 1.
A 2.21 ciclos por el número nosotros podemos generar 141 millones de números por segundo en el Fujitsu
VP 2200/10. la aplicación del vectorized del congruential lineal el método (con inaceptablemente periodo 231 pequeño) y 34 veces más rápidamente que un método que el shu_es el rendimiento de un generador del congruential lineal pero no hace el vectorize.
El número de ciclos por el número para los 4 - el método de repetición de término es aproximadamente 0.6 más de para el método de repetición de 3-término correspondiente.
sin el di_culty.


VIII. INICIALIZACIÓN.


Para el 3-término y " el 4-término generalizó la inicialización de U0. . . ,Ur-1. un conguential lineal el generador. la confusión, la pérdida de portabilidad, y posible estadístico los problemas. cualquier otro generador. hecho, y cómo los requisitos cedidos Sección 1 la semilla del entero, y la inicialización quiere garantice que cualquier dos semilla del di_erent dará los propósitos. En una máquina paralela, procesadores del di_erent sólo necesite que asegura que ellos usan el di_erent las semillas. los pedazos satisfacen una repetición mod 2, y por el polinomio la sucesión de pedazos significantes. Si el significante los pedazos en dos di_er del subsequences, entonces porque el di_er. Nuestra aplicación del método del 3-término la sucesión, para que el subsequences de 260> 1018 elementos se garantiza ser el di_erent tan largo como (En la práctica, nosotros trabajamos con el un = Un/2w, pero esto no hace ningún di_erence esencial.) El xn de los pedazos menor-significante = Un mod 2 satisfaga la repetición el xn = el xn-r + el xn-s mod 2. (2) , el xr-1 es el nonzero.
De la teoría [5, 11] de repeticiones lineales
(mod 2), si
el tn =
el r-1 Xj=0
el xn =
el an,jxj mod 2.


Suponga nosotros queremos a "salto" a xn dónde n es grande, la sucesión. Nosotros podemos computar el mod del tn (2,Q(t)) el cients siempre se realiza mod 2, y a cada uno ande un mod de la reducción Q(t) se realiza. Porque el xn+1. . . , xn+r-1. más simple, compute el xr. . . , x2r-2 de la repetición el xn+k = el an,jxj+k mod 2 se requerirán los números del azar consecutivos, nosotros la toma n = 260seed y genera el xn. . . satisfaciendo la repetición (1). Porque los últimos momentos el di_er (para por lo menos 260 condiciones) de aquéllos obtenidos de cualquier otra semilla, el "desencaje el subsequence" el requisito de Sección 1 está satisfecho.


Un/2w). Nosotros necesitamos generar O(rw) los números, usando, los lotes de números de r (diga el v0. . . genere y deseche 10 más lotes de números de r.


IX. CONCLUSIÓN.


Los generadores de número de pseudo-azar en moderno el vector y las máquinas paralelas, y consideró las clases de métodos, incluyendo el congruential lineal, y generalizó Fibonacci. eso generalizó los generadores de Fibonacci (con un la opción conveniente de parámetros) tiene bueno estadístico las propiedades y puede llevarse a cabo el e_ciently en los procesadores del vector y las máquinas paralelas. Un el esquema bueno para la inicialización de estos generadores se ha perfilado, y los resultados de una aplicación en un Fujitsu VP 2200/10 procesador del vector Nuestra aplicación la independencia, el periodo largo, el repeatability, la portabilidad, desencaje el subsequences para el di_erent sembra, tiempo en el VP 2200/10 para el desarrollo y probando de nuestra aplicación. Esto el trabajo se apoyó en parte por una investigación de Fujitsu-ANU.


BIBLIOGRAFÍA.

Uniform Random Number Generators for Vector and Paralel Computers, Richard P. Brent, Computers Sciences Laboratory.Australia National University