stringtranslate.com

Чапел (язык программирования)

Chapel , Cascade High Productivity Language , — параллельный язык программирования , разработанный Cray , [3] а затем Hewlett Packard Enterprise , которая приобрела Cray. Он разрабатывался как часть проекта Cray Cascade, участника программы DARPA High Productivity Computing Systems (HPCS), целью которой было повышение производительности суперкомпьютеров к 2010 году. Он разрабатывается как проект с открытым исходным кодом под лицензией Apache версии 2. [4]

Компилятор Chapel написан на C и C++ ( C++14 ). Бэкэнд (т. е. оптимизатор) — LLVM , написанный на C++. Для некоторых дополнительных компонентов, таких как тестовая система Chapel и c2chapel, инструмент для генерации привязок C для Chapel, требуется Python 3.7 или более новая версия. По умолчанию Chapel компилируется в двоичные исполняемые файлы, но он также может компилироваться в код C, и тогда LLVM не используется. Код Chapel можно скомпилировать в библиотеки, которые можно вызывать из C, Fortran или, например, Python, также поддерживается. Chapel поддерживает программирование GPU посредством генерации кода для графических процессоров NVIDIA и AMD. [5]

Цели

Chapel стремится улучшить программируемость параллельных компьютеров в целом и системы Cascade в частности, предоставляя более высокий уровень выражения, чем существующие языки программирования, и улучшая разделение между алгоритмическим выражением и деталями реализации структуры данных .

Разработчики языка стремятся, чтобы Chapel заполнил разрыв между нынешними программистами высокопроизводительных вычислений (HPC), которых они описывают как пользователей Fortran, C или C++, пишущих процедурный код с использованием таких технологий, как OpenMP и MPI , с одной стороны, и недавно окончивших вузы программистов, которые предпочитают Java, Python или Matlab, и лишь некоторые из них имеют опыт работы с C++ или C. Chapel должен предложить преимущества производительности, предлагаемые последним набором языков, не отталкивая при этом пользователей первого. [2]

Функции

Chapel поддерживает многопотоковую модель параллельного программирования на высоком уровне, поддерживая абстракции для параллелизма данных , параллелизма задач и вложенного параллелизма. Он позволяет оптимизировать локальность данных и вычислений в программе с помощью абстракций для распределения данных и размещения подвычислений на основе данных . Он допускает повторное использование кода и общность с помощью объектно-ориентированных концепций и общих функций программирования. Например, Chapel позволяет объявлять локали . [6]

Хотя Chapel заимствует концепции из многих предшествующих языков, его параллельные концепции наиболее тесно основаны на идеях из High Performance Fortran (HPF), ZPL и расширений Cray MTA для Fortran и C.

Смотрите также

Примечания

  1. ^ "Chapel spec (Благодарности)" (PDF) . Cray Inc. 2015-10-01 . Получено 2016-01-14 .
  2. ^ ab Chamberlain, Bradford L. "Краткий обзор Chapel" (PDF) . Cray Inc . Получено 22 апреля 2015 г. .
  3. ^ Лайтфут, Дэвид Э. (2006). Модульные языки программирования: 7-я совместная конференция по модульным языкам . Springer. стр. 20. ISBN 978-3-540-40927-4.
  4. ^ "Информация о лицензии Chapel". church-lang.org . Получено 15 ноября 2015 г. .
  5. ^ "Chapel Technote: GPU Programming". Hewlett Packard Enterprise. 2023-09-28 . Получено 2023-11-03 .
  6. ^ Bongen Gu; Wikuan Yu; Yoonsik Kwak (28–30 июня 2011 г.). «Перекрытие связи и вычислений посредством синхронизации задач в многолокальной среде Chapel». В James J. Park, Laurence T. Yang и Changhoon Lee (ред.). Future Information Technology, Часть I: 6-я международная конференция . Лутраки, Греция: Springer-Verlag. стр. 285–292. doi :10.1007/978-3-642-22333-4_37. ISBN 978-3-642-22332-7.

Ссылки

Дальнейшее чтение

Внешние ссылки