Conflux: GPGPU для .NET (Евгений Бурмако на ADD-2010)

Материал из CustisWiki

Перейти к: навигация, поиск

Аннотация

Евгений Бурмако, энтузиаст опен-сорс движения, рассказал про проект ConfluxGPGPU для .NET Framework.

Параллелизм сегодня в моде, а программирование графических процессоров (GPGPU) находится на самом острие этой моды. Несмотря на ажиотаж, на этом поприще простора еще много — на сегодняшний день промышленные библиотеки для GPGPU есть только для C/C++.

В докладе рассказано об опыте разработки решения для GPGPU в экосистеме .NET — исследовательского проекта Conflux. Главная идея Конфлакса — достичь полной интеграции в хостовый язык C# и избавить программиста от необходимости явно использовать стек инструментов CUDA.

Первая альфа-версия успешно этого достигла, скомпилировав C# код умножения матриц в ассемблер графических процессоров NVIDIA и успешно его исполнив.

Интересным артефактом разработки Конфлакса явился декомпилятор и построенная вокруг него инфраструктура метапрограммирования. Сам по себе C# не очень приспособлен для этих целей, но и на нем получилось достичь интересных результатов.

Видео


Подкаст

Презентация

Conflux- GPGPU для .NET.pdf

Примечания


Conflux: GPGPU для .NET (Евгений Бурмако на ADD-2010)

Энтузиаст Женя (молодой толковый парень с хвостиком) захотел для матричной арифметики на C# поюзать возможности графического процессора от nVidia. Но вот беда: для программирования графических процессоров создан специальных стек CUDA со своим си-подобным языком.

Для решения задачи Женя разработал инфраструктуру C#-ных классов. Простой программист должен всего лишь унаследоваться от нужного класса, реализовать пару методов, и дело в шляпе. На выходе — обычная .NET-сборка. Дальше это сборка дизассемблируется, строиться синтаксическое дерево, которое превращается (ну, если возможно :-) в набор команд CUDA-драйвера.

Путь, конечно, обходной, но по словам докладчика, зато нет затрат на Interop.

Рассматривалась проблема отладки: на графическом процессоре ничего не отладишь, но библиотека имеет специальный режим для выполнения кода на обычном CPU.

Доклад отлично структурирован. Было демо. Глаза у докладичка горят. Ну, ценность у библиотеки чисто исследовательская.

Оценка: :-)

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».