Программирование · 1 min read · Oct 20, 2025

Этот новый функциональный язык программирования может генерировать код на C и Python для приложений

Использование Futhark упрощает программирование для GPU, которые ускоряют машинное обучение и другие ресурсоемкие приложения

Исследователи из Университета Копенгагена в Департаменте компьютерных наук недавно представили Futhark, открытый функциональный язык программирования, предназначенный для создания кода, который работает на GPU, для использования в машинном обучении и других высокопроизводительных приложениях.

Исследователи заявили, что Futhark должен быть более удобным в использовании, чем стандартные фреймворки C/C++ для программирования GPU. Основная особенность Futhark заключается в том, что он может автоматически генерировать как C, так и Python код для интеграции с существующими приложениями. Futhark написан на Haskell.

На сегодняшний день большинство программирования для GPU включает использование фреймворков, таких как OpenCL или CUDA, оба из которых используют вариации C или C++ для генерации кода, который работает на GPU. Вместо использования какого-либо фреймворка, Futhark может генерировать C код, но является собственным языком, более похожим на Haskell или Standard ML, чем на C.

Создатели Futhark утверждают, что выразительность языка упрощает описание сложных операций, использующих параллелизм. Это включает возможность поддержки вложенных параллелизаций (параллельные операции внутри других параллельных операций). Futhark может делать это «несмотря на сложности эффективного отображения на плоский параллелизм, поддерживаемый аппаратным обеспечением, так как многие программы зависят от этой функции».

Утверждения исследователей не безосновательны. Предварительные бенчмарки, сравнивающие программы Futhark GPU с другими библиотеками GPU, показали многообещающие результаты. Для теста максимальной суммы сегментов Futhark был почти вдвое быстрее, чем конкурирующий проект с открытым исходным кодом. В других случаях он соответствовал или был лишь немного медленнее, чем конкуренция. Разработчики Futhark объяснили это новизной языка и его неотшлифованным подходом к выделению и повторному использованию памяти.

Текущая цепочка инструментов Futhark может генерировать код, способный работать как на CPU, так и на GPU, с различными целями. Для первого она генерирует C код, компилируемый GCC; для второго она генерирует C код, использующий платформу OpenCL. Таким образом, один и тот же код может выполняться на любом доступном оборудовании, поддерживающем его, аналогично тому, как приложения с ускорением GPU, такие как база данных MapD, могут переключаться на использование CPU при необходимости.

Пользователи Python, которые хотят увеличить скорость, могут автоматически генерировать код с Futhark, обернутый в модуль Python. Код GPU выполняется через PyOpenCL, который является библиотекой для взаимодействия с GPU. Есть примеры этого, такие как реализация игры «Жизнь» Конвея на GPU с использованием Futhark.

Futhark все еще находится в процессе разработки, и разработчики разместили код на GitHub для других исследователей и разработчиков.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.