Применение OpenCL в задачах мат. моделирования

Отчетность: 
зачёт
Тип: 
факультативный
Часов: 
34
Семестр: 
архив

Спецкурс читается студентам отделения прикладной математики (ОПМ) физического факультета с целью ознакомления и практического освоения OpenCL — открытого языка кроссплатформенного программирования для параллельных вычислений.

В части начальных сведений об особенностях параллельного исполнения кода вообще, разделении общих ресурсов, синхронизации исполнения отдельных потоков и т.п. данный курс опирается на читающийся во 2-м семестре магистратуры спецкурс «Программирование на видеокартах (GPGPU)», поэтому здесь делается акцент на углублённое знакомство со спецификацией OpenCL, её версиями и возможностями.

Подробно анализируется содержимое интерфейсных заголовочных файлов OpenCL: cl.h, cl_platform.h, а также cl_ext.h, cl_gl.h, cl_gl_ext.h и opencl.h, разбираются основные функции программного интерфейса и их применение. На примере заголовочного файла cl.hpp версии 1.1 рассматривается предлагаемый в нём C++-интерфейс к OpenCL и тестируются программы с его использованием.

Поскольку помимо обязательных свойств спецификации OpenCL изготовители аппаратных средств часто реализуют т.н. расширения (device extensions), работающие не на всех устройствах OpenCL, слушатели знакомятся с типами расширений и схемой их поименования, с тем, как должны компилироваться программы при использовании таких расширений, с информацией о расширениях в заголовочных файлах cl_ext.h и cl_gl_ext.h, а также с расширениями консорциума Khronos и некоторыми расширениями производителей.

Обсуждаются сосуществование различных реализаций OpenCL в рамках одной системы (Windows, Linux, Android) и способы реализации такого сосуществования (т.н. ICD Loader) — как от Khronos, так и альтернативный (ocl-icd). Изучаются объекты памяти в OpenCL (буферы и изображения) и работа с этими объектами: создание, чтение/запись, копирование, а также другие общие функции работы с ними. Рассматриваются описатели изображений, поддерживаемые форматы, сэмплеры.

Важное место в курсе уделяется взаимодействию в OpenCL-программе вычислительных фрагментов с визуализирующими (т.н. OpenCL-OpenGL Interoperability), разъясняются правила совместного владения общими объектами памяти и раздельного их использования. Уточняются способы создания контекста для работы с совместно используемыми объектами и демонстрируются практические примеры программ с координированной работой OpenCL и OpenGL.

Слушатели узнают о существующих реализациях OpenCL и их особенностях: «настольных» вариантах (AMD, Intel, NVidia), вариантах для мобильных устройств и реализациях с открытым кодом (Beignet и POCL); затрагиваются практические нюансы компиляции и установки пакетов из исходного кода.

Освещаются новые возможности OpenCL версии 2.0 — такие, как поддержка разделяемой виртуальной памяти, динамический параллелизм, обобщённое адресное пространство, улучшенная поддержка изображений, подмножество атомарных операций из стандарта C++11, новые объекты памяти (Pipes) и др.

Спецкурс рассчитан на студентов старших курсов физического факультета и аспирантов.

Файлы: 
ВложениеРазмер
PDF icon OpenCL1.49 МБ