Programando un FPGA usando C Vs usando openCL-C

4

Llegué a conocer el kit de desarrollo opencl de Altera, para programar FPGA utilizando OpenCL. Sé lo que es OpenCL y cómo escribir programas en esto.
Esta es una extensión a C, y tiene hilos posibles. Por lo tanto, puede iniciar miles de subprocesos, y cada uno funciona en paralelo si se proporcionan recursos suficientes.

Mi pregunta es desde el punto de vista del desarrollador de FPGA ¿En qué se diferencia el desarrollo de openCl del desarrollo de FPGA basado en C? (Nunca he programado un FPGA en C) Si dice que OpenCL tiene paralelismo, creo que cuando se implementa en C, el diseño final después de la compilación y el lugar y la ruta también tendrán unidades paralelas de hardware en el chip. Entonces, ¿cómo es diferente C y openCl?

    
pregunta gpuguy

3 respuestas

2

Primero considera la diferencia entre C y OpenCL. C es un lenguaje, mientras que OpenCL es un marco que incluye todos los recursos necesarios para compilar en múltiples destinos y ejecutarlos en paralelo (colas / envío / sockets, etc.).

El 'kit' de Altera OpenCL es similar, ya que no es solo un compilador de hardware, sino que también incluye controladores DDR, controladores PCI, controladores de host, etc. Este hardware adicional está integrado en segundo plano y la interfaz / envío del controlador del host, etc. la principal diferencia entre la codificación en C y el uso de herramientas de C a HDL frente a OpenCL para FPGA.

Con una herramienta C-to-HDL, aún necesita hacer el resto del SOC y todos los controladores de software y aplicaciones para usar una tarjeta de acelerador de algoritmo basada en FPGA (por ejemplo). Con OpenCL, el mismo código puede compilarse para múltiples objetivos (cpu / gpu / fpga) sin cambios (aunque esto agrega algunas restricciones a lo que es este código).

Y, por supuesto, hay muchas buenas razones para codificar el HDL y construir el SOC. La solución OpenCL de Altera es una solución muy interesante para la programación FPGA de uso general.

--edit--

Para ver un ejemplo, vea el diseño de referencia de Mandelbrot de Altera: enlace A partir de esto, puede ver que el material de origen principal son los archivos cpp / h y un archivo de descripción de la placa, el software y el hardware de 'soporte' para hacer que su kernel de OpenCL entre en el hardware y hablar con él está oculto de la capa de OpenCL a través de 'Altera OpenCL 'SDK.

Si tuviera que encontrar una solución comparable con una herramienta de C a HDL, comenzaría con el núcleo compilado desde el convertidor, luego integraría esto con el hardware DDR, PCIe y DMA (el SOC) y luego codificaría los controladores para pasar todos estos datos e integrar este controlador con el sistema de gestión de colas OpenCL. Bastante trabajo.

    
respondido por el Adam
1
Las herramientas

C-to-Gates ayudan al desarrollador de FPGA a utilizar un subconjunto de C como lenguaje de especificación de hardware . Esta especificación C es realmente fácil de ejecutar en una computadora de propósito general, por lo que la verificación funcional inicial es rápida e indolora. (La intención es no compilar código C arbitrario en hardware).

OpenCL para FPGA ayuda al desarrollador de software a construir aceleradores de hardware sin tener que aprender sobre las arquitecturas HDL o FPGA.

Una vez que abandone el mundo del marketing de proveedores de FPGA e intente crear productos reales, ambas tecnologías requerirán una combinación de habilidades de FPGA y software para producir buenos resultados.

    
respondido por el Jan Schiefer
0

El "kit" del que habla es una herramienta que puede usar para programar y simplemente especificar el hardware. Se encarga del lenguaje de descripción de hardware (HDL) para usted, ya que a través de una configuración usted dice qué arquitectura desea y cuántos núcleos / hilos. Un FPGA no viene con núcleos o una instrucción diferente a la capacidad de restablecer y establecer conexiones entre bloques lógicos. Si no especifica la HDL, ya sea con ajustes preestablecidos como esta herramienta o diseñando manualmente uno, su código no se ejecutará. Si me falta su pregunta, corríjame.

Creo que lo que está buscando es otra herramienta suministrada por el vendedor para FPGA que le permite usar el lenguaje C. En ese tema no estoy versado.

Uso de Google (usando términos: herramienta FPGA basada en C).

Aquí hay una de estas herramientas enlace

Parece que todas estas herramientas son propietarias y es probable que solo funcionen en ciertos FPGA de proveedores.

Espero que eso ayude.

    
respondido por el Eric

Lea otras preguntas en las etiquetas