Paradigma | Espacio de direcciones global particionado orientado a objetos Programación paralela |
---|---|
Diseñado por | David Callahan, Hans Zima, Brad Chamberlain, John Plevyak |
Revelador | Hewlett Packard Enterprise (anteriormente Cray Inc. ) |
Apareció por primera vez | 2009 ( 2009 ) |
Versión estable | 2.0.0 / 21 de marzo de 2024 ( 21-03-2024 ) |
Disciplina de mecanografía | estática inferida |
Plataforma | multiplataforma, incluidos Amazon Web Services , HPE Cray EX |
Sistema operativo | Mac OS , Linux , POSIX , Windows (con Cygwin ), NetBSD |
Licencia | Licencia Apache 2.0 |
Extensiones de nombre de archivo | .chpl |
Sitio web | capilla-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]
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]
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.