30 октября 2016
8 часов
Мастер-класс читается на английском языке с переводом на русский
Требуется отдельная регистрация
Стандарты OpenCL™ и SYCL™, развиваемые консорциумом Khronos™ Group, позволяют выполнять программы, написанные на языках C и C++, на самых разнообразных гетерогенных системах, включая GPU, интегрированные CPU, DSP и даже FPGA. Подобные расширения языка обсуждаются для включения в стандарт C++; первый шаг, в виде технической спецификации C++17 Parallel and Concurrency, уже сделан. Пока что его применение ограничено лишь CPU. В будущем, основываясь на опыте использования SYCL и других высокоуровневых моделей, мы придём к созданию единого высокоуровневого стандарта параллельного программирования для таких прикладных областей как беспилотные автомобили, компьютерное зрение и нейросети.
SYCL уже сейчас позволяет запускать вычисления на гетерогенных устройствах и включает в себя реализацию C++17 ParallelSTL, дополняя её возможностями использования GPU и дополнительных CPU. На этом мастер-классе мы покажем, как писать параллельные программы на SYCL и использовать экспериментальную версию ParallelSTL.
Краткое содержание курса:
- Мы начнём с простой программы (“hello world!”), в которой запускаются очереди в одной задаче и потоковом объекте, и на её примере покажем разницу между “обычным” С++, SYCL и OpenCL.
- Далее расскажем об обмене данными между хостом и GPU с использованием буферов и аксессоров; о важности времени жизни и базовых параллельных конструкциях.
- После чего перейдём к более продвинутым вещам, таким как Гауссово размытие для обработки изображений, позволяющую решать задачу распознавания пешеходов.
- Затем продемонстрируем использование параллельных алгоритмов C++17 с помощью реализации ParallelSTL, входящей в SYCL, которая позволяет запускать код не только на CPU, но и на гетерогенных устройствах.
Кроме практической части, на мастер-классе будут прочитаны лекции о SYCL, OpenCL, а также новых возможностях, предлагаемых в спецификации C++ Parallelism and Concurrency, включая C++17 Parallel STL, C++11 async, фьючерсы (futures), атомики, программирование с передачей продолжений, барьеры, атомарно разделяемый _ptr, а также инструменты для параллельного программирования без использования семафоров.
От участников ожидается знание языка C++ и наличие ноутбука. Необходимое для работы программное обеспечение можно будет установить на месте с USB-накопителя. Мастер-класс может быть полезен и для начинающих разработчиков, но основной материал посвящён продвинутым методам параллельного программирования с использованием C++.
О ведущих мастер-класса
Майкл Вонг
VP Research and Development, Codeplay Software
Майкл Вонг — вице-президент исследований и разработки в Codeplay Software, директор и вице-президент ISOCPP.org, старший член Комитета по стандартизации С++ с 15-летним опытом, вице-президент по языкам программирования в Совете стандартов Канады. Майкл также возглавляет представительство Канады в комитете по стандартам C++. В прошлом — генеральный директор OpenMP, а также старший технический архитектор по стратегиям компиляторов IBM.
Майкл возглавляет WG21 SG5 транзакционной памяти и развитие SG14 Разработки Игр / Low Latency / Financials, и является соавтором ряда фич C++ / OpenMP / Transactional Memory, включая: generalized attributes, user-defined literals, inheriting constructors, weakly ordered memory models, and explicit conversion operators. Майкл — автор ряда научных работ, книги по C++11, редактор технических спецификаций Concurrency и Transactional Memory.
Майкл — приглашенный и ключевой докладчик на многих конференциях, в университетах, компаниях, научно-исследовательских институтах, таких как: ACCU, C++Now, Meeting C++, ADC++, CASCON, Bloomberg, Activision/Blizzard, CERN.
Дункан МакБэйн
Developer Relations Manager, Codeplay Software
Дункан – инженер-программист в Codeplay. Начал c финансируемого Европейским Союзом проекта LPGPU, в котором занимался поиском путей повышения производительности и снижения энергопотребления устройств на GPU. С тех пор работал над рядом заказных проектов, а в последнее время – над реализацией Codeplay SYCL, ComputeCPP. В последнее время занимался также поддержкой внешних разработчиков, использующих ComputeCPP.
Впервые Дункан познакомился с гетерогенным программированием на курсе в Университете Эдинбурга. В своей диссертации он использовал API CUDA для ускорения вычислений FFT. Этого было достаточно, чтобы увлечься возможностями гетерогенных устройств.
Comment