xeno_by (xeno_by) wrote,
xeno_by
xeno_by

Categories:

Conflux: GPGPU для .NET

К моему дню рождения в августе (серьезно, прямо в ночь перед ДР =)) случилось радостное событие - наконец-то удалось допилить Конфлакс до относительно рабочего состояния. А на недавней конференции Application Developer Days 2010 мне представился шанс выступить с докладом. Конечно же, я рассказывал про Конфлакс. В честь этого радостного события приглашаю вас ознакомиться со слайдами или даже посмотреть видео. Если вы никогда не слышали про CUDA, то перед этим лучше прочитать прекрасную презентацию Саймона Грина (для начального знакомства хватит первых 14 слайдов).

Тамбнейл доклада
Просто и ёмко Конфлакс описал antilamer: "в дотнетовской программе (на шарпе, например) можно написать метод, который будет выполняться на CUDA - он в рантайме декомпилируется и перекомпилируется в CUDA PTX". Если вас это описание заинтриговало, то вот как все это можно увидеть своими глазами:
  1) Скачать демку умножения матриц на Конфлаксе.
  2) Пока демка качается, можно посмотреть краткое описание.
  3) Демка состоит из двух частей - для CPU и для GPU. Для запуска демонстрации на CPU не нужно ничего, кроме четвертого дотнета. Для запуска демонстрации на GPU нужны CUDA-видеокарта и CUDA-драйвер.
  4) Обратите внимание на артефакты, которые создает демка. Во-первых, это логи, которые выводятся на консоль. Во-вторых, это динамически генерируемый код (ассемблер NVIDIA пишется в трейс, сгенерированный IL после завершения программы сбрасывается на диск - его можно посмотреть рефлектором). В-третьих, это CFG (графы потока управления) дизассемблированных методов, использованных в кернеле.
  5) Можно скачать исходники Конфлакса и посмотреть, как все работает. Для того, чтобы открыть проект, нужна Visual Studio 2010.

В заключение несколько слов саммари. Конфлакс позволяет программисту в 100% managed коде описать параллельный алгоритм, который потом будет исполняться на GPU. Написанный алгоритм можно прозрачно дебагать, используя стандартные средства Visual Studio, одной строчкой переключившись на CPU бакэнд. Наконец, несмотря на происходящую под капотом магию, Конфлакс не является дополнительным уровнем абстракции, которая может неожиданно протечь - он всего лишь один-к-одному преобразует код на дотнете в код для GPU, в нем можно даже писать ассемблерные вставки и вызывать third-party библиотеки CUDA (например, CUBLAS или CUFFT). Все это является шагом вперед в мире GPGPU для дотнета.
Tags: conflux, projects
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 24 comments