TL; DR
Los aceleradores funcionan creando estructuras informáticas especiales para la carga de trabajo en lugar de utilizar múltiples instrucciones SW.
Versión larga
- ¿Cuál es la relación entre visión artificial, inteligencia artificial de aprendizaje automático y aprendizaje profundo? ¿Son dependientes y están estrechamente vinculados?
- ¿Cuál es el proceso paso a paso para aplicar el aprendizaje automático en el trabajo (desde el procesamiento de la entrada hasta la etapa final)?
- Procesamiento de señal digital: ¿Conoce las razones por las que la deconvolución de imagen (deblur) no siempre funciona?
- ¿Cuál es el algoritmo utilizado para mantener los drones equilibrados en el aire, a pesar de los golpes externos, como la ráfaga de viento?
- ¿Cuál es un buen caso de uso práctico para el modelado de temas y LDA?
Para comprender cómo funcionan los aceleradores, debe comprender cómo se ejecutan las instrucciones básicas. Un buen ejemplo es la simple operación de multiplicación. Suponga que ALU dentro de su CPU no tiene un camino de datos multiplicador. Entonces, cada vez que se emite una instrucción de multiplicación, su compilador traduce hábilmente la instrucción de multiplicación en una serie de instrucciones de agregar y cambiar. Entonces, en lugar de completar la multiplicación en pocos ciclos de reloj, se requieren varios ciclos de reloj para agregar y cambiar. Como la multiplicación es una aplicación común, se agregó a la ruta de datos a medida que la computadora evolucionó
Ahora tomemos un caso para la aceleración de la carga de trabajo. Digamos que quieres acelerar la convolución. Entonces, cuando escriba la función de convolución en C, tendrá muchas operaciones de multiplicación, desplazamiento y transformación de datos. Ahora imagine que puede crear una ruta de datos o una estructura informática para este procesador interno para que pueda tener una instrucción de convolución en su conjunto de instrucciones. Entonces el compilador llama automáticamente a este hardware cada vez que haces una convolución. Pero la convolución no es una aplicación lo suficientemente común como para agregarla a un procesador.
Un enfoque es hacer su propio ASIC para que pueda colocar esto en una ranura PCIE y cada vez que se emite una instrucción de convolución los datos llegan a PCIE, completa la tarea y la devuelve a la CPU. (Así es como evolucionaron las tarjetas de sonido y las GPU)
Otro enfoque es tener una lógica flexible que pueda reconfigurar para que sea cualquier cosa (FPGA). En este caso, diseñe la ruta de datos para su carga de trabajo y la coloque en un FPGA (en una ranura PCIE)
El paquete de chips múltiples Intel Xeon combina FPGA y procesador Xeon en un solo paquete, lo que disminuye la latencia a FPGA.
Comenta si necesitas más aclaraciones