Программная модель многопоточного процессора на базе графических ускорителей
Произведен обзор и сравнение систем программирования общего программирования для графических процессоров (GPGPU), выделены особенности системы программирования, а также рассмотрен пример вычисления операции SAXPY (умножение вектора на скаляр и сложение векторов) при помощи GPGPU Nvidia CUDA....
Збережено в:
Дата: | 2008 |
---|---|
Автори: | , |
Формат: | Стаття |
Мова: | Russian |
Опубліковано: |
Інститут кібернетики ім. В.М. Глушкова НАН України
2008
|
Назва видання: | Математичне та комп'ютерне моделювання. Серія: Фізико-математичні науки |
Онлайн доступ: | http://dspace.nbuv.gov.ua/handle/123456789/18677 |
Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
Назва журналу: | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
Цитувати: | Программная модель многопоточного процессора на базе графических ускорителей / А.Е. Зименко, А.А. Дячук // Математичне та комп'ютерне моделювання. Серія: Технічні науки: зб. наук. пр. — Кам’янець-Подільський: Кам'янець-Подільськ. нац. ун-т, 2008. — Вип. 1. — С. 68-75. — Бібліогр.: 3 назв. — рос. |
Репозитарії
Digital Library of Periodicals of National Academy of Sciences of Ukraineid |
irk-123456789-18677 |
---|---|
record_format |
dspace |
spelling |
irk-123456789-186772011-04-08T12:03:51Z Программная модель многопоточного процессора на базе графических ускорителей Зименко, А.Е. Дячук, А.А. Произведен обзор и сравнение систем программирования общего программирования для графических процессоров (GPGPU), выделены особенности системы программирования, а также рассмотрен пример вычисления операции SAXPY (умножение вектора на скаляр и сложение векторов) при помощи GPGPU Nvidia CUDA. A review and comparison of the systems of programming of the general programming is produced for graphic processors (GPGPU), the features of the system of programming are selected, and also the example of calculation of operation of SAXPY (multiplying of vector by a scalar and addition of vectors) is considered through GPGPU Nvidia CUDA. 2008 Article Программная модель многопоточного процессора на базе графических ускорителей / А.Е. Зименко, А.А. Дячук // Математичне та комп'ютерне моделювання. Серія: Технічні науки: зб. наук. пр. — Кам’янець-Подільський: Кам'янець-Подільськ. нац. ун-т, 2008. — Вип. 1. — С. 68-75. — Бібліогр.: 3 назв. — рос. XXXX-0060 http://dspace.nbuv.gov.ua/handle/123456789/18677 519.688 ru Математичне та комп'ютерне моделювання. Серія: Фізико-математичні науки Інститут кібернетики ім. В.М. Глушкова НАН України |
institution |
Digital Library of Periodicals of National Academy of Sciences of Ukraine |
collection |
DSpace DC |
language |
Russian |
description |
Произведен обзор и сравнение систем программирования общего программирования для графических процессоров (GPGPU), выделены особенности системы программирования, а также рассмотрен пример вычисления операции SAXPY (умножение вектора на скаляр и сложение векторов) при помощи GPGPU Nvidia CUDA. |
format |
Article |
author |
Зименко, А.Е. Дячук, А.А. |
spellingShingle |
Зименко, А.Е. Дячук, А.А. Программная модель многопоточного процессора на базе графических ускорителей Математичне та комп'ютерне моделювання. Серія: Фізико-математичні науки |
author_facet |
Зименко, А.Е. Дячук, А.А. |
author_sort |
Зименко, А.Е. |
title |
Программная модель многопоточного процессора на базе графических ускорителей |
title_short |
Программная модель многопоточного процессора на базе графических ускорителей |
title_full |
Программная модель многопоточного процессора на базе графических ускорителей |
title_fullStr |
Программная модель многопоточного процессора на базе графических ускорителей |
title_full_unstemmed |
Программная модель многопоточного процессора на базе графических ускорителей |
title_sort |
программная модель многопоточного процессора на базе графических ускорителей |
publisher |
Інститут кібернетики ім. В.М. Глушкова НАН України |
publishDate |
2008 |
url |
http://dspace.nbuv.gov.ua/handle/123456789/18677 |
citation_txt |
Программная модель многопоточного процессора на базе графических ускорителей / А.Е. Зименко, А.А. Дячук // Математичне та комп'ютерне моделювання. Серія: Технічні науки: зб. наук. пр. — Кам’янець-Подільський: Кам'янець-Подільськ. нац. ун-т, 2008. — Вип. 1. — С. 68-75. — Бібліогр.: 3 назв. — рос. |
series |
Математичне та комп'ютерне моделювання. Серія: Фізико-математичні науки |
work_keys_str_mv |
AT zimenkoae programmnaâmodelʹmnogopotočnogoprocessoranabazegrafičeskihuskoritelej AT dâčukaa programmnaâmodelʹmnogopotočnogoprocessoranabazegrafičeskihuskoritelej |
first_indexed |
2025-07-02T19:37:20Z |
last_indexed |
2025-07-02T19:37:20Z |
_version_ |
1836565178691354624 |
fulltext |
Математичне та комп’ютерне моделювання
68
УДК 519.688
А. Е. Зименко1, А. А. Дячук2
1ЗАТ “Преттль-Кабель Украина”, г. Каменец-Подольский
2Институт проблем моделирования в энергетике
им. Г. Е. Пухова НАН Украины, г. Киев
ПРОГРАММНАЯ МОДЕЛЬ МНОГОПОТОЧНОГО
ПРОЦЕССОРА НА БАЗЕ ГРАФИЧЕСКИХ УСКОРИТЕЛЕЙ
Произведен обзор и сравнение систем программирования
общего программирования для графических процессоров
(GPGPU), выделены особенности системы программирования,
а также рассмотрен пример вычисления операции SAXPY (ум-
ножение вектора на скаляр и сложение векторов) при помощи
GPGPU Nvidia CUDA.
Ключевые слова: графический процессор, архитектура
графического процессора, программные модели, GPGPU,
Nvidia CUDA, параллельное программирование.
Вступление. Анализ вычислительной мощности современных
графических процессоров, которые появлялись в последние годы,
показывает, что на текущий момент времени она в десятки раз выше
мощности многоядерных процессоров (рис. 1).
Рис. 1. Динамика роста вычислительной мощности
современных процессоров
Особый интерес представляют даже не показатели мощности, а
динамика ее роста. Если еще три-четыре года назад быстродействие
GPU Nvidia GeForce NX 5800 и центральных процессоров было фак-
тически идентичным (около десяти-двадцати гигафлоп), то к концу
прошлого года мощности процессоров выросли всего в несколько
раз, а GPU Nvidia GeForce 8800 GTX демонстрирует почти три с по-
ловиной сотни гигафлоп.
На наш взгляд, подобный отрыв сохранится еще несколько лет,
посколько слишком велико различие в архитектурах (рис. 2) универ-
© А. Е. Зименко, А. А. Дячук, 2008
Серія: Технічні науки. Випуск 1
69
сальных процессоров общего назначения (CPU – central processor
unit) и процессоров, ориентированных на обработку графики (GPU –
graphic processor unit). Решение задачи максимального использования
возможностей графических процессоров представляется весьма мно-
гообещающим [1].
Рис. 2. Архитектуры CPU и GPU
Высокий уровень параллельной нагрузки, характерный для
трехмерной компьютерной графики, воспроизводимой в режиме ре-
ального времени, предъявляет крайне высокие требования к пропуск-
ной способности арифметического блока и потоковой памяти, но
вместе с тем допускает весьма существенные задержки при выполне-
нии отдельных вычислительных операций, поскольку окончательное
изображение выводится с интервалом 16 миллисекунд. Подобные
характеристики рабочей нагрузки определяют базовую архитектуру
графического процессора. Если процессор общего назначения оптими-
зируется с учетом требования минимизации задержек, то для графиче-
ского процессора главное – оптимизация пропускной способности.
Однако специализированная архитектура графических процес-
соров не всегда подходит для эффективного решения задач. Многие
приложения ориентированы на последовательную обработку и для
них характерны непредсказуемые всплески обращений к памяти. На-
пример, чтение из памяти для графических процессоров Nvidia со-
ставляет 400-600 тактов, а операция сложения 4 такта. При этом сле-
дует учитывать архитектуру конкретного графического процессора.
Вместе с тем, большинство задач требуют значительных вычисли-
тельных ресурсов и, поэтому, хорошо укладываются в характерную
для графического процессора схему интенсивной многоядерной
арифметической обработки. Для большинства задач важным при об-
работке больших объемов данных является высокая пропускная спо-
собность, и тут уже в полном блеске может продемонстрировать себя
подсистема потоковой памяти графического процессора [2].
Нестандартная утилизация производительности графических
процессоров может предоставить вычислительные мощности для ре-
шения задач в различных областях науки, причем независимо от уни-
кальных сверхсистем. Примером может быть появление технологии
Nvidia CUDA и программных продуктов для ее поддержки.
Математичне та комп’ютерне моделювання
70
Архитектура Nvidia CUDA. Архитектура CUDA (рис. 3) фор-
мируется множеством 32-разрядных SIMD-процессоров (Single In-
struction Multiple Data, один поток вычислений, обрабатывающих
несколько потоков данных). Каждый вычислитель SIMD-процессора
– это, по сути, фрагмент полноценного процессора: собственные
арифметико-логическое устройство, шина данных, регистровая па-
мять и т.д. Общим же для всего SIMD-процессора является декодер
команд, управляющий работой всех вычислителей, что и обеспечива-
ет синхронное выполнение ими одной и той же последовательности
операций над разными потоками данных.
Рис. 3. Архитектура графического процессора Nvidia GeForce 8
Основу аппаратных средств CUDA-вычислителя образует пото-
ковый процессор (SP, Streaming Processor), 32-битовое арифметико-
логическое устройство которого и предоставляет каждому потоку
вычислительные возможности.
Восемь SP, каждый со своим модулем регистровой памяти емко-
стью 32 KB, объединяются в потоковый мультипроцессор (SM,
Streaming Multiprocessor) – вычислительную машину SIMD-архитек-
туры, имеющую собственные механизм выборки и декодирования
команд, независимые кэши команд и данных (констант), диспетчер
потоков и блок памяти емкостью 16 KB, разделяемой между всеми
восемью SP. Работающий на тактовой частоте 1,35 GHz, SM способен
предоставлять более чем семистам потокам вычислительную мощ-
ность порядка 20 GFLOPS. SP выполняет одну SIMD-команду за
один машинный такт.
Два SM, дополненные более высокоуровневой кэш-памятью ко-
манд и данных, образуют кластер обработки текстур (TPC, Texture
Processing Cluster). И, наконец, из восьми TPC формируется собст-
венно CUDA-вычислитель, – массив потоковых процессоров (SPA,
Streaming Processor Array).
Таким образом, в распоряжении CUDA-программиста имеется
вычислительная система, пусть весьма сложная из-за разнообразия
Серія: Технічні науки. Випуск 1
71
адресных пространств и специфических механизмов, но все же осна-
щенная 128-мю 32-разрядными арифметико-логическими устройст-
вами. Эти устройства способны за один такт выполнять такие коман-
ды, как умножение с накоплением (обычно обозначаются MADD,
смысл этой трехоперандной операции понятен из псевдокода
A=A+B*C). Потенциальная пиковая производительность такой сис-
темы – 346 GFLOPS. Это одновременно и немало, и не очень много,
если учесть тот факт, что пиковая производительность четырехъя-
дерных процессоров класса Core 2 Duo совсем немного не дотягивает
до 100 GFLOPS [4].
Программные модели. Программная модель CUDA значитель-
но отличается от однопоточной схемы программирования централь-
ных процессоров, и от технологии параллельного программирования
графических ускорителей, не поддерживающих технологию CUDA.
Основным отличием является присутствие суперскалярного процес-
сора. Суперскалярный процессор представляет собой нечто большее,
чем обычный последовательный (скалярный) процессор. В отличие
от последнего, он может выполнять несколько операций за один такт.
Основными компонентами суперскалярного процессора являются
устройства для интерпретации команд, снабженные логикой, позво-
ляющей определить, являются ли команды независимыми, и доста-
точное число исполняющих устройств. Суперскалярные процессоры
реализуют параллелизм на уровне команд.
В однопоточной модели, центральный процессор обрабатывает
единственную (отдельную) команду из потока команд, которая обра-
батывает последовательные данные. Суперскалярный центральный
процессор может направить поток команд через множественные кон-
вейеры, но все-таки, это один поток команд, и степень параллелизма
команд строго ограничена данными и зависит от конкретной архи-
тектуры. Даже лучшие четырех, пяти, или шести путевые суперска-
лярные центральные процессоры могут выполнить в среднем 1.5 ко-
манды в такт, что и показывает, почему суперскалярные решения
редко содержат больше четырех-путевых конвейеров. SIMD расши-
рения позволяют центральному процессору извлекать не только не-
который параллелизм данных из кода, но и практический предел –
три или четыре операции в такт [2].
Другая модель – это универсальное применение графический
процессоров (GPGPU, рис. 4). Эта модель относительно новая и при-
влекает к себе все больше внимания в последние годы. По существу,
разработчики, для достижения высокой эффективности решения раз-
личных задач начали использовать графические процессоры как уни-
версальные процессоры. Здесь понятие “универсальные” означает
использование приложений с интенсивными вычислениями в различ-
ных научных и технических отраслях. При этом используются пик-
Математичне та комп’ютерне моделювання
72
сельные шейдеры графических ускорителей как универсальные с
одинарной точностью (FPU) сопроцессоры для операций с плаваю-
щей точкой. GPGPU обработка сильно распараллелена, но она трудно
реализуема из-за использования памяти вне графического процессора
при обработке больших наборов данных. Видеопамять, используемая
для текстур и расчета графики, может работать с любым видом дан-
ных в приложениях GPGPU, а различные потоки взаимодействуют
друг с другом через память вне видеокарты. Эти частые обращения к
памяти имеют тенденцию ограничивать производительность [1].
Рис. 4. Модели высокоэффективных вычислений
Слева на рисунке 4 – типичный универсальный центральный
процессор, который выполняет единственный поток, выборка потока
команд осуществляется из кеша команд и операций с данными, кото-
рые проходят через кэш данных от оперативной памяти. Средняя
часть рисунка 4, иллюстрирует модель GPGPU, которая использует
программируемые пиксельные шейдеры GPU для общих вычислений
операций. Это сильно распараллеленная модель вычислений, однако
ввод-вывод данных связан с частыми доступами к оперативной памя-
ти вне видеокарты.
Справа на рисунке 4 – модель Nvidia CUDA, с помощью которой
кэшируются меньшие порции данных на чипе и разделяется поток
данных среди кластера потоковых процессоров (шейдеров).
Особенности Nvidia CUDA. Важная особенность CUDA – это
то что, прикладным программистам, которые будут ее использовать,
не нужно писать код с определенно разделенными потоками. Аппа-
Серія: Технічні науки. Випуск 1
73
ратный менеджер потоков обрабатывает их автоматически. Автома-
тическое управление потоками важно, когда многопоточность мас-
штабируется на тысячи выполняемых потоков. Хотя это “легкие”
потоки (каждый работает на маленькой части данных) и вместе с тем
полностью самостоятельные потоки в обычном смысле. Каждый по-
ток имеет свой собственный стек, файл регистра, программный счет-
чик, и свою память [3].
Значение термина “поток” в этом контексте следует уточнить –
под потоком понимается некоторая исполняющаяся сущность – а
именно функция, значение которой вычисляется на основании опре-
деленного набора входных данных. Если решаемая задача допускает
формализацию на уровне многочисленных независимо и одновре-
менно выполняемых копий функции, обрабатывающих разные набо-
ры данных, – появляется возможность использовать производитель-
ность графического процессора для ускорения вычислений. В CUDA
бинарное представление одновременно исполняемых наборов функ-
ций-потоков (в системе команд вычислителей графических процессо-
ров) принято называть ядрами (kernels), и каждому потоку присваи-
вать свой специфический идентификатор. Формирование ядер осу-
ществляется с помощью кросс-компилятора, исполняющегося обыч-
ным центральным процессором компьютера, из кода, написанного на
C-подобном языке программирования.
Второе специфическое для CUDA понятие – блок потоков
(thread block). По сути, блок потоков – это исполняемая сущность
ядра, потоки которой обладают возможностью коммуникации. То
есть, если ядро – это статический бинарный код, то блок потоков –
исполняющиеся вычислителями GPU функции-потоки. Здесь также
присутствует управляющая сеть. Например, можно задать точку син-
хронизации потоков одного блока, а исполнение некоторых потоков
при этом будет автоматически “заторможено” для одновременного
достижения потоками исполнений требуемой точки. Однако, не су-
ществует механизмов, позволяющих потокам из разных блоков обме-
ниваться данными и синхронизировать свое исполнение. Так же, как
и каждый отдельный поток, блок потоков имеет собственный иден-
тификатор, так что полный адрес потока в CUDA образуется парой
< идентификатор блока, идентификатор потока в блоке > [3].
Каждому потоку доступны следующие ресурсы – регистровая
память потока, его локальная память, разделяемая в пределах блока
потоков память, а также пул адресных пространств, предназначенных
для обмена данными с основным вычислителем системы (иными сло-
вами – с программно-аппаратными средствами компьютера, в кото-
рый вставлена используемая в качестве вычислительного акселерато-
ра видеокарта, которого принято называть хостом).
После того, как выполнен анализ данных, можно приступать к
получению решения в C или C++. Для этой цели, CUDA добавляет
Математичне та комп’ютерне моделювання
74
несколько специальных расширений и вызовов API к языку, показан-
ные на рисунке 5.
а)
б)
Рис. 5. Пример фрагментов программы для Nvidia CUDA
Первый фрагмент кода (рис. 5а) – однопоточная функция для
обычного центрального процессора. Второй (рис. 5б) – многопоточ-
ное выполнение тех же самых функций для CUDA. Обе функции вы-
полняют так называемую SAXPY операцию (yi = αxi + yi), умножение
вектора на скаляр и сложение векторов, на массиве чисел с плаваю-
щей точкой. Эта функция (или “ядро” в CUDA-терминологии) – часть
базовой библиотеки линейной алгебры (basic linear algebra
subprograms (BLAS)), включенная с CUDA. Расширение global указы-
вает, что функция saxpy_parallel принадлежит CUDA-ядру, которое
должно быть откомпилировано для Nvidia GPU, а не для центрально-
го процессора, и это ядро глобально доступно для целой программы.
Другая инструкция расширения, в последней строке CUDA примера,
использует три пары угольников (<<<nblocks, 256>>>), чтобы опре-
делить размер сетки данных и блоков. Первый параметр nblocks оп-
ределяет измерения сетки в блоке, а второй, в данном случае 256,
определяет размер блоков в потоках.
Выводы. Таким образом, применение графических процессоров
позволяет ускорить обработку больших объемов данных, в том числе
и для быстрого решения современных и сложных задач в научной и
технической отраслях. Технология Nvidia CUDA предоставляет про-
Серія: Технічні науки. Випуск 1
75
граммные и аппаратно-вычислительные мощности для решения
сложных задач в различных областях науки, таких как математика,
медицина, физика, экономика т.д.
Список использованной литературы:
1. NVIDIA CUDA Compute Unified Device Architecture Programming Guide. –
Ver 1.1. – December 2007. – NVIDIA Corporation, 2007.
2. SUPERCOMPUTING 2007 Tutorial: High Performance Computing with
CUDA (http:// www.gpgpu.org/sc2007/).
3. ECE 498 AL1: Programming Massively Parallel Processors (http:// courses.
ece. uiuc. edu/ ece498/al1/).
A review and comparison of the systems of programming of the gen-
eral programming is produced for graphic processors (GPGPU), the fea-
tures of the system of programming are selected, and also the example of
calculation of operation of SAXPY (multiplying of vector by a scalar and
addition of vectors) is considered through GPGPU Nvidia CUDA.
Key words: graphic processors unit, Architecture graphic processors
unit, program models, GPGPU, General-Purpose computation on graphic
processors unit, Nvidia CUDA, parallel programming.
Отримано: 05.06.2008
УДК 004.942
В. А. Іванюк
Кам’янець-Подільський національний університет
ЛАНЦЮГОВО-ДРОБОВА АПРОКСИМАЦІЯ
ІРРАЦІОНАЛЬНИХ ТА ТРАНСЦЕНДЕНТНИХ ПЕРЕДАТНИХ
ФУНКЦІЙ ОБ’ЄКТІВ З РОЗПОДІЛЕНИМИ ПАРАМЕТРАМИ
Розроблено та реалізовано алгоритми ланцюгово-дробової
апроксимації ірраціональних та трансцендентних передатних
функцій об’єктів з розподіленими параметрами, досліджено
точність наближень.
Ключові слова: передатна функція, об’єкти з розподіле-
ними параметрами, ланцюгові дроби, апроксимація.
Вступ. Передатні функції об’єктів з розподіленими параметрами
містять ірраціональні та трансцендентні функції від аргументу p, що
значно ускладнює можливості чисельної реалізації. При вирішенні
таких задач виникає необхідність проведення їх апроксимації. На
сьогоднішній день питання побудови апроксимаційних моделей об’є-
ктів з розподіленими параметрами не знайшли достатньо повного
розв’язання.
© В. А. Іванюк, 2008
http://www.gpgpu.org/sc2007/
|