Articulo de referencia

Haluro (lenguaje de programación)

Halide es un lenguaje de programación informática diseñado para escribir código de procesamiento de imágenes digitales que aprovecha la localidad de memoria , el cálculo vectori...

Halide es un lenguaje de programación informática diseñado para escribir código de procesamiento de imágenes digitales que aprovecha la localidad de memoria , el cálculo vectorizado y las unidades centrales de procesamiento (CPU) y unidades de procesamiento gráfico (GPU) de múltiples núcleos . [1] Halide se implementa como un lenguaje interno específico del dominio (DSL) en C++ .

Idioma

La principal innovación que aporta Halide es la separación del algoritmo que se está implementando de su programa de ejecución , es decir, el código que especifica la anidación de bucles , la paralelización , el desenrollado de bucles y la instrucción vectorial . Estos dos suelen estar intercalados y experimentar con cambios en el programa requiere que el programador reescriba grandes partes del algoritmo con cada cambio. Con Halide, cambiar el programa no requiere ningún cambio en el algoritmo y esto permite al programador experimentar con la programación y encontrar la más eficiente.

Código fuente de muestra

La siguiente función define y establece la programación para un filtro de caja 3×3 definido como una serie de dos pasadas 3×1:

Func blur_3x3 ( Func entrada ) { Func blur_x , blur_y ; Var x , y , xi , yi ;   
    
      

  // El algoritmo - sin almacenamiento ni orden 
blur_x ( x , y ) = ( entrada ( x -1 , y ) + entrada ( x , y ) + entrada ( x + 1 , y )) / 3 ; blur_y ( x , y ) = ( blur_x ( x , y -1 ) + blur_x ( x , y ) + blur_x ( x , y + 1 )) / 3 ;            
            

  // El cronograma - define orden, localidad; implica almacenamiento 
blur_y . tile ( x , y , xi , yi , 256 , 32 ) . vectorize ( xi , 8 ). parallel ( y ); blur_x . calculate_at ( blur_y , x ). vectorize ( x , 8 );       
         
    

  devolver blur_y ; } 

Usar

Google utilizó Halide y TensorFlow para su Pixel 2 Pixel Visual Core . [2] Adobe Photoshop también utiliza Halide. [3] Tanto Google como Adobe han participado en la investigación de Halide. [4]

Véase también

Referencias

  1. ^ "Halide: nuevo lenguaje para el procesamiento de imágenes". 2012. Consultado el 20 de septiembre de 2013 .
  2. ^ "Google e Intel preparan chips de inteligencia artificial, intercambios de redes neuronales y más". The Register . Situation Publishing.
  3. ^ "Photoshop se congela al iniciarse debido a cuellos de botella de haluro". 2020 . Consultado el 27 de abril de 2020 .
  4. ^ "Aprendiendo a optimizar Halide con búsqueda de árbol y programas aleatorios" (PDF) . 2019 . Consultado el 1 de julio de 2019 .
  • Sitio web oficial
  • Desacoplamiento de algoritmos de programación para una fácil optimización de los procesos de procesamiento de imágenes
  • "Halide: un lenguaje y compilador para optimizar el paralelismo, la localidad y el recálculo en procesos de procesamiento de imágenes" (PDF) .(8,259 KB)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Halide_(programming_language)&oldid=1212994353"