Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Программирование на видеокартах GPGPU

Программирование на видеокартах GPGPU

PDF-файл Программирование на видеокартах GPGPU Программирование на видеокартах (63064): Книга - 9 семестр (1 семестр магистратуры)Программирование на видеокартах GPGPU: Программирование на видеокартах - PDF (63064) - СтудИзба2020-08-20СтудИзба

Описание файла

PDF-файл из архива "Программирование на видеокартах GPGPU", который расположен в категории "". Всё это находится в предмете "программирование на видеокартах" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

В.А.АнтонюкПрограммированиена видеокартах(GPGPU)Спецкурс кафедры ММИМоскваФизический факультет МГУ им.М.В.Ломоносова2015Антонюк Валерий АлексеевичПрограммирование на видеокартах (GPGPU). Спецкурс кафедры ММИ.– М.: Физический факультет МГУ им. М.В. Ломоносова, 2015. – 48 с.Учебное пособие представляет собой краткий конспект вводного курса в программирование с помощью графических карт, прочитанного студентам кафедры (ранее она называлась кафедрой компьютерных методов физики) в 2013-2015 годах.

Фактически речьидёт о возможностях и способах программирования графических процессоров, получивших широкое распространение в последние годы. Рассмотрены средства, предлагаемыеизвестнейшим производителем графических карт, – платформа CUDA фирмы NVIDIA:компилятор nvcc, его симбиоз со средой разработки Visual Studio, предложенные расширения языка C/C++ (дополнительные типы данных, ключевые слова, новые математические функции, синтаксис вызова программ, исполняемых на графической карте), атакже особенности параллельного исполнения кода вообще, разделения общих ресурсов,синхронизации исполнения отдельных потоков программ. Анализируются параллельныереализации: базовых векторных алгоритмов, умножения матриц, сортировки (bitonic sort).Рассматривается использование предлагаемых фирмой NVIDIA библиотек: cuBLAS (базовые функции линейной алгебры), cuSPARSE (работа с разреженными матрицами), Thrust(объектно-ориентированный программный интерфейс).Альтернативой привязки к конкретному производителю является использование независимых решений, работающих на более широком спектре устройств различных производителей, поэтому излагаются сведения о работе с библиотекой Boost, платформой OpenCL,библиотекой OpenCV.

Для отображения результатов может быть выбран кроссплатформенный интерфейс OpenGL, поэтому излагаются основы его применения, тем более, чтов рамках OpenGL теперь тоже существует возможность задействовать вычислительнуюмощь современных графических процессоров (язык GLSL) для отрисовки сложных трёхмерных сцен. Не следует недооценивать и проникновения современных технологий в самоепопулярное приложение последнего времени – браузер: даже в нём теперь (с помощьюWebGL) можно создавать сложные вычислительные и графические программы, существенно ускоряемые наличием графического процессора; читатели смогут познакомитьсяс наиболее впечатляющими примерами таких программ.Рассчитано на студентов старших курсов физического факультета и аспирантов, но можетбыть использовано всеми заинтересованными студентами, аспирантами и сотрудникамидля первоначального знакомства с современными вычислительными возможностями.Автор – доцент кафедры математического моделирования и информатики (ММИ)физического факультета МГУ.Рецензент: доцент кафедры физической электроники И.К.Гайнуллин.Подписано в печать 28.12.2015.

Объем 3,0 п.л. Тираж 50 экз. Заказ №.Физический факультет им. М.В.Ломоносова,119991 Москва, ГСП-1, Ленинские горы, д.1, стр. 2.Отпечатано в отделе оперативной печати физического факультета МГУ.c Физический факультет МГУим. М.В.

Ломоносова, 2015c В.А.Антонюк, 20150Программирование на видеокартах(GPGPU)Название этого спецкурса может показаться странным. Программирование? Это понятно. Но навидеокартах... Что такого есть в видеокартах, что нам захотелось бы их программировать? И зачемнам изучать, как это сделать?Оказывается, в своём развитии видеокарты не так давно превратились из специализированныхустройств для воспроизведения графической информации в универсальные вычислительныеустройства, причём с параллельной архитектурой: они способны не только исполнять задаваемуюпрограмму, но и выполнять операции одновременно над целым массивом данных.

При этомфункция воспроизведения никуда не исчезла, просто она стала далеко не основной, на переднийплан вышли функции формирования и обработки визуальной и любой другой информации.И теперь нам — обыкновенным пользователям программируемых устройств — предстоитосознать, как можно воспользоваться резко возросшими вычислительными возможностяминаших устройств, и научиться это делать. Если, конечно, у нас есть вычислительно-трудоёмкиезадачи, которые хотелось бы решать быстрее, и они потенциально могут быть (хотя бы частично)распараллелены.В англоязычной литературе даже появился специальный термин для такого родапрограммирования и вычислений: GPGPU, что принято расшифровывать как General-Purposecomputation on Graphics Processing Units (http://gpgpu.org/). Мы же используем здесьнеформальное выражение "программирование на видеокартах".Теперь о самом спецкурсе.

Условно его можно разделить на две части: "прямое"программирование видеокарт, предполагающее некоторое знакомство с их аппаратнымисвойствами и особенностями, и "косвенное" их программирование, когда используютсяспециальные библиотеки, а пользователю вообще ничего не нужно знать об устройствевидеокарты.В первом случае речь идёт об освоении средств, предлагаемых одним из производителейвидеокарт — фирмой NVIDIA. Как известно, для программирования своих графических карт (илиобобщённо — GPU) она использует расширения языка C и специальный компилятор nvcc,"понимающий" эти расширения. Задействуется он посредством визуальной среды скомпилятором стандартного языка C/C++, например Visual Studio 2008 или 2010, после установкипакета CUDA Toolkit, реализующего так называемую платформу параллельных вычислений CUDA.В рамках спецкурса рассматриваются эти расширения языка C в CUDA: квалификаторы функций(теперь в наших программах будет два разных типа функций, поскольку одни должны исполнятьсякомпьютером, т.е., CPU, а другие — аппаратурой видеокарты, т.е., GPU), виды памяти (так как GPUимеет собственную память, причём нескольких видов), а также дополнительные типы данных иматематические функции (поскольку данные во время вычислений располагаются в GPU иобрабатываются с помощью GPU).Обсуждаются передача данных между CPU и GPU (в терминологии CUDA — между Host и Device),оформление кода, исполняемого на GPU (так называемых ядер, kernels), передаваемые ядрампараметры, особенности параллельного исполнения кода аппаратными средствами (нити, блоки),включая взаимодействие между нитями и синхронизацию их действий, приводятся примеры3простых ядер: для суммирования двух векторов, для вычисления суммы компонент вектора.Подробно разбираются некоторые основополагающие алгоритмы: умножение матриц ("наивная"реализация и блочная, с использованием разделяемой памяти GPU), параллельная сортировкаBitonic Sort.Разумеется, совсем не обязательно детально знакомиться с внутренним устройством GPU, можновоспользоваться более высокоуровневыми библиотеками, тем не менее использующими GPU (иявляющимися частью CUDA): cuBLAS (базовые функции линейной алгебры), cuSPARSE (работа сразреженными матрицами), cuFFT (БПФ), cuRAND (случайные величины), Thrust (С++-библиотека cшаблонами).

И слушатели спецкурса смогут получить некоторый опыт работы с этимибиблиотеками с помощью разбираемых примеров программ.Конечно, при этом не следует забывать, что программы, написанные с использованием CUDA,будут работать только на видеокартах NVIDIA, но не других производителей (например, Intel илиAMD). С этой точки зрения гораздо более оправданным было бы создание программ, которыесмогут работать на видеокартах не только какого-то одного производителя, но и другихизготовителей.

Для этого можно использовать "программную прослойку" между нашим кодом исамой видеокартой, например, в виде какой-то готовой библиотеки. И такие решения уже есть.Слушатели спецкурса могут поближе познакомиться с ними и попрактиковаться в написаниисоответствующих программ.Прежде всего, это открытый стандарт для работы с параллельными вычислителями — OpenCL.Каждый изготовитель видеокарт или просто GPU может реализовать (и часто реализует!)интерфейс, предлагаемый OpenCL, что позволяет использовать один и тот же код на видеокартахили GPU разных производителей (сейчас это возможно для видеокарт NVIDIA, Intel, AMD, а такжедля последних вариантов GPU: Adreno, Mali, Vivante и PowerVR — т.е., на планшетах и даже нанекоторых мобильных телефонах).Кроме этого, наиболее солидные библиотеки имеют в своём составе программные средства дляработы с GPU.

Это и OpenCV (Open Source Computer Vision Library), где часть алгоритмов работы сизображениями имеет варианты как для CPU, так и для GPU, и библиотека Boost, где интерфейсС++-шаблонов применён для решения обыкновенных дифференциальных уравнений.Полноценная работа едва ли возможна без графического отображения информации, поэтомуслушатели познакомятся с графической библиотекой и программным интерфейсом OpenGL — какна простейших примерах, так и на демонстрационных программах, входящих в состав CUDA SDK;узнают о существовании ещё одного языка в рамках OpenGL: GLSL (OpenGL Shading Language),применяемого для написания кода GPU, и о том, что OpenGL вместе с GLSL уже "ждут" нас почти вкаждом браузере (в том числе и на новых мобильных телефонах!) — в виде WebGL, программногоинтерфейса к GPU в рамках браузера.Завершающим "десертом" спецкурса будут такие приятные мелочи в работе программиста, каквизуализаторы: небольшие фрагменты специализированного кода-описания, позволяющиесделать отладку программ с шаблонными библиотеками или просто сложно организованнымиданными в Visual Studio более комфортной.41Видеокарты и графические процессоры как супервычислителиОкружающий нас мир переполнен созданными человеком электронными устройствами.

Изаметная доля их обладает серьёзными вычислительными возможностями, причём такими, чтосовсем недавно казались поразительными.Если раньше видеокарта настольного компьютера была просто устройством воспроизведениявизуальной информации, то сейчас вполне может оказаться, что имеющаяся в нашемраспоряжении видеокарта заметно мощнее в вычислительном смысле, чем центральный (пустьдаже и многоядерный) процессор нашего компьютера.Если раньше мобильный телефон был просто миниатюрным вариантом (радио-) телефоннойтрубки, то сейчас это чаще всего небольшой, но мощный компьютер, содержащий многоядерныйграфический процессор и при этом «умеющий» совершать телефонные звонки.А ведь есть ещё масса других, в каком-то смысле «промежуточных» между ними устройств:ноутбуки, нетбуки, планшеты, неттопы и т.п.

И все они в последнее время тоже обладаютсолидными вычислительными возможностями.Разумеется, хорошо было бы как-то использовать их. Но что для этого понадобится сделать, чтонужно иметь и чего можно достичь — вот те вопросы, которые тогда встают перед нами.Для осознания возможностей графических процессоров полезно ознакомиться с некоторымидемонстрационными программами, «умеющими» эффективно использовать видеокарту. Всё, чтонеобходимо для того, чтобы они могли работать, — это графический процессор на видеокарте идрайвер к ней. Обратите также внимание на то, что некоторые демонстрации (это касается тех изних, что запускаются в рамках браузера) вполне работоспособны даже на современныхмобильных телефонах…Синтезированная шахматная доска (автор Thanassis Tsiodras) — традиционное приложение дляоперационной системы Windows, в котором осуществляется отрисовка трёхмерной сцены: доски сшахматными фигурами на ней (https://www.thanassis.space/cudarenderer-BVH.html),причём и доска, и фигуры имеют почти зеркальную поверхность, так что все они (многократно)отражаются друг в друге.В качестве ускорителя вычислений предполагается видеокарта архитектуры CUDA, при этомсинтез картинки осуществляется в реальном времени с приличной скоростью (в зависимости отвозможностей видеокарты — от единиц до десятков кадров в секунду), что позволяетнаблюдателю интерактивно управлять вращением доски и углом зрения на неё.Если нам необходимо разрабатывать подобныеприложения, то понадобится компилятор C/C++ икомплект разработки, именуемый CUDA Toolkit; такжестоит установить в дополнение к нему и CUDA SDK.Имеющиеся там многочисленные примеры весьмапоучительны и полезны — хотя бы потому, что для нихприведён исходный код, — что позволяет использовать ихкак основу для собственных программ.5Эффектные демонстрации существуют и в рамках браузеров (на настольном компьютере илидаже на мобильном телефоне), поскольку браузер — пример часто используемого приложения,которое ощутимо выигрывает от возможного ускорения синтезируемого графического вывода.Пожалуй, самая известная демонстрация такого рода — это WebGL Water (автор — Evan Wallace).Большое число аналогичных примеров можно посмотреть также на сайте babylonjs.com.http://madebyevan.com/webgl-water/http://www.babylonjs.com/cyos/В настоящее время основными изготовителями видеокарт являются фирмы NVIDIA, Intel, AMD.Каждая из них выпускает также и программные средства поддержки своих изделий.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее