Евгений Бурмако, энтузиаст опен-сорс движения, рассказал про проект Conflux — GPGPU для .NET Framework.
Параллелизм сегодня в моде, а программирование графических процессоров (GPGPU) находится на самом острие этой моды. Несмотря на ажиотаж, на этом поприще простора еще много — на сегодняшний день промышленные библиотеки для GPGPU есть только для C/C++.
В докладе рассказано об опыте разработки решения для GPGPU в экосистеме .NET — исследовательского проекта Conflux. Главная идея Конфлакса — достичь полной интеграции в хостовый язык C# и избавить программиста от необходимости явно использовать стек инструментов CUDA.
Первая альфа-версия успешно этого достигла, скомпилировав C# код умножения матриц в ассемблер графических процессоров NVIDIA и успешно его исполнив.
Интересным артефактом разработки Конфлакса явился декомпилятор и построенная вокруг него инфраструктура метапрограммирования. Сам по себе C# не очень приспособлен для этих целей, но и на нем получилось достичь интересных результатов.
Conflux: GPGPU для .NET (Евгений Бурмако на ADD-2010)
Доклад об использовании графического процессора для высокопроизводительных вычислений из .NET.
Докладчик представил краткий обзор GPU и технологий программирования под них (CUDA, AMD Stream, Open CL, DirectCompute). Далее, немного рассказал про проекты, занимающиеся использованием GPU из .NET (Brahma, MS Research Accelerator v2).
После этого перешёл к разработке комании Conflux. Компанией разрабатывается библиотека, позволяющая проводить определённые вычисления с использованием GPU. Для её использования разработчику необходимо написать так называемое «вычислительное ядро». Библиотека его декомпилирует, преобразует AST и передаёт для вычисления драйверу CUDA. При этом набор типов и операций, допустимых для использования в вычислительном ядре очень ограничен. Насколько я понял, на нынешнем этапе разработке успешно работает перенос «hello world» вычислений типа умножения матриц.
В целом интересно, но неясно, где это можно применить в коммерческой разработке. Пока целевой аудиторией разработки я вижу всевозможные research-проекты, которым нужны высокопроизводительные вычисления.
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».