Capilla (lenguaje de programación)

Lenguaje de programación paralela
Capilla
Paradigma
Espacio de direcciones global particionado orientado a objetos
Programación paralela
Diseñado porDavid Callahan, Hans Zima, Brad Chamberlain, John Plevyak
ReveladorHewlett Packard Enterprise (anteriormente Cray Inc. )
Apareció por primera vez2009 ; hace 15 años ( 2009 )
Versión estable
2.0.0 / 21 de marzo de 2024 ; hace 7 meses ( 21-03-2024 )
Disciplina de mecanografíaestática
inferida
Plataformamultiplataforma, incluidos Amazon Web Services , HPE Cray EX
Sistema operativoMac OS , Linux , POSIX , Windows (con Cygwin ), NetBSD
LicenciaLicencia Apache 2.0
Extensiones de nombre de archivo.chpl
Sitio webcapilla-lang.org
Influenciado por
Ada , C# , [1] C , Fortran , C++ , Java , HPF , ZPL , Cray Extensiones MTA / XMT para C y Fortran. [2]

Chapel , el lenguaje de alta productividad en cascada , es un lenguaje de programación paralela desarrollado por Cray , [3] y más tarde por Hewlett Packard Enterprise , que adquirió Cray. Se estaba desarrollando como parte del proyecto Cray Cascade, un participante en el programa de sistemas de computación de alta productividad (HPCS) de DARPA , que tenía como objetivo aumentar la productividad de las supercomputadoras para 2010. Se está desarrollando como un proyecto de código abierto , bajo la versión 2 de la licencia Apache . [4]

El compilador Chapel está escrito en C y C++ ( C++14 ). El backend (es decir, el optimizador) es LLVM , escrito en C++. Se requiere Python 3.7 o más reciente para algunos componentes opcionales, como el sistema de prueba de Chapel y c2chapel, una herramienta para generar enlaces C para Chapel. De forma predeterminada, Chapel compila en ejecutables binarios, pero también puede compilar en código C, y entonces no se utiliza LLVM. El código de Chapel se puede compilar en bibliotecas para que se pueda llamar desde C, o Fortran o, por ejemplo, Python también son compatibles. Chapel admite la programación de GPU a través de la generación de código para unidades de procesamiento gráfico NVIDIA y AMD. [5]

Objetivos

Chapel tiene como objetivo mejorar la programabilidad de las computadoras paralelas en general y del sistema Cascade en particular, proporcionando un mayor nivel de expresión que el de los lenguajes de programación actuales y mejorando la separación entre la expresión algorítmica y los detalles de implementación de la estructura de datos .

Los diseñadores del lenguaje aspiran a que Chapel sirva de puente entre los actuales profesionales de la programación informática de alto rendimiento (HPC), a quienes describen como usuarios de Fortran, C o C++ que escriben código procedimental utilizando tecnologías como OpenMP y MPI por un lado, y los programadores informáticos recién graduados que tienden a preferir Java, Python o Matlab y solo algunos de ellos tienen experiencia con C++ o C. Chapel debería ofrecer los avances de productividad que ofrece este último conjunto de lenguajes sin alienar a los usuarios del primero. [2]

Características

Chapel admite un modelo de programación paralela multiproceso a un alto nivel al admitir abstracciones para el paralelismo de datos , el paralelismo de tareas y el paralelismo anidado. Permite optimizaciones para la localidad de datos y el cálculo en el programa a través de abstracciones para la distribución de datos y la ubicación de subcomputaciones impulsada por datos . Permite la reutilización y generalización del código a través de conceptos orientados a objetos y características de programación genéricas . Por ejemplo, Chapel permite la declaración de locales . [6]

Si bien Chapel toma prestados conceptos de muchos lenguajes anteriores, sus conceptos paralelos se basan más estrechamente en ideas de High Performance Fortran (HPF), ZPL y las extensiones de Cray MTA a Fortran y C.

Véase también

Notas

  1. ^ "Especificaciones de la capilla (Agradecimientos)" (PDF) . Cray Inc. 2015-10-01 . Consultado el 2016-01-14 .
  2. ^ ab Chamberlain, Bradford L. "Una breve descripción general de Chapel" (PDF) . Cray Inc . Consultado el 22 de abril de 2015 .
  3. ^ Lightfoot, David E. (2006). Lenguajes de programación modular: 7.ª Conferencia conjunta sobre lenguajes modulares . Springer. pág. 20. ISBN 978-3-540-40927-4.
  4. ^ "Información sobre la licencia de la capilla". chapel-lang.org . Consultado el 15 de noviembre de 2015 .
  5. ^ "Chapel Technote: Programación de GPU". Hewlett Packard Enterprise. 28 de septiembre de 2023. Consultado el 3 de noviembre de 2023 .
  6. ^ Bongen Gu; Wikuan Yu; Yoonsik Kwak (28-30 de junio de 2011). "Superposición de comunicación y computación mediante sincronización de tareas en un entorno Chapel multilocal". En James J. Park, Laurence T. Yang y Changhoon Lee (ed.). Tecnología de la información del futuro, parte I: 6.ª conferencia internacional . Loutraki, Grecia: Springer-Verlag. págs. 285-292. doi :10.1007/978-3-642-22333-4_37. ISBN . 978-3-642-22332-7.

Referencias

  • Chamberlain, Bradford L. (2011). "Chapel (lenguaje Cray Inc. HPCS)". En Padua, David (ed.). Enciclopedia de computación paralela, volumen 4. Springer. ISBN 9780387097657.

Lectura adicional

  • Brueckner, Rich (6 de agosto de 2014). "¿Por qué Chapel para la programación paralela?". InsideHPC . Consultado el 23 de marzo de 2015 .
  • Dun, Nan; Taura, K. (2012). "Un estudio de rendimiento empírico del lenguaje de programación Chapel". 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum . IEEE . págs. 497–506. doi :10.1109/IPDPSW.2012.64. ISBN . 978-1-4673-0974-5. Número de identificación del sujeto  5904611.
  • Padua, David, ed. (2011). Enciclopedia de computación paralela . Vol. 4. Springer Science & Business Media. Págs. 249–256. ISBN. 9780387097657.
  • Panagiotopoulou, K.; Loidl, HW (2016). "Paralelismo de tareas transparentemente resiliente para Chapel" Talleres del Simposio de procesamiento paralelo y distribuido (IPDPSW), Simposio internacional IEEE 2016 , Chicago, IL. doi :10.1109/IPDPSW.2016.102 ISBN 978-1-5090-3682-0 
  • Sitio web oficial
  • Capilla en GitHub
  • 99 botellas de cerveza en la Capilla
Retrieved from "https://en.wikipedia.org/w/index.php?title=Chapel_(programming_language)&oldid=1218501306"