Массовый параллелизм для гетерогенных вычислений на C++ для беспилотных автомобилей (Майкл Вонг, SECR-2016)

Материал из 0x1.tv

Докладчик
Michael Wong.jpg
Майкл Вонг

В моей роли председателя группы SG14 комитета по стандартизации языка C++ я постоянно сталкиваюсь с требованием создания параллельной модели программирования для гетерогенных устройств – требования, исходящего от разработчиков компьютерных игр, систем финансового трейдинга и встраиваемых устройств. В поисках такой модели я изучил огромное количество стандартов – включая SYCL, HPX, Agency, HCC, OpenMP, OpenACC, OpenCL, C++ AMP, Halide, CUDA, Kokkos, Raja… и многие, многие другие. Задача усложняется тем, что вычислительные устройства отличаются огромным разнообразием – CPU, GPU, FPGA, нестандартные аппаратные системы для конкретных областей применения – и для всего этого разнообразия необходимо решение, позволяющее достичь как высокой производительности, так и низкого энергопотребления – то, чем славится современный C++. Развитие языка C++ стремится отвечать требованием пользователей, и в современных версиях стандарта C++ появляется всё больше и больше поддержки параллельного программирования и гетерогенности – причём как на уровне библиотеки, так и самого языка. В своём докладе я проведу сравнение некоторых из самых популярных моделей параллельного программирования, включая используемые ими модели памяти, передачи данных и абстракции вычислений.

Я расскажу о новых предложениях в области параллельных вычислений в языке C++ — некоторые из них включены в версию стандарта C++17, другие могут быть добавлены в C++20/23. Подробно остановлюсь на концепции “исполнителей” (executors), позволяющую унифицировать управление ресурсами и параллельным кодом. “Исполнители” демонстрируют, как гетерогенные вычисления могут быть поддержаны в будущих версиях C++. Один из стандартов, поддерживающих “исполнители” уже сегодня – Khronos SYCL и библиотека SYCL ParallelSTL. SYCL это система “строительных блоков” для C++ приложений; она служит “мостиком” между абстракциями С++ и аппаратными устройствами. Бесплатная версия SYCL выпущена под названием ComputeCPP Community Edition; с её помощью можно построить высокоуровневые абстракции для моделирования нейросетей, машинного зрения, а в итоге и полного управления беспилотными автомобилями.

Видео

on youtube


Презентация

Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016).pdf

Примечания и ссылки