Персональные инструменты
 

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

Материал из CustisWiki

Перейти к: навигация, поиск
м (Примечания)
 
м (Примечания)
 
(не показано 12 промежуточных версий 2 участников)
Строка 16: Строка 16:
 
{{vimeoembed|16738238|720|405}}
 
{{vimeoembed|16738238|720|405}}
  
 
+
{{ActualBanner2}}
 
+
 
== Подкаст ==
 
== Подкаст ==
 
{{podfmembed|belonesox.podfm.ru/addconf/43}}
 
{{podfmembed|belonesox.podfm.ru/addconf/43}}
Строка 23: Строка 22:
 
== Презентация ==
 
== Презентация ==
 
[[Файл:Conflux- GPGPU для .NET.pdf|center|640px]]
 
[[Файл:Conflux- GPGPU для .NET.pdf|center|640px]]
 
 
  
 
== Примечания ==
 
== Примечания ==
 
* [http://addconf.ru/event.sdf/ru/add_2010/authors/120/156 страничка доклада на сайте конференции]
 
* [http://addconf.ru/event.sdf/ru/add_2010/authors/120/156 страничка доклада на сайте конференции]
 +
* http://xeno-by.livejournal.com/35664.html
  
 
<references/>
 
<references/>
  
 +
{{include-review|Отчет о конференции ADD-2010 - Владислав Иофе/Conflux. GPGPU для .NET}}
 +
{{include-review|ADD 2010: Отчёт Русецкого Георгия/GPGPU для .NET}}
  
 
{{replicate-from-custiswiki-to-lib}}
 
{{replicate-from-custiswiki-to-lib}}
 
[[Категория:ADD-2010]]
 
[[Категория:ADD-2010]]
 +
[[Категория: Параллельное программирование (доклады)]]

Текущая версия на 01:00, 20 ноября 2011

Аннотация

Евгений Бурмако, энтузиаст опен-сорс движения, рассказал про проект 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-проекты, которым нужны высокопроизводительные вычисления.


Внимание! Данная статья выбрана для репликации во внешнюю базу знаний компании. Пожалуйста, не допускайте в этой статье публикацию конфиденциальной информации, ведения обсуждений в теле статьи, и более ответственно относитесь к качеству самой статьи — проверяйте орфографию, пишите по-русски, избегайте непроверенной вами информации.