2010-03-04 25 views
5

La guía de programación CUDA afirma queSignificado de ancho de banda en CUDA y por qué es importante

"Ancho de banda es uno de los factores de compuerta más importantes para el rendimiento. Casi todos los cambios en el código se deben hacer en el contexto de cómo afectan el ancho de banda ".

Continúa para calcular el ancho de banda teórico que es del orden de cientos de gigabytes por segundo. No entiendo por qué la cantidad de bytes que uno puede leer/escribir en la memoria global es un reflejo de cuán optimizado está el kernel.

Si tengo un kernel que hace cálculos intensivos en datos almacenados en memoria compartida y/o registros, con solo una lectura al principio y escriba al final desde y hacia la memoria global, seguramente el ancho de banda efectivo será pequeño, mientras que el kernel mismo puede ser muy eficiente.

¿Podría alguien explicar el ancho de banda en este contexto?

Gracias

Respuesta

4

la mayoría de los núcleos computacionales no triviales, en CPU y GPU terrestre, con límite de memoria. La GPU tiene una alta intensidad de cómputo y rendimiento, pero el acceso a la memoria principal es muy lento y tiene una alta latencia, pocos cientos de ciclos por lectura/almacenamiento en comparación con cuatro ciclos para las operaciones aritméticas de muchos.

Parece que su núcleo está obligado a computar, entonces su suerte. Sin embargo, debe tener cuidado con los conflictos bancarios de memoria compartida, que pueden serializar partes del código inesperadamente.

0

Normalmente núcleos son bastante pequeños y simples y realizan la misma operación en una gran cantidad de datos. Es posible que tenga un grupo de núcleos que invoque en secuencia para realizar una operación más compleja (piénselo como una canalización de procesamiento). Obviamente, el rendimiento de su canal dependerá tanto de la eficiencia de sus kernels como de si está limitado por el ancho de banda de memoria de cualquier manera.

1

La mayoría de los núcleos están limitados a la memoria por lo que es fundamental maximizar el rendimiento de la memoria. Si tienes la suerte de tener un núcleo consolidado de cómputo, entonces la optimización para el cálculo es generalmente más fácil. Es necesario que vigile la divergencia y aún así debe asegurarse de tener suficientes hilos para ocultar la latencia de la memoria.

Consulte la presentación Advanced CUDA C para obtener más información, que incluye algunos consejos sobre cómo comparar el rendimiento realizado con el rendimiento teórico. La Guía de buenas prácticas de CUDA también tiene buena información, está disponible como parte del kit de herramientas de CUDA (descargue desde el NVIDIA site).

Cuestiones relacionadas