Футарк (язык программирования)
Парадигма | массив , функционал |
---|---|
Семья | МЛ |
Разработано | Троэлс Хенриксен, Космин Оанча, Мартин Элсман |
Разработчик | Копенгагенский университет [1] |
Впервые появился | 2014 г |
Дисциплина набора текста | выведенный , статический , сильный , Хиндли-Милнер , уникальность , зависимый |
ТЫ | кроссплатформенный |
Лицензия | ISC |
Веб-сайт | язык Футарка |
Под влиянием | |
APL , Haskell , NESL , Standard ML |
Futhark — это многопарадигмальный , высокоуровневый , функциональный с параллельными данными и массивами язык программирования . Это диалект языка ML , первоначально разработанный на факультете компьютерных наук UCPH (DIKU) в рамках проекта HIPERFIT. [2] Основное внимание уделяется обеспечению возможности выполнения программ параллельного анализа данных, написанных в функциональном стиле, с высокой производительностью на аппаратном обеспечении с массовым параллелизмом , особенно на графических процессорах (GPU). Futhark сильно вдохновлен NESL , и его реализация использует вариант сглаживающего преобразования , но накладывает ограничения на то, как может быть выражен параллелизм, чтобы обеспечить более агрессивную оптимизацию компилятора. В частности, не поддерживается нерегулярный параллелизм вложенных данных. [3] Это бесплатное программное обеспечение с открытым исходным кодом , распространяемое по лицензии ISC .
Обзор [ править ]
Futhark — это язык семейства ML с нечувствительным к отступам синтаксисом, полученным из OCaml , Standard ML и Haskell . Система типов основана на системе типов Хиндли-Милнера с различными расширениями, такими как типы уникальности и типы, зависящие от размера . Futhark не задуман как язык программирования общего назначения для написания полноценных приложений, а вместо этого ориентирован на написание вычислительных ядер (не всегда таких же, как ядро графического процессора ), которые затем вызываются из приложений, написанных на обычных языках. [4]
Футарк назван в честь первых шести букв рунического алфавита . [5] : 2
Примеры [ править ]
Скалярное произведение [ править ]
Следующая программа вычисляет скалярное произведение двух векторов, содержащих числа двойной точности.
def dotprod xs ys = f64.sum (map2 (*) xs ys))
Его также можно эквивалентно записать с явными аннотациями типов следующим образом.
def dotprod [n] (xs: [n]f64) (ys: [n]f64) : f64 = f64.sum (map2 (*) xs ys))
Это делает типы, зависящие от размера, явными: эту функцию можно вызвать только с двумя массивами одинакового размера, и средство проверки типов отклонит любую программу, в которой это невозможно определить статически.
Умножение матриц [ править ]
Следующая программа выполняет умножение матриц , используя приведенное выше определение скалярного произведения.
def matmul [n][m][p] (A: [n][m]f64) (B: [m][p]f64) : [n][p]f64 =
map (\A_row ->
map (\B_col -> dotprod A_row B_col)
(transpose B))
A
Это показывает, как типы обеспечивают вызов функции только с матрицами совместимого размера. Кроме того, это пример вложенного параллелизма данных .
Ссылки [ править ]
- ^ «Лицензия» . futhark-lang.org . Проверено 26 марта 2023 г.
Разработано в DIKU
- ^ "Дом" . hiperfit.dk .
- ^ Хенриксен, Троэльс; Серуп, Нильс Г.В.; Элсман, Мартин; Хенглейн, Фриц; Оанча, Космин (2017). «Футарк: чисто функциональное программирование на графическом процессоре с вложенным параллелизмом и обновлением массива на месте» (PDF) . Материалы 38-й конференции ACM SIGPLAN по проектированию и реализации языков программирования . PLDI 2017. ACM.
- ^ «Руководство пользователя Футарка» . futhark.readthedocs.io .
- ^ Троэлс, Хенриксен (ноябрь 2017 г.). Проектирование и реализация языка программирования Футарк (PDF) (кандидатская диссертация). Копенгагенский университет . Проверено 25 мая 2024 г.
- Языки программирования
- Языки программирования высокого уровня
- Функциональные языки
- Параллельные вычисления
- Языки программирования массивов
- Зависимо типизированные языки
- Зависимо типизированное программирование
- Статически типизированные языки программирования
- Семейство языков программирования ML
- Бесплатные компиляторы и интерпретаторы
- программное обеспечение 2014 года
- Языки программирования, созданные в 2014 году.
- Программное обеспечение, использующее лицензию ISC