por
pobrecito hablador
el Lunes, 02 Junio de 2008, 20:49h
(#1049702)
Y si te las arreglas para acceder a datos que estén secuenciales, en vez de hacer hacer accesos discreciones, los tiempos de acceso de optimizan mucho. Pero esto también funciona con las CPUs.
No. En las CPUs eso no pasa. No tienen un controlador de memoria tan complejo. Una GPU cuando acede desde lo que llaman un warp a direcciones continuas (y alineadas a 16 bytes) las fusiona en una sola petición de bus. Eso es reducir 16 peticiones a 1 sola. La CPU no puede hacer eso (porque no le hace falta), pero sí es mejor acceder a direcciones alineadas que no alineadas.
Por otra parte, si se hace uso de la memoria caché de la GPU (la que en el manual de CUDA llama shared)
NO. La memoria shared es una scratchpad, caches tienen la memoria de texturas y la de constantes. Las caches son más lentas que las memorias shared y solo son de lectura. Son memorias muy diferentes y se utilizan de forma muy distinta.
Re:Se va acercando, pero todavía, no.
(Puntos:0)No. En las CPUs eso no pasa. No tienen un controlador de memoria tan complejo. Una GPU cuando acede desde lo que llaman un warp a direcciones continuas (y alineadas a 16 bytes) las fusiona en una sola petición de bus. Eso es reducir 16 peticiones a 1 sola. La CPU no puede hacer eso (porque no le hace falta), pero sí es mejor acceder a direcciones alineadas que no alineadas.
Por otra parte, si se hace uso de la memoria caché de la GPU (la que en el manual de CUDA llama shared)
NO. La memoria shared es una scratchpad, caches tienen la memoria de texturas y la de constantes. Las caches son más lentas que las memorias shared y solo son de lectura. Son memorias muy diferentes y se utilizan de forma muy distinta.