Pregunta

Me miró a través de la guía de programación y las mejores prácticas guiar y mencionó que el acceso de memoria global lleva a 400-600 ciclos. No he visto mucho en los otros tipos de memoria caché como la textura, el caché constante, la memoria compartida. Registros tienen 0 latencia de la memoria.

creo caché constante es la misma que si los registros de todas las discusiones utilizan la misma dirección en la memoria caché constante. Peor de los casos no estoy tan seguro.

la memoria

compartida es el mismo que los registros siempre que no haya conflictos de banco? Si hay entonces ¿cómo se despliegan la latencia?

¿Qué pasa con la textura caché?

¿Fue útil?

Solución

La latencia a la memoria compartida / constante / textura es pequeño y depende del tipo de dispositivo que tenga. En general, sin embargo GPU están diseñados como una arquitectura de rendimiento que significa que mediante la creación de suficientes hilos de la latencia de la memoria, incluyendo la memoria global, está oculta.

La razón las guías hablan de la latencia de la memoria global es que la latencia es órdenes de magnitud mayor que la de otros recuerdos, lo que significa que es la latencia dominante para ser considerado para la optimización.

Usted ha mencionado caché constante en particular. Tiene usted toda la razón en que si todos los hilos de urdimbre dentro de un grupo (es decir de 32 hilos) acceso a la misma dirección, entonces no hay penalización, es decir, el valor se lee de la memoria caché y difusión a todos los hilos simultáneamente. Sin embargo, si subprocesos tienen acceso a diferentes direcciones entonces la necesidad de accesos serializar desde la memoria caché sólo puede proporcionar un valor a la vez. Si estás usando el CUDA Profiler, a continuación, ésta se mostrará debajo del mostrador serialización.

La memoria compartida, a diferencia de caché constante, puede proporcionar un ancho de banda mucho mayor. Echa un vistazo a la CUDA Optimización charla para más detalles y una explicación de banco conflictos y sus efectos.

Otros consejos

Para (Kepler) Tesla K20 las latencias son como sigue:

  

Memoria global: 440 relojes
  la memoria constante
  L1: 48 relojes
  L2: 120 relojes
  Memoria compartida: 48 relojes
  memoria de textura
  L1: 108 relojes
  L2: 240 relojes

¿Cómo puedo saber? Me encontré con los microbenchmarks descritos por los autores de Desmitificar la GPU a través de la microarquitectura Microbenchmarking . Ellos proporcionan resultados similares para la mayor GTX 280.

Esto se midió en un clúster Linux, el nodo de computación donde estaba corriendo los puntos de referencia no fue utilizado por cualquier otro usuario o corrió cualesquiera otros procesos. Es Linux bullx con un par de 8 Xeons núcleo y 64 GB de RAM, NVCC 6.5.12. He cambiado la sm_20 a sm_35 para compilar.

También hay una operandos costo capítulo en PTX ISA aunque no es muy útil, que sólo reitera lo que ya esperas, sin dar cifras precisas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top