Un puente Browniano de alto rendimiento para GPU: Lecciones para aplicaciones limitadas en ancho de banda
- Detalles
- Categoría: NAG
- Visto: 4144
El algoritmo de puente Browniano es una técnica común para construir caminos muestra Brownianianos y es ampliamente utilizado en simulaciones. El algoritmo es limitado en ancho de banda de memoria: existe muy poco cálculo numérico; la mayoría del cálculo involucra mover datos alrededor de/a la memoria. Además el algoritmo es en un sentido bajo especificación ya que el orden de la construcción del puente es arbitrario. Al menos dos órdenes de construcción (bisección y orden de profundidad) son utilizados comunmente en la práctica, y esto puede tener un impacto cuando el puente es utilizado con secuencias de poca discrepancia (e.g. Sobol).
En la última release de las Rutinas de NAG para GPU, se ha incluido una nueva función de puente Browniano. La función puente tiene dos características principales:
(a) Alcanza prácticamente el rendimiento pico en una NVIDIA C2050 GPU. La implementación GPU es como mínimo 10x más rápida que una implementación OpenMP corriendo en sistemas de última generación de 12 cores y 24 cores x86-64. El algoritmo no escala en los sistemas CPU multicore debido al cuello de botella de ancho de banda de memoria.
(b) Permite órdenes de construcción de puente arbitarios y da un mapeado sencillo y transparente entre las dimensioines de baja discrepancia y puntos temporales de puente.
En este artículo describimos las técnicas de optimización utilizadas para obtener una implementación GPU de alto rendimiento. Muchos de los desafíos involucran la "sabiduría convencional" sobre la programación GPU, en particular laimportancia de la ocupación, la velocidad de la memoria compartida y el impacto de las ramas. También presentamos resultados comparativos completos entre la GPU y varias plataformas x86-64.