Monte Carlo en modelos de spin aplicación en GPGPU
Transcript of Monte Carlo en modelos de spin aplicación en GPGPU
Monte Carlo en modelos de spinaplicación en GPGPU
Ezequiel Ferrero
PEA-GPGPU - Córdoba, Mayo 2011
PEA-GPGPU, Córdoba, Mayo 2011 1/18
Menú:
• Modelo de Ising
• Monte Carlo, Algoritmo de Metropolis
• Esquema de paralelización (checkerboard)
• RNGs en GPUs
• Implementaciones del checkerboard (1,2,3)
• Extensiones a 3D y a otros problemas
• Conclusiones
Modelo de Ising
Una red (regular) con un spin en cada sitio
Los spins interactúan entre ellos y eventualmente con campos magnéticos externos.
…
…
La variable de spin si (i=1,..,N) toma valores +1 (spin up ↑) o -1 (spin down ↓)
Denominamos configuración del sistema a un dado arreglo {si} de las variables.
donde <ij> indica “pares de primeros vecinos”
PEA-GPGPU, Córdoba, Mayo 2011
La energía total del sistema de spins es el Hamiltoniano:
Si J>0 la interacción se denomina ferromagnética(favorece configuraciones de spins alineados)
Si J<0 la interacción es antiferromagnética(favorece configuraciones de spins anti-alineados)
2/18
Modelo de Ising (cont.)
paramagneto(desordenado)
ferromagneto(ordenado) … …
PEA-GPGPU, Córdoba, Mayo 2011
Tc
T
“magnetización por spin”
donde con
Estados de equilibrio mínimo de
3/18
calcular esto de manera exacta es por lo general imposible
métodos aproximados o numéricos
Ecuación maestra
PEA-GPGPU, Córdoba, Mayo 2011
Monte Carlo
Proceso estocástico markoviano
Si pedimos que que
condición de balance global
ó (más fuerte) condición de balance detallado
Necesidad de realizar un muestreo pesado en el espacio de las configuraciones
Sea la probabilidad asociada con el estado al tiempo t.
Consideremos la probabilidad de transición del estado al estado
es decir,
4/18
debe ocurrir
PEA-GPGPU, Córdoba, Mayo 2011
Monte Carlo (cont.)
Metropolis Glauber
balance detallado: distribución de Boltzmann:
Algoritmo de Metropolis
for (i=0; i<N; i++){choose si � backupcalculate H_beforesi = -si (“flip”)calculate H_afterif (∆H = H_after-H_before =< 0){accept the move} else {pick a random number raccept the move if r < exp(-∆H/kBT)}
}
1) partimos de una configuración x
2) eligimos al azar una nueva configuración x’
(que difiere de x en el estado de un spin flip)
3) calculamos ∆H
4) si ∆H ≤ 0 , aceptamos la nueva configuarción
5) si ∆H > 0 la aceptamos con probabilidad exp(-∆H/kBT)
6) repitimos desde 2)
N repeticiones = 1 MCS
paso de Monte Carlo (MCS)
5/18
Estrategia de paralelización
PEA-GPGPU, Córdoba, Mayo 2011
(interacción a primeros vecinos)
Dos subredes de spins no interactuantes: blancas y negras
Red cuadrada de N=LxL spins, interacciones a primeros vecinos y c.c. periódicas
(Nota: Actualización “not-random”, NO cumple balance detallado pero SÍ balance global)
Esquema del “tablero de ajedrez”
Dado un spin en un casillero negro, todos sus vecinos estarán en casilleros blancos, y viceversa
En nuestro kernel “update” en CUDA reemplazaremos las N elecciones de spin al azar por algo como:
6/18
L
L
Veremos cómo aplicamos esta estrategia de paralelización GPUs, pero antes...RNGs
Generadores de números (pseudo)aleatorios
PEA-GPGPU, Córdoba, Mayo 2011
Estado del RNG
-Período del RNG
-Calidad del RNGOutput
Semilla
11-19 int / 624 int2 intestado: 1 int
2607 / 219937≤264 (depende de a)período: 232 (b=32)
Mersenne TwisterMultiply-With-CarryLinear Congruential Generator
MTMWCLCG
Además nos interesan:
7/18
-Velocidad del RNG(el “random number” propiamente dicho)
PEA-GPGPU, Córdoba, Mayo 2011
Implementación de RNGs en paralelo
8/18
Tomar distintas partes de una misma secuencia global (opción standard)
Generar secuencias independientes con cada hilo: se necesitan distintos (conjuntos de) multiplicadores
t 2t
splitting
leapfrogging
p.ej. (LCG):
Opción 1
Opción 2
~65000~1500001 o unos pocos
MTMWCLCG
número de goodmults
PEA-GPGPU, Córdoba, Mayo 2011 9/18
M. Weigel arXiv:1101.1427v1 (2011)
RNGs para modelos de spin en GPUs
Es muy rápido y de estado muy pequeño, pero mete correlaciones por su corto período. (e.g. en un Ising de 4096x4096, utilizamos todos los RN en menos de 256 MCS).
LCG
Opciones: -LCG-64bits: un poco más lento, pero mejora el período-Inicializar at random (disminuye el efecto de solapamiento de las secuencias)
MWC Aparece como una muy buena opción. Rápido y de gran período, estado pequeño. Limitación razonable en la cantidad de goodmults.
MT En principio, desrecomendado para GPGPU. Es un generador de muy buena calidad y período gigante, pero no es tan rápido y su estado, al parecer, no entra memoria on-chip.
Otras Opciones: Lagged Fibonacci, XorShift, KISS, etc....
Ising: 1024x1024, β=0.4
Implementaciones del checkerboard: Ejemplo 1
T. Preis, P. Virnau, W. Paul, J.J. SchneiderJohannes Gutenberg University of Mainz, Germany
paralelización para un sistema de 16x16 spins
Características: - primer trabajo en IsingGPGPU “JCP most read article in 2009”.- LCG-32 inicializado at random.- todos los updates se hacen en memoria global.- transfieren array de semillas a shared antes de cada kernel.- limitación de tamaño L ≤ 1024 para la GT200, (L ≤ 2048 para Fermi).
Aceleración máxima: 60x (con GTX 280)
(n=L)
PEA-GPGPU, Córdoba, Mayo 2011 10/18
Journal of Computational Physics 228, 4468 (2009)
PerformanceImplementación Ising 2D:
arXiv:1006.3865v1, Computer Physics Communications, in press (2010)
efectos (indeseados) de la técnica de multi-hit
arXiv:1101.1427v1 (2011)
BxB (4x4) bloques (asignado c/u a un multiprocesador)
TxT (8x8) hilos por bloque
PEA-GPGPU, Córdoba, Mayo 2011 11/18
Implementaciones del checkerboard: Ejemplo 2
M. WeigelJohannes Gutenberg University of Mainz, Germany
Implementación Ising 2D: “double checkerboard”
Características: - aprovecha la memoria compartida- LCG-32 inicializado at random, critica su conveniencia en la práctica.- vector con los pesos de Boltzmann a memoria de textura.- genera RN aún cuando no se necesitan, para evitar divergencias de hilos.- para amortizar la carga a shared de las baldosas implementa una técnicade multi-hit, en donde se repite k veces la actualización de las mismasbaldosas antes de switchear. (aumenta tiempo de autocorrelación, performance física óptima para k~10)
T = L/B
L
T
Tiempo de spin flip: tiempo promedio de flipeo de un spin, medido con el reloj de pared.
PEA-GPGPU, Córdoba, Mayo 2011 12/18
Implementaciones del checkerboard: Ejemplo 2 (cont.)
Performance
Tesla C1060, k=100
TILE óptimo para sistemas grandes: T=16
M. Weigel arXiv:1006.3865v1, Computer Physics Communications, in press (2010)
M. Weigel arXiv:1101.1427v1 (2011)
Aceleración máxima: 30x/105x para k=1/k=100 (en Tesla C1060)~70x/235x (en GTX 480)
(idem para GTX 480)
Para L>4096, tsf = 0.27ns/0.076ns para k=1/k=100 (en Tesla C1060)tsf = 0.034ns para k=100 en Fermi (GTX 480, 2.3 veces más rápida)
(desaceleración de un factor 1.73 usando LCG-64 y de 2.63 usando Fibonacci)
(OJO: tCPU(Weigel) = tCPU(Preis) / 10 )
EEF, J. De Francesco, N. Wolovick, S. CannasGPGPU Computing Group, FaMAF, UNC
Modelo de Potts de q estados(generalización del Ising)
PEA-GPGPU, Córdoba, Mayo 2011 13/18
arXiv:1101.0876v1 (2011) , submitted Computer Physics Communications
Implementaciones del checkerboard: Ejemplo 3
Implementación 2D: FRAMES
Características: - implementa MWC con 512x512/2 generadores independientes (cota impuesta por la cantidad de goodmults).- divide al sistema en frames de 512x512.- comprime stencil bidimensional (blacks,whites) logrando localidad y ahorrando transferencia de memoria.- copia estado de los RNGs a registros.- no utiliza tablita de pesos de Boltzmann, recalcula.- L máximo sólamente limitado por la memoria (global) disponible.- implementa sumas mariposa para cálculos de magnetización y energía.
PEA-GPGPU, Córdoba, Mayo 2011 14/18
Implementaciones del checkerboard: Ejemplo 3
Tiempos de spin flip:
Performance
Aceleración máxima:
GTX 280: entre 0.48ns y 0.54ns (entre 47x y 42x)GTX 470: entre 0.21ns y 0.30ns (entre 108x y 76x)GTX 480: entre 0.18ns y 0.24ns (entre 126x y 95x)
GTX 480 (con CC2.0): 0.147ns (155x) para L=32768
-Un framing de 256x256 penaliza un 25% y framing de 1024x1024 acelera un 2%.-Eliminar los branches divergentes no mejora la performance (el shceduler ya estáescondiendo esas cosas).
Notas:
“q-state Potts model metastability study using optimized GPU-based Monte Carlo algorithms”. arXiv:1101.0876v1. Quizás sea la primera aplicación práctica de GPGPU en modelos de spin clásicos.
¿Para qué queríamos todo esto?
PEA-GPGPU, Córdoba, Mayo 2011
Extensiones a 3D
Preis et al.
Arreglo de spins en una red cúbica regular
15/18
N=LxLxL spins
6 “primeros vecinos”
L=<256 por límites de memoria
Aceleración: 35x (GTX 280)
JCP 228, 4468 (2009)
Weigel
-Mismo esquema: double checkerboard-TILE limitado a T ≤ 8 por max_threads
arXiv:1101.1427v1 (2011)
Performance
Tesla C1060: 0.13ns (k=100) � 110xGTX 480: 0.067ns (k=100) � 210x
CPU: 0.14ns (más que 6/4 del caso 2D)
PEA-GPGPU, Córdoba, Mayo 2011
- Interacciones a 2dos o 3ros vecinos
Extensiones a otros sistemas
16/18
La estrategia del FRAMES seguiría siendo útil
- Interacciones de largo alcance
Lo más que se puede hacer es paralelizar las sumas en el cálculo de campos locales
- Para interacciones Jij , tipo spin glass, la extensión es directa, pero es menor el speed-up
- Para spins continuos, tipo Heisenberg, el speed-up es mayor
PEA-GPGPU, Córdoba, Mayo 2011
CONCLUSIONES
• Comenzar a usar GPUs para simulaciones de Monte Carlo intensivas en sistemas de spins con interacciones de corto alcance no es una opción, es un must.
•Las características del RNG a utilizar y su conveniencia, deben ser chequeadas en cada caso. Usar MWC puede ser un buen comienzo en general.
•Si usan LCG: NO splitting, NO leapfrogging, random seeding.
•RNGs de gran período en general vienen acompañados de una relativa gran demanda de memoria. Almacenar el estado de cada thread en global es ineficiente.
•Existen varios esquemas de paralelización posibles: el double chequerboard con multi-hit que aprovecha shared aporta los mejores tiempos de spin flip; el esquema de frames según la cantidad de RNGs independientes parece ser más fácil de extender a otros problemas.
•Limitados a spins Ising, técnicas de multi-spin coding (representar varios spins en una misma palabra) proveen una aceleración adicional.
17/18
PEA-GPGPU, Córdoba, Mayo 2011 18/18
Referencias:
• T. Preis, P. Virnau, W. Paul, J.J. Schneider, Journal of Computational Physics 228, 4468 (2009)
• M. Weigel, arXiv:1006.3865v1, to appear in CPC (2010)
• B. Block, P. Virnau, T. Preis, Computer Physics Communications 181, 1549 (2010)
• EEF, J. De Francesco, N. Wolovick, S. Cannas, arXiv:1101.0876v1 (2011)
• M. Weigel arXiv:1101.1427v1 (2011)
• M. Weigel, T. Yavors’kii Physics Procedia 00, 1 (2011)
•S. Hissoiny, P. Després, B. Ozell, arXiv:1101.1846v1 (2011)
• T. Preis, Eur. Phys. J. Special Topics 194, March II 2011 (2011)