cuda - activar - gpu nvidia
¿Cuál es la diferencia entre el núcleo de CUDA y el núcleo de la CPU? (4)
Trabajé un poco con CUDA, y mucho con la CPU, y estoy tratando de entender cuál es la diferencia entre los dos. Mi procesador I5 tiene 4 núcleos y cuesta $ 200 y mi NVidia 660 tiene 960 núcleos y cuesta aproximadamente lo mismo.
Me sentiría realmente feliz si alguien pudiera explicar cuáles son las diferencias clave entre la arquitectura de las dos unidades de procesamiento en términos de ventajas y desventajas de las capacidades. Por ejemplo, ¿un núcleo de CUDA tiene predicción de rama?
Ahora son, en principio, lo mismo que los núcleos de CPU. No hace mucho tiempo que esto no era cierto, por ejemplo, no han podido procesar operandos enteros en 2005.
Al comparar la complejidad del núcleo de la CPU de su i5 de 2 núcleos, tenga en cuenta que la CPU 80386 original tenía aproximadamente 275K transistores, mientras que un Core2Duo tiene aproximadamente 230 millones. 1000 veces más, por lo que los números encajan bien.
La mayor diferencia es el manejo de la memoria, que se complica aún más que los viejos tiempos en que necesitamos registros de segmentación. No hay memoria virtual, etc. y es un cuello de botella muy fino cuando intenta portar sus programas de CPU normales, pero el problema real es que el acceso a la memoria no local es muy costoso de 400 a 800 ciclos. Están utilizando una técnica que, fuera del mundo de la GPU, solo la CPU de propósito general SUN Niagara T1 / T2 tenía. Mientras esperan un acceso a la memoria, programan diferentes grupos de subprocesos con otras instrucciones que están listas (llamadas envolturas). Pero si todos los subprocesos son saltos no lineales en torno a sus datos, su rendimiento simplemente falla.
Debe comprender la diferencia fundamental entre la CPU y la GPU y el aumento de GPGPU en tiempos recientes. Uno de los cursos informativos sobre este tema está disponible en Udacity
Además, este libro podría ser útil para programas de nivel principiante.
Aunque esta no es una pregunta de programación. Espero que pueda ayudar a alguien.
Es una pregunta de arquitectura informática que conlleva una larga respuesta. Trataré de mantenerlo muy simple en el riesgo de ser inexacto. Básicamente, respondiste a tu pregunta al hacer la predicción de la rama del controlador CUDA, la respuesta es NO. Un núcleo de CPU tiene que manejar cada una de las operaciones que realiza una computadora, cálculo, recuperación de memoria, IO, interrupciones, por lo que tiene un conjunto de instrucciones complejo enorme, y para optimizar la velocidad se utiliza la predicción de rama de instrucción.
También tiene un gran caché y una velocidad de reloj rápida. Para implementar el conjunto de instrucciones, necesita más lógica, por lo tanto, más transistores más costo por núcleo en comparación con la GPU.
Los núcleos de la GPU tienen menos memoria caché, instrucciones más simples y menos velocidad de reloj por reloj, sin embargo, están optimizados para hacer más cálculos en grupo. El conjunto de instrucciones simples es que cuanto menos memoria caché las haga menos costosas por núcleo.
Los núcleos de Cuda son más carriles de una unidad vectorial, reunidos en urdimbres. En esencia, los núcleos cuda son entradas en un vector AVX o VSX o NEON más amplio.
El más cercano a un núcleo de CPU es un SMX. Puede manejar múltiples contextos (warp, hyper threading, SMT), y tiene varias tuberías de ejecución paralelas (6 FP32 para Kepler, 2 en Haswell, 2 en Power 8). Y cada SMX es independiente, al igual que cualquier CPU central o de propósito general.
Esta analogía se detalla más aquí: https://.com/a/36812922/6218300 .