.NET a FPGA con Hastlayer

Hay muchas formas de utilizar FPGA. Una forma es convertir programas relacionados con la computadora en hardware. Esto puede aumentar la velocidad y, en algunos casos, reducir el consumo de energía. Normalmente, hará esto escribiendo en un subconjunto de C, pero Hastlayer puede convertir ensamblajes .NET en configuraciones FPGA con algunas limitaciones.

La empresa húngara detrás de Hastlayer afirma que eventualmente tendrán que cobrar dinero por algo, pero por ahora la herramienta es gratuita y prometen tener siempre una opción gratuita. Lo interesante es que los ensamblados .NET son esencialmente código objeto, por lo que no está compilando una fuente, sino un lenguaje intermedio que puede generar usando muchas herramientas de lenguaje diferentes.

La compilación real se lleva a cabo en servidores remotos, por lo que a algunas personas no les gustará. Sin embargo, al menos no carga su código fuente, solo las DLL. La herramienta apunta a la placa Nexys 4 DDR, que aparentemente ahora es la placa Nexys A7. Esta placa cuesta solo $ 265, pero honestamente es un poco anémica acerca de las cosas que normalmente desearía hacer con la aceleración FPGA. En la guía inicial incluso dicen:

Tenga en cuenta que esta es una placa de desarrollo relativamente económica que no se puede combinar con grandes algoritmos y solo admite canales de comunicación lentos. Entonces, con esta tabla, Hastlayer solo es adecuado para algoritmos más simples que solo necesitan intercambiar una pequeña cantidad de datos.

Es de suponer que eventualmente admitirán hardware más grande.

Por supuesto, hay límites. Solo los métodos virtuales públicos o los métodos que implementan un método definido en una interfaz tendrán puntos de entrada de dispositivo. No todos los tipos de datos están disponibles. Algunos métodos como Array.Copy tienen una función limitada. No hay excepciones y la recursividad también tiene algunas limitaciones.

Sin embargo, si es inteligente acerca de .NET y desea ingresar al coprocesamiento FPGA, esta podría ser la solución. Si prefiere C, hay una herramienta para eso. O tal vez prefieras Python.

  • bbp dice:

    También hay una pitón en .NET, por lo que incluso si lo prefiere, puede usarla.

    • lógica combinada dice:

      Es poco probable, es un subconjunto muy limitado de .NET compatible, IronPython se basa en un subconjunto mucho más amplio para operar.

      • bbp dice:

        Sin embargo, lo obtuve de la página web de hastlayer. Todo lo que se compila en el idioma intermedio tiene que funcionar. De nuevo de acuerdo con la página web de hastlayer.

        • lógica combinada dice:

          Teóricamente, tal vez eso podría ser. Prácticamente las llamadas virtuales y la recursividad no son compatibles (y por una buena razón), e incluso para acceder a la RAM es necesario utilizar métodos especiales.

          • Zoltán Lehóczy dice:

            Sí, aparte de C #, el resto de .NET es una teoría hoy en día. Básicamente porque Hastlayer procesa ensamblajes .NET, todos los lenguajes .NET tienen que funcionar, prácticamente debido a la diferencia en los compiladores, necesitamos apoyar los caprichos de cada uno de ellos; esto, sin embargo, es relativamente simple, ya que de lo contrario el código solo usa lo que admite Hastlayer. De hecho, tenemos una muestra de F # aquí: https://github.com/Lombiq/Hastlayer-SDK/blob/dev/Samples/Hast.Samples.FSharpSampleAssembly/FSharpParallelAlgorithmContainer.fs

          • Zoltán Lehóczy dice:

            Sí, aunque en teoría todos los lenguajes .NET se pueden usar en la práctica, todos sus compiladores tienen idiosincrasias que debemos admitir individualmente. Aparte de estos procesos más comunes, solo entenderá el código descompilado y, por lo tanto, mantener un nuevo lenguaje es relativamente simple si uno lo desea. Lo hicimos para F #, aquí hay una muestra simple: https://github.com/Lombiq/Hastlayer-SDK/blob/dev/Samples/Hast.Samples.FSharpSampleAssembly/FSharpParallelAlgorithmContainer.fs

          • Zoltán Lehóczy dice:

            Perdón por la doble publicación, mi comentario inicial no apareció incluso después de actualizar y esperar mucho, así que asumí que se había perdido.

  • lógica combinada dice:

    Este es un proyecto genial, lástima que ahora parece abandonado.

    También estoy trabajando en una cadena de herramientas de código abierto HLS, principalmente dirigida a la informática de alto rendimiento. Es un lenguaje intermedio similar a C, pero la cadena de herramientas en sí está muy estrictamente integrada con .NET. Compruébelo por favor:

    https://github.com/combinatorylogic/soc

    • lis0r dice:

      Usé culos HandelC hace años. Siempre pareció una mala idea: promovió el pensamiento lineal durante la codificación, en lugar del hardware de paradigma paralelo requerido. ¿Se ha resuelto esto de alguna manera en los enfoques más nuevos?

      • lógica combinada dice:

        No puede reemplazar las HDL con ningún enfoque de HLS. Sin embargo, lo que puede hacer es usar HLS como parte de una tubería de aceleración de computadora, para obtener el máximo rendimiento posible de algoritmos naturalmente lineales y no paralizables; ese es exactamente mi objetivo aquí. Nunca sugeriría, por ejemplo, implementar un núcleo de CPU con algo superior a un HDL adecuado.

    • Zoltán Lehóczy dice:

      No está abandonado :). Pero en realidad no se ha hecho mucho en la rama predeterminada, pero el trabajo continúa aquí: https://github.com/Lombiq/Hastlayer-SDK/tree/dev

      • lógica combinada dice:

        ¡Genial! Ojalá github tuviera una mejor manera de resaltar las ramas activas …

        • Zoltán Lehóczy dice:

          Sí … ¡Gracias por ver Hastlayer BTW! Su proyecto CLike también parece interesante.

  • Alan Hightower dice:

    No estoy del todo seguro de quién se está revolcando en sus tumbas. Pero predigo que se están inventando sismómetros en todo el mundo.

    • Zoltán Lehóczy dice:

      ¿Te gustaría hacer ejercicio, Alan? 🙂

  • Brian Carpenter dice:

    Literalmente hice esto en la universidad hace 14 años, primero con Java, luego nos mudamos a .NET

    http://www.cse.secs.oakland.edu/hanna/research.asp

    • Zoltán Lehóczy dice:

      ¡Eso es muy bonito! ¿Tiene un enlace a una página más reciente sobre una publicación o proyecto?

  • Zoltán Lehóczy dice:

    El desarrollador principal de Hastlayer aquí. ¡Gracias por el artículo A! Agregaría que ahora también admitimos los FPGA mucho más altos de Microsoft Project Catapult (https://www.microsoft.com/en-us/research/project/project-catapult/). Aún no se ha lanzado, ¡pero lo estaremos esperando en unos días!

Alberto Gimenez
Alberto Gimenez

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *