close

Вход

Забыли?

вход по аккаунту

?

МЕТОДЫ АЛГОРИТМЫ И ПРОГРАММНЫЕ СТРУКТУРЫ ПОВЫШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ ВЫЧИСЛЕНИЙ МНОГОПРОЦЕССОРНЫХ КОМПЬЮТЕРНЫХ СИСТЕМ ОБРАБОТКИ ДАННЫХ

код для вставкиСкачать
На правах рукописи
Колпаков Александр Анатольевич
МЕТОДЫ, АЛГОРИТМЫ И ПРОГРАММНЫЕ СТРУКТУРЫ
ПОВЫШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ ВЫЧИСЛЕНИЙ
МНОГОПРОЦЕССОРНЫХ КОМПЬЮТЕРНЫХ СИСТЕМ
ОБРАБОТКИ ДАННЫХ
05.13.15 – Вычислительные машины,
комплексы и компьютерные сети
АВТОРЕФЕРАТ
диссертации на соискание ученой степени
кандидата технических наук
Москва, 2016
2
Работа выполнена на кафедре «Электроника и вычислительная техника» Муромского
института (филиала) федерального государственного бюджетного образовательного
учреждения высшего профессионального образования «Владимирский государственный
университет имени А.Г. Столетова и Н.Г. Столетова»
Научный руководитель:
Кропотов Юрий Анатольевич, доктор технических наук,
профессор, заведующий кафедрой «Электроника и
вычислительная техника» Муромского института (филиала)
федерального
государственного
бюджетного
образовательного учреждения высшего профессионального
образования «Владимирский государственный университет
имени А.Г. Столетова и Н.Г. Столетова»
Официальные
оппоненты:
Каравай Михаил Федорович, доктор технических наук,
Федеральное государственное бюджетное учреждение науки
Институт проблем управления им. В. А. Трапезникова РАН,
заведующий лабораторией
Лукьянчиков Олег Игоревич, кандидат технических наук,
ЗАО «Инженерный центр «ГЕОМИР», научный сотрудник
отдела системных исследований
Ведущая организация:
Федеральное государственное бюджетное образовательное
учреждение высшего профессионального образования
«Пензенский государственный университет»
Защита состоится «11» мая 2016 г. в 15-00 на заседании диссертационного совета
Д.212.131.05 при федеральном государственном бюджетном образовательном учреждении высшего образования «Московский технологический университет» (МИРЭА),
по адресу: 119454 г. Москва, проспект Вернадского, дом 78, ауд. Д117
С диссертацией можно ознакомиться в библиотеке МИРЭА и на сайте www.mirea.ru.
Автореферат диссертации разослан «08» апреля 2016 г.
Отзывы на автореферат в двух экземплярах, заверенные печатью, просим направлять по
адресу: 119454, г. Москва, проспект Вернадского, д.78, МИРЭА, диссертационный совет
Д212.131.05.
Ученый секретарь
диссертационного совета Д.212.131.05
кандидат технических наук, доцент
Е.Г. Андрианова
3
ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ
Актуальность темы.
Задача создания высокопроизводительных вычислительных комплексов на
базе компьютерных систем является актуальной, так как объемы обрабатываемой
информации, объемы выполняемых вычислений и исследований с большими массивами данных постоянно увеличиваются. В то же время существующие высокопроизводительные вычислительные машины имеют ограниченный доступ в связи
с их использованием для осуществления приоритетных фундаментальных исследований и решения важных научно-технических задач, имеющих большое прикладное значение. Поэтому в настоящее время достаточно интенсивно исследуются и развиваются методы повышения производительности массовых вычислительных компьютерных систем.
Для увеличения эффективности компьютерных вычислений часто применяется использование многопроцессорной архитектуры. Однако, как известно [Graham, R. Bound on multiprocessing timing anomalies./R. Graham// SIAM Journal on
Applied Mathematics. March 1969 г.; Amdahl, G. Validity of the Single Processor Approach to Achieving Large-Scale Computing Capabilities./G. Amdahl //1967. AFIPS
spring joing computer conference] производительность многопроцессорных вычислений за счет дальнейшего увеличения процессоров существенно не повышается
при превышении их количества определенного предела. В то же время современные компьютерные системы в своем составе могут содержать, кроме центрального процессора, специализированные вычислительные модули. Поэтому для решения задачи повышения производительности компьютерных систем рассматривается возможность распараллеливания программ на почти произвольное количество вычислений с использованием гетерогенной платформы на специализированных вычислительных модулях.
Существенным ограничением на повышение производительности вычислений с применением специализированных процессоров является наличие аппаратной поддержки чисел с плавающей точкой разрядностью не выше 32 бит. На последних моделях специализированных процессоров и на профессиональных видеокартах возможна аппаратная поддержка чисел с большей разрядностью, но количественная оценка повышения производительности вычислений таким методом
требует дополнительных исследований.
В данной диссертации исследования базируются на результатах работ в области параллельных вычислительных технологий таких учёных, как: Е.П. Балашов, В.Б. Бетелин, В.С. Бурцев, В.В. Васильев, S. Cray, A. Tanenbaum, D.
Feitelson. При решении проблем функционирования многопроцессорных вычислительных систем большую роль сыграли работы в области математического программирования и исследований вычислительных операций таких учёных, как В.Л.
Береснев, Э.Х. Гимади, В.Т. Дементьев, R. Bellmann, D. Johnson. При исследовании вопросов моделирования параллельных вычислений были рассмотрены фундаментальные труды в этой области B.B. Воеводина, Н.П. Вашкевича, B.C. Любченко, S. Fortune, J. Wyllie, L. Valiant. Специфика вычислений на сопроцессорах и
графических процессорах представлена в работах А.В. Борескова, В.А. Фролова,
S. Hong, H. Kim, W.W. Hwu.
4
Повышение эффективности вычислительных компьютерных систем в известных работах показано в зависимости от организации процесса решения задач.
В общем случае задачи представляются параллельными программами и описываются рядом параметров, в числе которых: количество ветвей, ранг необходимой
подсистемы, время решения и т.п. Режим функционирования высокопроизводительных вычислительных систем формируется мультипрограммным методом или
в некоторых вычислительных компьютерных системах используется частичное
применение вычислительных модулей, что в недостаточной степени обеспечивает
повышение производительности вычислений.
В связи с этим возникает задача разработки методов повышения производительности компьютерных систем на основе модели архитектуры с использованием дополнительных вычислительных производительных модулей или с использованием однородных модулей на графических процессорах. Основной задачей повышения производительности такой вычислительной системы является решение
проблемы принятия решений о переносе операций вычислений на специализированные вычислительные модули и кэшировании данных, что требует разработки и
исследований соответствующих алгоритмов.
Объект исследования – многопроцессорные компьютерные системы.
Предмет исследования – методы, модели и алгоритмы повышения производительности многопроцессорных вычислительных компьютерных систем.
Цель диссертационной работы – повышение производительности вычислительных компьютерных систем с использованием специализированных вычислительных модулей.
Для достижения сформулированной цели были поставлены и решены следующие задачи:
1. Анализ методов построения многопотоковых вычислительных систем,
использующих вычислительные модули с множеством производительных ядер.
2. Исследование вопросов формального описания многопотоковых вычислительных систем, формируемых на основе технологии переноса общих вычислений на специализированные вычислительные модули.
3. Исследование программной реализации алгоритмов для выполнения высокопроизводительных вычислений.
4. Разработка методов выполнения высокопроизводительных вычислительных операций распараллеливанием на специализированных вычислительных модулях.
5. Исследование и разработка алгоритмов повышения производительности
вычислительных компьютерных систем методами распараллеливания программ и
вычислений.
Методы исследования базируются на основных положениях теории конечных автоматов, методов математического программирования, методов анализа
вычислительных алгоритмов, имитационного моделирования.
Соответствие диссертационной работы паспорту специальности:
п. 4. Разработка научных методов и алгоритмов организации параллельной и распределенной обработки информации, многопроцессорных, многомашинных и
специальных вычислительных систем.
5
Научная новизна и теоретическая значимость работы заключается в
следующих результатах:
1. Разработана новая модель многоканальной системы обработки данных,
позволяющая исследовать вопросы повышения производительности компьютерных вычислительных систем с применением специализированных вычислительных модулей.
2. Разработан метод декомпозиции задачи на этапы и метод принятия решений о переносе операций вычислений на специализированные вычислительные
модули.
3. Разработан новый алгоритм повышения производительности параллельных вычислений в компьютерных системах с использованием графических процессоров и кэшировании данных.
Практическая значимость и реализация результатов заключаются в:
− в разработке и внедрении алгоритма организации вычислительных процессов на графических процессорах для увеличения производительности параллельных систем обработки данных;
− в использовании разработанных алгоритмов обработки информации общего назначения на графических процессорах для решения широкого класса прикладных задач с высокой производительностью.
Результаты диссертационной работы внедрены в:
− программное обеспечение микропроцессорных телекоммуникационных
систем обмена аудио и видео информацией с повышением производительности и
быстродействия обработки потоковых данных, внедренное в изделие при
осуществлении ОКР ОАО «МРЗ»;
− учебный процесс подготовки бакалавров по направлению «Информатика
и вычислительная техника» в Муромском институте (филиале) ФГ БОУ ВПО
«Владимирский государственный университет имени А.Г. Столетова и Н.Г.
Столетова».
Апробация работы. Основные положения диссертационной работы докладывались на научно-технических конференциях:
III-я Всероссийская научная конференция «Зворыкинские чтения» (Муром,
2011); XVII Международная конференция по вычислительной механике и современным прикладным программным системам ВМСППС'2011 (Алушта, 2011); IV
Всероссийские научные Зворыкинские чтения (Муром, 2012); XVIII Международная конференция по вычислительной механике и современным прикладным
программным системам ВМСППС'2013 (Алушта, 2013); VI Всероссийские научные Зворыкинские чтения (Муром, 2014), 25-я Международная Крымская конференция «СВЧ-техника и телекоммуникационные технологии» КрыМиКо’2015
(Севастополь, 2015).
Основные положения, выносимые на защиту:
1. Высокопроизводительные компьютерные системы на основе модели архитектуры, включающей многопоточные специализированные вычислительные
модули.
2. Алгоритм повышения производительности компьютерных вычислительных систем, основанный на методе декомпозиции задачи и алгоритме принятия
решений о переносе операций вычислений на графический процессор.
6
3. Структура производительной компьютерной системы с применением разработанных алгоритмов переноса операций на графические процессоры и результаты сравнительных исследований эффективности.
Диссертационные исследования выполнялись в рамках госбюджетных и
научно-исследовательских работ:
− Г/Б НИР № 376/01 от 2014 г. «Анализ и синтез электронных устройств,
систем и сигналов с применением компьютерных технологий» (н.р. - д.т.н., проф.
Кропотов Ю.А.);
− ХД НИР с ОАО «Муромский радиозавод» № 4384/13 от 2013 г. «Внутрикорабельная оперативно-командная телекоммуникационная система связи с применением технологии Ethernet 100 Мбит» (н.р. - д.т.н., проф. Кропотов Ю.А.).
Публикации по работе. По теме диссертации опубликовано 11 печатных
работ, в том числе 2 статьи в журналах из перечня ВАК РФ, 3 статьи в журналах
из списка РИНЦ, 6 публикаций в материалах и тезисах докладов конференций.
Структура и объем работы. Диссертационная работа состоит из введения,
4 глав, заключения и приложений, изложена на 140 страницах, содержит 46 рисунков, 8 таблиц, список литературы состоит из 156 наименований.
ОСНОВНОЕ СОДЕРЖАНИЕ ДИССЕРТАЦИИ
Во введении обоснована актуальность темы, определены объект и предмет
исследования, сформулированы цель и задачи диссертационной работы, определены ее научная новизна и практическая значимость, представлены положения,
выносимые на защиту, приведены сведения об апробации работы и публикациях.
В первой главе рассмотрено современное состояние вопроса повышения
производительности многопроцессорных вычислительных компьютерных систем
обработки данных.
Рассмотрен анализ основных моделей параллельного программирования:
процесс/канал (Process/Channel), обмен сообщениями (Message Passing), параллелизм данных (Data Parallel) и общая память (Shared Memory).
По результатам исследований состояния вопроса показано, что существующие модели представления параллельных вычислений в недостаточной степени
описывают процесс вычислений в многопроцессорных системах с использованием специализированных вычислительных модулей. Однако, отмечено, что некоторые модели и алгоритмы можно использовать в качестве базовых для их дальнейшей модификации при исследовании многопроцессорных систем с использованием специализированных вычислительных модулей. Поэтому в заключительной части первой главы формулируется задача исследований и разработки методов создания алгоритмов повышения производительности вычислений в компьютерных системах на основе технологии переноса операций вычислений на специализированные вычислительные модули.
Сформулированы основные задачи исследований.
Во второй главе проведено сравнительное исследование производительности выполнения вычислительных операций с применением многопроцессорной
архитектуры. Показано, что многопроцессорной системе соответствует модель
многоканальной системы обработки дискретных последовательностей, структурная схема которой приведена на рис. 1.
7
yk1
yk2
y(t)
Ф0
y`k1
y (t)
F2
.
.
.
ykl
(1)
F1
y`k2
Ф1
Fl
F`1
F`2
.
.
.
y`kl
+
+
+
ŷ(t)
F`l
.
.
.
Рис. 1. Модель многоканальной системы обработки данных
Каждый канал этой системы характеризуется передаточной функцией Fl .
При этом в качестве входных воздействий в этих каналах является входная ин(r )
формация в виде последовательности ykl на конечном интервале из N отсчетов,
получающаяся в результате формирования выборок процесса устройствами коммутации  0 , 1 ,  . Учитывая, что указанные последовательности определяются
выражением
ykj( r )  y ( r ) (( j  dk )T ) , k = 0, 1, 2, … , N-1,
(1)
r{0,1,2},
d –прореживание, d{0, 1, 2, …, N-1},
j – смещение последовательности, j{0, 1, 2, …, N-1},
то равноотстоящую последовательность можно представить в зависимости от
смещения j в виде
 y ( r ) [d (k  j )T ], j  k,

ykj( r )   y ( r ) [dkT ], j  k,
, k = 0, 1, 2, … , N-1.
(2)
 y ( r ) [d (k  j )T ], j  k.

где
Каждый канал модели многоканальной системы обработки данных с передаточной функцией Fl представляет собой набор фильтров Flir (S ) в виде
8
l
Fl   Fli ( S ) ,
l 1
тогда передаточная функция модели многоканальной системы обработки данных
принимает вид
l
n
1
r
Fli   (a rjil  c rjil e S ) .
(3)
l 1 i 1 S li
где l – число специализированных вычислителей,
с – коэффициенты ряда, Θ = dT.
После преобразований (3) относительно S l с учетом ограничений типа равенств
r  0, d  1, j  0, c  0,
(4)
решение задачи (3) приводится к решению определения ускорения вычислительных операций в зависимости от числа распараллеленных специализированных
вычислителей и от доли объема параллельных вычислений a по формуле
l
Sl 
.
(5)
l (1  a)  a
Из выражения (5) видно, что значение прироста эффективности вычислений
зависит от алгоритма задачи и ограничения вида a  1 , что позволяет сделать оценивание эффективности распараллеливания алгоритма и вывод об необходимом
количестве распараллеленных специализированных вычислителей. Полученные
результаты согласуются с основными положениями работ Грэма и Амдала [Graham, R. Bound on multiprocessing timing anomalies./R. Graham// SIAM Journal on
Applied Mathematics. March 1969 г.; Amdahl, G. Validity of the Single Processor Approach to Achieving Large-Scale Computing Capabilities./G. Amdahl //1967. AFIPS
spring joing computer conference].
Результаты исследований зависимости ускорения вычислений S l от числа
распараллеленных специализированных вычислителей l представлены на рис. 2.
4.5
SSk
a = 0.25
l
a = 0.5
4
a = 0.75
3.5
3
2.5
2
1.5
1
4
8
16
32
64
128
256
512
1024
2048
kl
Рис. 2. Зависимость ускорения вычислений в системе от числа распараллеленных специализированных вычислителей
9
Из рис. 2 видно, видно, что при значении доли a  0.75 распараллеленных
задач в алгоритме, увеличение числа распараллеленных ядер специализированных
вычислителей до значения l  16 приводит к существенному росту производительности, в частности применение одного четырехъядерного графического процессора в качестве специализированного вычислителя увеличивает производительность
более, чем в 2 раза.
Для построения абстрактной модели параллельных вычислений с использованием специализированных вычислительных модулей, для рассмотрения особенностей обобщенной архитектуры специализированных вычислительных модулей и их взаимодействия с центральным процессором была разработана и исследована структурная схема архитектуры гетерогенной системы «CPU – GPU», которая изображена на рис. 4. Базовыми структурными элементами специализированных вычислительных модулей являются спецпамять (SpRAM), в которой отдельно можно выделить память констант и глобальную память, и множество
мультипроцессоров. Чтобы обработать данные на специализированных вычислительных модулях, необходимо передать их из оперативной памяти компьютера в
SpRAM в соответствии со структурной схемой архитектуры гетерогенной системы на рис. 3.
Оперативная память
Центральный процессор
Память констант
Мультипроцессор 1
SIMD
…
Мультипроцессор k
…
SIMD
…
SIMD
SIMD
Глобальная память
Рис. 3. Структурная схема архитектуры гетерогенной системы «CPU –
GPU»
Как видно из структурной схемы на рис. 3, связку «CPU – GPU» можно отнести к модели с общей памятью. Основной моделью с общей памятью является
модель PRAM (parallel random-access machine) – машина с параллельным произвольным доступом. Она является абстрактной идеализированной моделью параллельной синхронной машины с разделяемой общей памятью, которая использует
допущения, приведенные ниже:
− количество процессоров (q) в машине не ограничено;
− каждый процессор имеет равнозначный доступ к любой ячейке общей
памяти, размер которой не ограничен;
− отсутствует конкуренция по ресурсам;
− процессоры работают в режиме MIMD, но в частном случае может использоваться режим SIMD.
Все процессоры исполняют инструкции синхронно, причем выполнение
любой инструкции занимает ровно 1 такт, называемый шагом PRAM-машины.
10
Для анализа алгоритмов на PRAM можно представить их вычисления в виде
ациклического ориентированного графа «операции-операнды», по которому
находятся значения основных характеристик, определенных в рамках данной модели.
Чтобы оценить время выполнения алгоритма для N входных данных на
PRAM-машине с p потоками, было получено выражение
 W (N )

T ( N , p)  O
 S ( N )  ,
 p

где
(6)
О – верхняя асимптотическая оценка трудоёмкости алгоритма,
N – количество входных данных алгоритма,
S(N) – шаговая сложность алгоритма,
W (N ) 
S (n)
W ( N )
i 1
i
– рабочая сложность параллельного алгоритма, где Wi(N)
– количество параллельных операций на шаге i.
Формула (6) дает верхнюю асимптотическую оценку времени исполнения
алгоритма с шаговой сложностью S(N) и рабочей сложностью W(N).
Из схемы, приведенной на рис. 3, можно отметить, что PRAM модель может быть применена к гетерогенной многопроцессорной системе с учётом следующих уточнений и дополнений:
1. Все процессоры могут одновременно считывать данные из разделяемой
памяти, но запись должна быть монопольной, т.к. порядок изменения ячейки
разделяемой памяти при обращении на запись из нескольких скалярных процессоров не определён (PRAM – CREW (Concurrent Read, Exclusive Write)).
2. Количество скалярных процессоров в графическом мультипроцессоре
ограничено сверху (qmax процессоров). Для выполнения большего числа потоков
используется система горизонтального параллелизма, аналогичная горизонтальной структуре в модели BSP: генерируется расписание последовательного исполнения потоков, разбитых на пучки по qwarp скалярных процессоров.
3. Размер разделяемой памяти мультипроцессора ограничен – Ms байт.
4. Все скалярные процессоры работают с одинаковой скоростью по принципу SIMD со скоростью SGPU элементарных операций в секунду.
5. Должна иметь место дополнительная операция – обращение к оперативной памяти SpRAM специализированного вычислительного модуля на чтение или
запись. Задержка при обращении K определяется количеством элементарных операций, требуемых при обращении к одному числу одинарной точности в глобальной памяти специализированного вычислительного модуля.
Модифицированная согласно перечисленным уточнениям и дополнениям
новая модель PRAM представлена на рис. 2.8.
Таким образом, PRAM модель с перечисленными уточнениями и дополнениями допускает применение графических процессоров в качестве специализированных вычислительных модулей для общих вычислений.
11
qmax=n*qwarp
Задержка K
SIMD
Чтение
Чтение
Оперативная память RAM
SIMD
…
Запись
СпЦПУ_n
qwarp
SIMD
…
SIMD
SIMD
SIMD
…
СпЦПУ_1
qwarp
Данные СпЦПУ
Данные ЦПУ
ЦПУ
Память
SpRAM MS
Рис. 2.8. Структурная схема модифицированной модели PRAM
В третьей главе исследуется вопрос разработки алгоритмов повышения
производительности параллельных вычислений с использованием специализированных вычислительных модулей, в качестве которых могут использоваться графические процессоры. Исследуются методы разработки алгоритмов обработки
информации с использованием специализированных вычислительных модулей и
разрабатываются алгоритмы принятия решений о переносе операций вычисления
на графический процессор и кэшировании данных.
Для организации параллельных вычислений в многопроцессорных вычислительных системах с гетерогенной архитектурой «CPU – GPU», был разработан
общий алгоритм повышения производительности гетерогенной компьютерной системы, который приведен на рис. 5.
Начало
Обработка исходных данных
Декомпозиция задачи
на этапы
Цикл обработки этапов
Обработка
полученных
результатов
CPU
Принятие решения о
переносе вычислений
этапа и кэшировании
Перенос
вычислений
на CPU
Конец
Выполнение
вычислений
этапа на CPU
GPU
Перенос
вычислений
на GPU
Обработка
промежуточных
данных
Выполнение
вычислений
этапа на GPU
Рис. 5. Алгоритм повышения производительности параллельных вычислений в
многопроцессорных вычислительных системах с гетерогенной архитектурой
12
На основании исследований аналитической модели (см. главу 2) разработан
алгоритм для оценки производительности параллельных вычислений на специализированных вычислительных модулях, включающий множество известных параметров системы «центральный процессор – графический процессор» и множество известных параметров анализируемого алгоритма (рабочая и шаговая сложность).
В соответствии с моделью специализированного мультипроцессора, разработанной в главе 2, которая является общей для всех моделей графических процессоров, сформирован абстрактный вычислительный мультипроцессор. Для абстрактного вычислительного мультипроцессора имеем следующее множество параметров {qmax, qwarp, Ms, SGPU, K}, учитывающих основные характеристики реальных специализированных мультипроцессоров. Для разработки параллельного алгоритма под предложенную модель можно воспользоваться методом создания
расписания распределения потоков вычислений, который применяется в базовой
PRAM модели, учитывая изложенные выше уточнения и дополнения. В этом случае формулу (5) для верхней оценки времени исполнения алгоритма на PRAM
машине следует скорректировать. PRAM модель теперь должна быть представлена в виде одного абстрактного вычислительного мультипроцессора, на котором
все скалярные процессоры работают пучками по принципу горизонтального параллелизма. Выражение вычисления верхней оценки временной сложности алгоритма принимает вид
 W (N )

 p 
  S(N ) ,
TC ( N , p)  O
 ceil 
q

 p

 warp 


(7)
где
ceil – функция округления дроби до ближайшего большего целого числа,
p – число потоков алгоритма, предназначенных для обработки N элементов
данных, p < qmax.
В третьей главе исследуются учет операций обращения к глобальной памяти графического процессора, определение необходимости ввода дополнительного
параметра алгоритма – сложность обращения к глобальной памяти R(N), которой
является суммарное количество обращений на чтение и запись из глобальной памяти графического процессора, требуемое для обработки N элементов данных.
Показано, что данный вид операций должен присутствовать в любом параллельном алгоритме для графических процессоров, который обрабатывает входные
данные. Вследствие того, что процессоры работают в режиме SIMD и выполняют
команды последовательно пучками по принципу горизонтального параллелизма,
то формула верхней оценки времени исполнения параллельного алгоритма на одном абстрактном вычислительном мультипроцессоре принимает вид
 W ( N )  R( N )

 p 
  S(N ) .
TCGPU ( N , p)  O
 ceil 
q



p
 warp 


(9)
Исходя из выражения (9), более высокая производительность будет у того
алгоритма, который будет иметь меньшее количество обращений к SpRAM. Тогда
выражение для определения верхней оценки времени исполнения алгоритма на
одном абстрактном вычислительном мультипроцессоре имеет вид
13
TM ( N , p) 
 p 
WM ( N )  RM ( N )  K
  S(N ) ,
 ceil 
q

S GPU  p
warp


(9)
где WM(N) – количество элементарных операций одного процессора абстрактного вычислительного мультипроцессора в PRAM,
RM(N) – количество обращений к SpRAM из одного процессора абстрактного вычислительного мультипроцессора в PRAM.
Алгоритм декомпозиции задачи реализуется при выполнении следующих
условий:
1. Требуемый объём глобальной памяти графического процессора для вычисления на i-м этапе алгоритма M`GPU должен быть меньше, чем фактический
объём глобальной памяти графического процессора MGPU, т.е. M`GPU < MGPU.
2. Требуемый объём памяти констант для вычисления на i-м этапе алгоритма M`C должен быть меньше, чем фактический объём памяти констант MС, т.е.
M`C < MC.
3. Между абстрактными вычислительными мультипроцессорами не требуется синхронизация.
4. Все абстрактные вычислительные мультипроцессоры должны работать со
своим участком глобальной памяти графического процессора.
Алгоритм декомпозиции задачи представлен на рис. 6.
Обработка исходных данных
Начало
Цикл разбиения этапов
Использование
выделенной
памяти
Да
Нет
Нет
Требуется
синхронизация
Да
M`C < MС
Да
M`GPU < MGPU
Нет
Да
Нет
Сохранение
этапа
Сохранение
списка этапов
Конец
Рис. 6. Алгоритм декомпозиции параллельного алгоритма
Количество этапов вычислений, полученное после применения алгоритма
декомпозиции, может варьироваться в зависимости от размера обрабатываемых
данных, объёмов глобальной памяти и памяти констант графического процессора.
Поэтому формула определения количества этапов вычислений может быть представлена в виде:
14
B N  
N
.
M GPU  M c
(10)
На основании формулы (8) можно записать выражение для верхней оценки
времени исполнения этапа алгоритма
 N 
TG ( N )  ceil 
  TM ( M , p) ,
M P
(11)
где M – количество элементов данных, предназначенных для обработки на одном абстрактном вычислительном мультипроцессоре,
P – количество абстрактных вычислительных мультипроцессоров графического процессора,
TM – верхняя оценка времени исполнения i-го этапа алгоритма на одном абстрактном вычислительном мультипроцессоре по формуле (9).
В исследованиях в третьей главе показано, что для учета передачи данных
между оперативной памяти и памятью SpRAM, следует ввести ещё два дополнительных параметра: суммарное количество входных данных этапа алгоритма в
байтах NiHD и суммарное количество выходных данных этапа алгоритма в байтах
NiDH. Тогда выражение вычисления общего времени работы этапа алгоритма принимает вид
TGPU ( N ) 
N iHD ( N )
N (N )
,
 TG ( N )  iDH
S HD
S DH
(12)
где SHD и SDH – константы скорости передачи данных между RAM и SpRAM
(байт/с).
На основе полученной модели показано, что для анализа и сравнения параллельных алгоритмов необходимо использовать следующие параметры алгоритма:
1. Суммарная шаговая сложность S(N)
S(N ) 
B( N )
 S (N ) .
(13)
i
i 1
2. Суммарная рабочая сложность W(N)
W (N ) 
B( N )
W ( N ) .
(14)
i
i 1
3. Суммарная сложность обращения к глобальной памяти специализированного вычислительного модуля R(N)
R( N ) 
B( N )
 R (N ) .
i 1
(15)
i
4. Суммарный объём данных, передаваемых между оперативной памятью
вычислительной компьютерной системы и глобальной памятью специализированного вычислительного модуля NHD и NDH
N HD ( N ) 
N DH ( N ) 
B( N )
N
i 1
i HD
(N )
.
B( N )
N
i 1
i DH
(16)
(N )
С учетом выражений (13)-(16) верхняя оценка времени работы алгоритма на
графическом процессоре в среде CPU-GPU вычисляется следующим выражением
TGPU ( N ) 
N HD ( N ) B ( N )
N (N )
  Ti G ( N )  DH
.
S HD
S DH
i 1
(17)
15
Также в третьей главе представлены результаты исследований зависимости
верхней оценки времени работы алгоритма на графическом процессоре в среде
CPU-GPU от пропускной способности SpRAM и от количества обрабатываемых
данных. Результаты исследований приведены на рис. 7.
0,25
GPU-1
T GPU, мс
GPU-2
GPU-3
0,2
0,15
0,1
0,05
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16 17 18 19 20
7
N, 10
Рис. 7. Исследование зависимости верхней оценки времени работы алгоритма
Из рис. 7 видно, что одним из основных направлений уменьшения времени
выполнения алгоритма является уменьшение потока данных между оперативной
памятью и SpRAM. Основным методом решения данной проблемы является применение кэширования данных во внутренней памяти графического процессора.
Показано, что вследствие того, что массивы исходных данных для обработки на графическом процессоре являются двумерными, то требуемую для вычисления одного элемента область памяти исходных данных произвольной формы в
этом массиве можно ограничить прямоугольной областью шириной а байт и высотой b байт. Область кэширования тоже можно представить в виде прямоугольной области размерами а` на b`. Если M0 – объём одного элемента данных, Ms –
объем общей памяти абстрактного вычислительного мультипроцессора, и доступную разделяемую память необходимо использовать полностью, то количество
байт, которые помещаются в разделяемую память абстрактного вычислительного
мультипроцессора равно
Q = а` * b` ,
(19)
где Q < Ms / M0.
С помощью этой кэшированной области памяти можно обработать число
элементов, вычисляемое следующим образом
 Q 
n
.
a b
(20)
Таким образом, можно рассчитать количество обращений к памяти при обработке N элементов данных с использованием кэширования
Rc ( N ) 
N
K .
n
(21)
Для того, чтобы такое кэширование повысило производительность вычислений, необходимо, чтобы выполнялись следующие условия
16
 R( N )
 R ( N )  1,
 c
Q  a   b,
a  a , b  b.


(22)
Таким образом, решение о выборе того или иного PRAM алгоритма на каждом этапе вычислений в автоматическом режиме принимается по правилу (22).
Алгоритм принятия решения о целесообразности переноса вычислений на
графический процессор и использования разделяемой памяти мультипроцессоров
для кэширования данных изображен на рис. 8.
 W (N )

TCPU ( N , p)  O
 S ( N ) 
 p

Начало
Да
 R( N )
 R (N )  1
 c
Q  a  b
a  a , b  b


Нет
TGPU C ( N / n) 
N HD ( N / n) B ( N )
N ( N / n)
  Ti G ( N / n)  DH
S HD
S DH
i 1
TGPU ( N ) 
TGPU-C< TCPU
Да
N HD ( N ) B ( N )
N (N )
  Ti G ( N )  DH
S HD
S DH
i 1
Нет
TGPU< TCPU
Вычисление на
CPU
Да
Вычисление на
GPU
Вычисление на
GPU с кэш-ем
Конец
Рис. 8. Алгоритм принятия решения о переносе операций вычисления на
графический процессор и кэшировании данных
17
На рис. 8 используются следующие обозначения: TCPU – время вычислений
на центральном процессоре, TGPU – время вычислений на графическом процессоре, TGPU-С – время вычислений на графическом процессоре с использованием кэширования.
Как видно из рис. 8, что при принятии решения о переносе вычислений на
GPU, предварительно производится оценка времени выполнения алгоритма на
CPU в соответствие с (6) и оценка времени выполнения алгоритма на GPU в соответствие с (17). После этого осуществляется сравнение полученных временных
показателей и по результату принимается решение о переносе вычислений.
Таким образом, разработана методика для оценки производительности параллельных вычислений на специализированных вычислительных модулях,
включающую множество известных параметров системы «центральный процессор – графический процессор» и анализируемого алгоритма (рабочая и шаговая
сложность).
На основе модели, представленной в главе 2, разработан алгоритм повышения производительности параллельных вычислений на специализированных вычислительных модулях, который включает в себя алгоритм декомпозиции задачи
на этапы и алгоритм принятия решения о переносе вычислений на специализированный вычислительный модуль и кэшировании данных.
В четвертой главе производится исследование эффективности разработанных алгоритмов обработки информации с использованием распараллеленных
графических процессоров. В диссертационной работе представлена разработанная
структурная схема программного обеспечения, которая изображена на рис. 9.
Исходный код
Память
констант
Схема
программного
дерева
Оптимизирован
ный
исполняемый
код
Модуль построения и
обработки текстового
дерева
Память
переменных
Модуль построения и
обработки
программного дерева
БД текстовых
деревьев
Модуль принятия
решений о переносе
вычислений
Модуль обработки
программного кода
Модуль
выполнения
Конечный
автомат
Рис. 9. Структурная схема разработанного программного обеспечения
Согласно рис. 9 входным документом программного обеспечения является
исходный код программы параллельной обработки данных. Он поступает в модуль построения и обработки текстового дерева, в котором происходит первона-
18
чальная обработка исходного кода и построение на его основе текстового дерева.
Для работы с текстовым деревом используется память констант и память переменных.
Полученное текстовое дерево передается на обработку в модуль построения
и обработки программного дерева. Вышеуказанный модуль для построения программного дерева использует базу данных ранее обработанных текстовых деревьев, что позволяет существенно ускорить построение программного дерева.
Программное дерево передается в модуль принятия решений о переносе
вычислений, где происходит разбиение исходного алгоритма на этапы и принятие
решения о переносе вычислений на GPU для каждого этапа с дальнейшей передачей в модуль обработки программного кода.
Модуль обработки программного кода производит необходимые изменения
в исходном программном коде для получения конечного автомата выполнения
программы, передаваемого в модуль выполнения, генерирующего конечный исполняемый код.
Ниже представлен пример объединения двух шейдеров, в котором можно
увидеть неоптимальные участки кода. Код первого шейдера:
#extension GL_ARB_texture_rectangle : enable uniform sampler2DRect input_tex;
void main(void {
vec4 inp1 = texture2DRect (input_tex, gl_TexCoord[0].st); vec4 inp2 = texture2DRect (input_tex, gl_TexCoord[0].st + vec2(0.0, 1.0));
gl_FragColor = inp1 * inp2;}
Код второго шейдера:
#extension GL_ARB_texture_rectangle : enable uniform sampler2DRect input_tex; uniform sampler2DRect shader1_tex; uniform float coeff;
void main(void {
vec4 first = texture2DRect(shader1_tex, gl_TexCoorc [0].st);
vec4 inp = first + texture2DRect(input_tex, gl_TexCoorc [0].st);
gl_FragColor = inp * coeff;}
Проведем слияние последовательности этих шейдеров:
#extension GL_ARB_texture_rectangle : enable uniform sampler2DRect input_tex; uniform float
coeff;
void main(void {
vec4 inp1 = texture2DRect (input_tex, gl_TexCoord[0].st); vec4 inp2 = texture2DRect (input_tex, gl_TexCoord[0].st + vec2(0.0, 1.0));
vec4 result = inp1 * inp2; vec4 first = result;
vec4 inp = first + texture2DRect(input_tex,
gl_TexCoord[0].st);
gl_FragColor = inp * coeff;}
Итоговый обработканный код шейдера будет выглядеть следующим
образом:
#extension GL_ARB_texture_rectangle : enable uniform sampler2DRect input_tex; uniform float
coeff;
void main(void {
vec4 inp1 = texture2DRect(input_tex, gl_TexCoorc [0].st); vec4 inp2 = texture2DRect(input_tex, gl_TexCoorc [0].st + vec2(0.0, 1.0));
vec4 result = inp1 * inp2; vec4 inp = result + inp1; gl_FragColor = inp *
coeff;}
В качестве выходных данных программа предоставляет схемы обработанного программного дерева и сгенерированного автомата, а также полученные шейдеры. Схема обработанного программного дерева представлена на рис. 10.
19
DATA: bg
SHADER:
ad
DATA: bg
0
1
0
ROOT
VAR: advanceValue
IF
0
1
SHADER:
tr
DATA: out
1
DATA: in
0
0
bleBW
0
trackTreshold
1
2
NOP
SHADER:
bw
DATA: in
SHADER:
er
VAR: enableER
0
0
ENDIF
ADD
DIV2
1
IF
ENDIF
2
1
SHADER:
er2
NOP
Рис. 10. Обработанное программное дерево
Как видно из рис. 10, программное дерево состоит из узлов различных типов, каждый из которых описывает поведение программы: корневой узел; узел с
данными; узел с переменной; узел с отсутствием операций; узел с шейдером; узел
с арифметической операцией; узел с началом ветвления; узел с завершением ветвления.
Программа позволяет проводить гибкую манипуляцию опциями обработки
алгоритмов.
В ходе исследования эффективности разработанных алгоритмов обработки
информации было рассмотрено две задачи.
В качестве первой тестовой задачи, использовалась задача нахождения нулевых битовых векторов, которая решается с применением генетических алгоритмов. При решении указанной задачи основное время работы занимают параллельные вычисления значений функций приспособленности различных особей,
операций скрещивания и мутации. Используемый алгоритм ее решения имеет
свойства, характерные для многих генетических алгоритмов:
1. Представление особи в виде битовой строки.
2. Малое число логических операций при вычислении функции приспособленности, выполнении мутации и скрещивания.
3. Последовательный доступ к памяти.
Данные свойства позволяют эффективно использовать вычисления на графическом процессоре.
Для проведения экспериментальной оценки эффективности работы алгоритма первой тестовой задачи использовалась тестовая компьютерная система
следующей конфигурации: центральный процессор Intel Core 2 Quad Q9400
(2.66GHz), ОЗУ 8GB, графическая карта Nvidia GeForce GTX560 2Gb 336 потоков,
операционная система Windows 7 х64, компилятор MS Visual Studio 2008 в release
режиме.
20
При исследовании производительности первой тестовой задачей изменялось
количество 32-битных целых чисел в массиве (M) и число параллельных потоков
(N).
Исследовалось среднее время t, потраченное на получение нового поколения для различного количества 32-битных целых чисел в массиве и числа параллельных потоков. Исследования проводились с использованием технологий
OpenCL и NVIDIA CUDA. Результаты исследований среднего времени, потраченного на получение нового поколения, для параметра M = 10 приведены на рис. 11.
200
240
t, мс
t, мс
180
220
200
160
OpenCL
CUDA
180
140
160
120
140
100
120
80
100
80
60
OpenCL - 0
CUDA - 0
60
40
40
20
20
0
0
128
1024
10240
102400
128
N
1024
10240
102400
N
а
б
Рис. 11. Среднее время, потраченное распараллеленной системой на получение
нового поколения, при M =10, а: OpenCL – базовый алгоритм, OpenCL-О – разработанный алгоритм, б: CUDA– базовый алгоритм, CUDA-О – разработанный алгоритм
На рис. 11 графики OpenCL и CUDA показывают время выполнения алгоритма без оптимизации, OpenCL-O и CUDA-O – с применением разработанного
алгоритма оптимизации. Как видно из графиков, при значении параметра M = 10
применение разработанного алгоритма оптимизации дает рост производительности: в случае применения OpenCL время обработки для 128 потоков сокращается
с 1,08 мс до 0,75 мс и с 219 мс до 84,2 мс для 102400 потоков. В случае применения NVIDIA CUDA время обработки сокращается с 0,85 мс до 0,74 мс для 128 потоков и со 189 мс до 48,4 мс для 102400 потоков.
Результаты исследований среднего времени, потраченного на получение
нового поколения, для параметра M = 100 приведены на рис. 12.
1000
t, мс
900
1200
t, мс
1100
OpenCL
1000
800
900
CUDA
700
800
600
700
OpenCL - 0
600
500
500
400
400
300
300
200
200
CUDA - 0
100
100
0
0
128
1024
10240
102400
1024000 N
128
1024
10240
102400
1024000 N
а
б
Рис. 12. Среднее время, потраченное распараллеленной системой на получение
нового поколения, при M =100, а: OpenCL – базовый алгоритм, OpenCL-О – разработанный алгоритм, б: CUDA– базовый алгоритм, CUDA-О – разработанный
алгоритм
21
Как видно из рис. 12, применение разработанного алгоритма совместно с
технологией OpenCL, при значении параметра M=100, может быть получено увеличение производительности, а именно время обработки для 128 потоков сокращается с 0,77 мс до 0,38 мс и с 1177 мс до 1030 мс для 102400 потоков. В случае
применения NVIDIA CUDA – с 0,08 мс до 0,15 мс для 128 потоков и с 941 мс до
237,4 мс для 102400 потоков. Это объясняется тем, что технология NVIDIA
CUDA является специализированной для использования на графических процессорах фирмы NVIDIA, тогда как технология OpenCL является более универсальной, но при этом менее производительной.
При каждом изменении параметров задачи сравнивалось ускорение S(k) для
однопоточного вычисления на центральном процессоре и многопотокового вычисления на графическом процессоре с применением разработанного алгорима
оптимизации вычислений. На рис. 13 представлены результаты сравнительных
испытаний для различных значений N.
1,4
2,5
Sk
1,2
Sk
CUDA
2
CUDA
1
1,5
0,8
OpenCL
1
0,6
OpenCL
0,4
0,5
0,2
0
128
1024
10240
102400
1024000 N
0
128
1024
10240
102400
N
а
б
Рис. 13. Зависимость показателя эффективности распараллеленной системы, а –
при M =10, б – M =100
Как видно из графика, приведенного на рис. 13, применение разработанного
алгоритма совместно с технологией OpenCL по сравнению с однопоточным центральным процессором дает стабильное повышение производительности до 70% –
с 15 GFLOP/s до 21 GFLOP/s. Применение технологии NVIDIA CUDA позволяет
получить существенный рост производительности с 15 до 34 GFLOP/s (до 250%),
но до определенного предела количества параллельных потоков.
Вторая тестовая задача представляет собой алгоритм расширенного микширования аудиопотоков. Тестовые входные данные для микширования представляют собой 8 последовательностей по 320 семплов. Все семплы сгенерированы
случайно. В качестве тестового стенда использован компьютер с процессором Intel Core i3-4130, 4 ГБ оперативной памяти, графическая карта NVIDIA GeForce
GT730. Результаты для базового и разработанного алгоритмов на выходе идентичны. Время работы алгоритма приведены в таблице 1.
Как видно из результатов тестирования, представленных в табл. 1, полученные с помощью второй тестовой задачи, что применение оптимизированного алгоритма в вычислительном устройстве уменьшает время на обработку данных до
0,2226 x 10-3 с вместо 1,351 x 10-3 с – временем обработки данных базовым алгоритмом.
22
Таблица 1 – Результаты исследования алгоритма расширенного микширования
аудиопотоков
Применяемый алгоритм
Базовый алгоритм
Разработанный алгоритм
Время работы
алгоритма, мс
1,351
2,226 x 10-1
Дисперсия
результатов
3,757
1,426 x 10-3
Алгоритм расширенного микширования с использованием графического
процессора вместе с разработанным алгоритмом программной оптимизации внедрен в программное обеспечение микропроцессорных телекоммуникационных систем обмена аудио и видеоинформацией с повышением производительности и
быстродействия обработки потоковых данных в ОКР ОАО МРЗ. Результаты экспериментального применения полученного программного обеспечения приведены
в таблице 2.
Таблица 2 – Результаты экспериментального исследования программного обеспечения микропроцессорной системы обмена аудио-видео информацией
Применяемый алгоритм
Базовый алгоритм без
применения GPU
Разработанный алгоритм
с применением GPU
Время обработки одного
потока, мс
15 абонен2 абонента
тов
Задержка вывода аудиосигнала, с
15 абонен2 абонента
тов
3,5
68,6
9 x 10-3
1,1
2,4
2,6
7,1 x 10-3
39 x 10-3
Экспериментальное исследование программного обеспечения показало, что
применение разработанного алгоритма позволило существенно снизить задержку
вывода аудиопотока, что показывает увеличение быстродействия компьютерной
системы и соответственно производительности обработки данных.
Проведенные исследования показали, что применение разработанных алгоритмов повышения производительности гетерогенной компьютерной системы
позволяет увеличить производительность распараллеленных многопотоковых вычислений при применении в качестве специализированных вычислительных модулей графических процессоров. В частности при применении технологии
OpenCL увеличение производительности вычислений составляет до 70%, при
применении технологии NVIDIA CUDA увеличение производительности вычислений составляет до 250%.
ОСНОВНЫЕ ВЫВОДЫ И РЕЗУЛЬТАТЫ РАБОТЫ
1. Разработана и исследована аналитическая модель оценки производительности параллельных вычислений на специализированных вычислительных
модулях. Результаты исследований показали возможность увеличения производительности вычислительных компьютерных систем обработки с использованием
специализированных вычислительных модулей.
23
2. Разработана и исследована новая PRAM-модель гетерогенной компьютерной вычислительной системы обработки данных, которая допускает применение графических процессоров в качестве специализированных вычислительных
модулей для общих вычислений.
3. Исследован и разработан алгоритм повышения производительности параллельных вычислений с использованием специализированных вычислительных
модулей, который включает в себя алгоритм декомпозиции задачи на этапы и алгоритм принятия решения о переносе вычислений на специализированный вычислительный модуль и кэшировании данных.
4. Разработаны структуры программного обеспечения нового алгоритма
повышения производительности и распараллеливания, которые позволяют реализовать программно компьютерную систему более эффективной обработки данных
по сравнению с существующими.
5. Разработаны новые более эффективные методы создания программного
обеспечения, позволяющие существенно увеличить рост производительности вычислений в гетерогенной компьютерной вычислительной системе. Экспериментальные исследования эффективности вычислительной системы, с использованием в ней новых разработанных алгоритмов, показали увеличение производительности вычислений в зависимости от применяемой технологии в среднем от 70%
до 250%, по сравнению с существующими вычислительными системами.
ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ
В изданиях, рекомендованных ВАК
1. Колпаков А.А. Теоретическая оценка роста производительности вычислительной системы при использовании нескольких вычислительных устройств
[Текст] / Колпаков А.А. // В мире научных открытий, 2012. – №1. – С. 206-209.
(Личное участие 100%).
2. Колпаков А.А. Оптимизация генетических алгоритмов при использовании вычислений на графических процессорах на примере задачи нулевых битовых векторов [Текст] / Колпаков А.А. // Информационные системы и технологии,
2013. – №2(76). – С. 22-28. (Личное участие 100%).
3.
В изданиях из списка РИНЦ
1. Колпаков А.А. Аспекты оценки увеличения производительности
вычислений при распараллеливании процессоров вычислительных систем [Текст]
/ Колпаков А.А., Кропотов Ю.А. // Методы и устройства передачи и обработки
информации, 2011. – №1(13). – С.124-127. (Личное участие 50%).
2. Колпаков А.А. Методы проектирования телекоммуникационных информационно – управляющих систем аудиообмена в сложной помеховой обстановке
/Кропотов Ю.А., Проскуряков А.Ю., Белов А.А., Колпаков А.А. // Системы
управления, связи и безопасности, 2015. - №2. (Личное участие 25%).
3. Колпаков А.А. Модели, алгоритмы системы автоматизированного мониторинга и управления экологической безопасности промышленных производств
/Кропотов Ю.А., Проскуряков А.Ю., Белов А.А., Колпаков А.А. // Системы
управления, связи и безопасности, 2015. - №2. (Личное участие 25%).
24
В других изданиях
1. Колпаков А.А. Решение задач общего назначения на графическом процессоре [Текст] / Колпаков А.А. // Материалы XVII международной конф. по вычислительной механике и современным прикладным программным системам
(ВМСППС'2011) - М.: МАИ-ПРИНТ, 2011. С. 190-191. (Личное участие 100%).
2. Колпаков А.А. Исследование и анализ методов решение задач общего
назначения на графическом процессоре [Электронный ресурс] / Колпаков А.А. //
III Всероссийские научные Зворыкинские чтения. Сборник тезисов докладов III Всероссийской межвузовской научной конференции, 2011. – С.557. (Личное участие
100%).
3. Колпаков А.А. Анализ эффективности реализации генетических алгоритмов при использовании вычислений на видеокартах [Электронный ресурс] / Колпаков А.А. // IV Всероссийские научные Зворыкинские чтения. Сборник тезисов
докладов IV Всероссийской межвузовской научной конференции, 2012. – С.162.
(Личное участие 100%).
4. Колпаков А.А. Анализ эффективности реализации генетических алгоритмов при использовании вычислений на видеокартах на примере задачи про расстановку ферзей [Текст] / Колпаков А.А. // Материалы XVIII международной
конф. по вычислительной механике и современным прикладным программным
системам (ВМСППС'2013) - М.: МАИ-ПРИНТ, 2013. С. 206-207. (Личное участие
100%).
5. Колпаков А.А. Оптимизация генетических алгоритмов для использования
в системах с массово-параллельной архитектурой [Электронный ресурс] / Колпаков А.А. // VI Всероссийские научные Зворыкинские чтения. Сборник тезисов докладов VI Всероссийской межвузовской научной конференции, 2014. – С.567.
(Личное участие 100%).
6. Колпаков А.А. Многопотоковый алгоритм аудио микширования для вычисления на графических картах [Текст] / Колпаков А.А. // Материалы 25-й международной Крымской конференции «СВЧ-техника и телекоммуникационные
технологии» (КрыМиКо’2015). – Севастополь, 2015 (Личное участие 100%).
1/--страниц
Пожаловаться на содержимое документа