Научная статья на тему 'Анализ вычислительных возможностей GPU Tesla C2050'

Анализ вычислительных возможностей GPU Tesla C2050 Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
695
145
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МОДЕЛИРОВАНИЕ / РЕСУРСОЕМКОСТЬ / ГРАФИЧЕСКИЕ ПРОЦЕССОРЫ / CUDA / MODELING / RESOURCE-DEMAND / GRAPHICAL PROCESSOR

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Рябов Дмитрий Валерьевич, Вицентий Александр Владимирович

В работе представлены результаты исследования вычислительных возможностей систем на основе графических процессоров общего назначения. Рассматриваются методы и средства реализации алгоритмов, вычисляемых на графическом процессоре.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Рябов Дмитрий Валерьевич, Вицентий Александр Владимирович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Exploring computational capabilities of GPU Tesla C

In this paper the results of the systems based on general-purpose graphics processors computing capabilities research are presented. The calculated on the GPU algorithms methods and means of implementation are considered.

Текст научной работы на тему «Анализ вычислительных возможностей GPU Tesla C2050»

УДК 004.942

Д.В. Рябов1, А.В. Вицентий 1,2

1 ФГБУН Институт информатики и математического моделирования технологических процессов КНЦРАН

2 Кольский филиал ПетрГУ

АНАЛИЗ ВЫЧИСЛИТЕЛЬНЫХ ВОЗМОЖНОСТЕЙ GPU TESLA C2050*

Аннотация

В работе представлены результаты исследования вычислительных возможностей систем на основе графических процессоров общего назначения. Рассматриваются методы и средства реализации алгоритмов, вычисляемых на графическом процессоре.

Ключевые слова:

моделирование, ресурсоемкость, графические процессоры, CUDA.

D.V. Ryabov, A.V. Vicentiy

EXPLORING COMPUTATIONAL CAPABILITIES OF GPU TESLA C2050 Abstract

In this paper the results of the systems based on general-purpose graphics processors computing capabilities research are presented. The calculated on the GPU algorithms methods and means of implementation are considered.

Key words:

modeling, resource-demand, graphical processor, CUDA.

Введение

На протяжении последних лет спрос на продукцию обогащения апатит-нефелиновых руд подвергается постоянному изменению под воздействием различных рыночных факторов. В современных условиях жесткой конкуренции на мировых рынках горно-обогатительные комбинаты стремятся постоянно совершенствовать технику и технологии переработки рудного сырья с получением товарной продукции требуемого качества и высокой рентабельностью [1]. Изучение обогатительных процессов в условиях реально действующих аппаратов затруднено по экономическим причинам, поэтому моделирование обогатительных процессов с целью их совершенствования - одна из приоритетных задач на сегодняшний день. При этом необходимо использовать компьютерные модели, более или менее адекватно отражающие макрокартину гидродинамических потоков в аппаратах. Решение задачи отчасти облегчается наличием компьютерных программ, позволяющих создавать модели разнообразных физических процессов в условиях реальной геометрии [1].

В основе большинства существующих инженерных методик расчетов компонентов и характеристик схем обогащения лежат упрощенные эмпирии-ческие модели гидродинамических явлений и процессов, опирающиеся на

* Работа выполнена при поддержке РФФИ, проект № 12-07-98800 р_север_а «Разработка моделей и информационной технологии прогнозирования параметров производственных процессов обогащения руд».

обширные данные теоретических, лабораторных и натуральных исследований. Недостатком моделей данного типа является сложность, а порой и невозможность адекватного учета влияния новых, не отработанных экспериментально конструктивных решений. Современный уровень развития технических и программных средств моделирования обеспечивает возможность практической реализации моделей более адекватно отражающих процессы разделения минеральных компонентов. В частности эффективным инструментом решения расчетных задач, связанных с гидродинамикой многофазных процессов, к которым относятся процессы разделения минеральных компонентов происходящих в обогатительных аппаратах, являются CAE (Computer-Aided Engineering) -системы и CFD-программы (Computational fluid dynamics), представляющие собой инструментальные средства вычислительной гидро-динамики [1].

В качестве математического аппарата для построения таких моделей используется аппарат многофазного многоскоростного континуума (ММК). Вычислительный эксперимент над CFD-моделями, основанными на ММК представлений движения вещества в разделительном аппарате, приближается по своим качествам к натурному эксперименту [2].

В результате проведенных исследований установлено, что модели обогатительных процессов и аппаратов, а также процедуры анализа больших объемов данных мониторинга обладают высокой вычислительной сложностью. На этапах разработки и исследования этих моделей и технологий возможно использование специализированных высокопроизводительных компьютеров. Но, так как разрабатываемая технология ориентирована на интеграцию средств прогнозирования процессов обогащения в действующие системы оперативного управления и мониторинга, в качестве аппаратной платформы при ее практической реализации предполагается использование рабочих станций на базе типовых персональных компьютеров. Добиться необходимой производительности в таком случае можно за счет использования многопоточных процессоров для универсальных высокопроизводительных вычислений. На основе предварительных оценок [3] в 2012 г. была выбрана и закуплена за счет средств гранта плата TCSC2050-PB на основе CUDA NVIDIA TESLA C2050 стоимостью 57001 руб. В 2013 г. проведены исследования по оценке соответствия заявленных производителем и фактических показателей производительности вычислительной системы на базе данного устройства. Также проведены сравнительные исследования производительности такой системы с производительностью систем, использующих только серийный центральный процессор.

Общая характеристика графических процессоров общего назначения

Графические процессоры изначально нацелены на решение узкого круга задач, связанного с компьютерной обработкой графических данных. В связи с этим архитектуры GPU и CPU существенно отличаются друг от друга. Так, к примеру, в видеочипах от NVIDIA основной блок представляет собою мультипроцессор с сотнями ядер, и несколькими тысячами регистров. Графические процессоры от NVIDIA так же оснащены несколькими видами памяти: локальная, разделяемая общая, константная, а так же глобальная память, доступная всем мультипроцессорам на чипе. Общая модель мультипроцессоров

№УГО1А СUDA представлена на рис. 1. Полное описание программной и аппаратной модели CUDA содержится в работе [4].

Мультипроцессор

Разделяемая память

Регистры Регистры Регистры ALU

Процессор 1 Процессор 2 ■ ■■ Процессор N

J і і і і L і

Кэш констант

Кэш текстур

Глобальная память

Рис. 1. Модель мультипроцессора CUDA

Обобщим основные отличия между архитектурами центрального и графического процессоров. CPU создан для последовательного исполнения одного потока инструкций с максимальной производительностью, а GPU спроектирован таким образом, чтобы единовременно исполнять как можно большее число параллельных потоков.

В итоге можно сказать, что в отличие от современных центральных процессоров, являющихся универсальными вычислительными устройствами, одинаково эффективно справляющимися с большинством задач, графические процессоры имеют куда более узкую направленность. GPU спроектирован таким образом, чтобы максимально эффективно решать задачу обработки множественных данных. И если в CPU разработчики были вынуждены пожертвовать производительностью ради достижения максимальной унифицированности, то в GPU значительно большее число транзисторов на чипе работает по прямому назначению - обработке массивов данных. Но небольшие блоки управления исполнением и кэш-памяти накладывают значительные ограничения на структуру алгоритмов исполняемых на GPU

Рассмотрим вычислительные ресурсы системы, которые будут использованы для исследований, представленных в данной работе. Основу аппаратной части составляет графический процессор для универсальных высокопроизводительных вычислений NVIDIA TESLA C2050 со специализированным программным обеспечением, центральный процессор Intel І3-2125 и оперативная память DDR3 объемом 4Gb. Подробно о характеристиках семейства сопроцессоров NVIDIA TESLA описано в статье [3].

Исследование методов и средств реализации алгоритмов, вычисляемых на графических процессорах общего назначения на языке программирования CUDA

В связи с кардинальными архитектурными отличиями центрального и графического процессора стоит задача исследования аппаратных ограничений реализуемых вычислительных алгоритмов на графических процессорах общего назначения, методов их реализации и возможность оптимизации с точки зрения производительности.

Для этих исследований был выбран алгоритм умножения матриц, который является одной из основных задач матричных вычислений. Данный алгоритм является массивно-параллельным и идеально подходит для исследования вычислительных способностей и методов программирования графических процессоров общего назначения.

При выполнении вычислительного эксперимента были реализованы следующие алгоритмы:

• параллельный алгоритм умножения матриц на GPGPU с использованием прямого доступа к глобальной памяти графического процессора;

• параллельный алгоритм умножения матриц на GPGPU с использование кэширования данных средствами программируемой разделяемой памяти графического процессора;

• параллельные алгоритмы умножения матриц с использованием универсальных сторонних библиотек, реализующих вычисления на GPGPU.

При реализации вышеуказанных алгоритмов использовался язык программирования C++, С, CUDA в среде быстрой разработки приложений Visual Studio 2008 Express. Компиляция исходного кода для вычислений на графическом процессоре выполнялась средствами компилятора NVIDIA NVCC, входящим в состав NVIDIA CUDA SDK. Для сравнительного анализа времени выполнения алгоритмов на центральном и графическом процессорах использовалась технология OMP [5], а так же свободно распространяемые библиотеки BLAS и Eigen.

С помощью вышеуказанных алгоритмов были проведены следующие исследования:

• исследование влияния разбиения процесса вычисления на множество потоков и блоков ядра GPGPU на общую производительность графического процессора и время выполнения алгоритма;

• исследование влияния оптимизации алгоритмов с точки зрения производительности посредством использования разделяемой памяти GPGPU;

• исследование методов реализации алгоритмов на GPGPU и их влияние на время выполнения вычислений.

Проведенные эксперименты позволили сделать следующие выводы:

• архитектурные особенности графических процессоров общего назначения накладывают значительные ограничения на круг решаемых задач и методы реализации алгоритмов, вычисляемых на графическом процессоре;

• алгоритмы, реализующие вычисления на графических процессорах общего назначения, требуют оптимизации для получения наилучших результатов с точки зрения производительности;

• реализация алгоритмов, реализующих вычисления на графических процессорах общего назначения, требует глубоких знаний архитектуры графического процессора, на котором выполняются вычисления для получения наибольшего прироста производительности по сравнению с центральным процессором;

• экспериментально доказано преимущество с точки зрения производительности низкоуровневого программирования на языке CUDA над универсальными библиотеками, реализующими вычисления на GPGPU.

Исследование вычислительных способностей графических процессоров общего назначения в среде MatLab

В связи с тем, что реализация алгоритмов, вычисляемых на GPGPU, средствами языка программирования CUDA является трудоемким процессом и требует от программиста глубоких знаний как низкоуровневого программирования, так и архитектуры графического процессора, были проведены исследования вычислительных способностей систем на основе графических процессоров общего назначения в среде MatLab.

MatLab (сокращение от англ. «Matrix Laboratory») - пакет прикладных программ для решения задач технических вычислений и одноимённый язык программирования, используемый в этом пакете. MATLAB широко используется инженерными и научными работниками, позволяет абстрагироваться от программной реализации алгоритмов и сосредоточить внимание непосредственно на моделировании.

В связи с необходимостью использования параллельного выполнения алгоритмов среда MatLab позволяет выполнять параллельные вычисления, используя дополнение Parallel Computing Toolbox. Parallel Computing Toolbox позволяют использовать многоядерные процессоры, графические процессоры (GPU) и кластеры для выполнения вычислительно-сложных расчётов и расчётов с большими объёмами данных. Подробно о программном продукте MatLab и Parallel Computing Toolbox написано на сайте производителя [6].

Для исследований встроенных GPU функций MatLab были написаны функции, позволяющий сравнить производительность графического процессора NVIDIA TESLA C2050 с центральным процессором Intel i3-2125.

Реализованные функции в автоматическом режиме выполняют вычисления над числами с одинарной и двойной точности. Объем данных -максимально возможный из доступной оперативной памяти как центрального, так и графического процессоров. Сравнение проводилось по трем встроенным функциям, реализующим массивно-параллельные алгоритмы. А именно: умножение матриц, деление матриц и алгоритм БПФ (быстрое преобразование Фурье).

Результаты эксперимента показывают, что производительность графического процессора в среде MatLab резко уменьшается, по сравнению с алгоритмами, написанными на чистом языке CUDA, в то время как производительность центрального процессора практически не уменьшается. Данный эксперимент наглядно показывает, что среда MatLab, используя встроенные GPU функции, не позволяет достичь максимальной производительности графического процессора, обещанной производителем.

Вычислительный эксперимент, оценивающий производительность центрального и графического процессоров для задачи решения системы линейных уравнений, показал, что центральный процессор уступает графическому в производительности более чем в 2 раза. При этом производительность уменьшилась приблизительно в 5 раз относительно алгоритма умножения матриц и в 8 раз относительно максимальной, заявленной производителем графического процессора. Такое замедление, прежде всего, обусловлено тем, что данный алгоритм требует частого обращения к разным ячейкам данных (случайный доступ к оперативной памяти) тем самым замедляя работу арифметических операций графического процессора. При этом производительность центрально процессора осталась на одном и том же уровне. Гистограмма сравнения производительности графического и центрального процессоров, при выполнении задачи деления матриц в среде MatLab, представлена на рис. 2.

140

Рис. 2. Сравнение производительности СРи и ОРи на примере задачи деления матриц

В табл. представлены результаты исследования производительности графического и центрального процессора при применении некоторых встроенных GPU функций MatLab Я2012Ь.

Результаты исследования встроенных GPU функций MatLab Я2012Ь

Процессор Числа одинарной точности (ГФлопс) Числа двойной точности (ГФлопс)

Mtimes Backslash FFT Mtimes Backslash FFT

Графический 672,46 121,97 140,9 330,01 68,5 50,19

Центральный 66,04 54,22 4,73 30,27 27,59 2,05

Исследование методов реализации алгоритмов, вычисляемых на графическом процессоре в среде MatLab R2012b

MatLab R2012b позволяет выполнять алгоритмы на GPU четырьмя способами:

• использование встроенных GPU функций;

• использование интерфейса GPU array;

• выполнение пользовательских функций на элементах GPU array (функция arrayfun);

• вызов CUDA ядер непосредственно в MatLab (*.ptx объектных файлов).

Ранее рассматривались некоторые встроенные GPU функции MatLab, но

для ряда задач таких функций попросту может не быть. Одной из таких задач является задача построения фрактала Мандельброта.

Так как алгоритм, решающий данную задачу, является массивно -параллельным и может быть реализован несколькими способами, появляется задача выбора метода реализации этого алгоритма в среде MatLab. В данном исследовании рассмотрены все возможные методы реализации алгоритма построения фрактала Мандельброта в среде Matlab и проведена оценка производительности и сложности каждого из методов.

Для сравнения производительности центрального и графического процессоров, был реализован алгоритм, выполняющий вычисления только на центральном процессоре. Простейшим методом преобразования данного алгоритма является хранение и вычисление множества Мандельброта на графическом процессоре. При этом алгоритм остается неоптимизированным с точки зрения параллельности, но при этом дает лучшие результаты, чем центральный процессор, что связано с более быстрым процессом выполнения простейших математических операций. В данном случае данные передаются на графический процессор посредством встроенной функции gpyArray. Преимуществом данного способа является минимальное изменение исходного кода, а недостатком является производительность, которая намного ниже, чем в других методах, рассмотренных далее.

Методом параллельной оптимизации алгоритмов в среде MatLab для графических процессоров является выполнение пользовательской функции над каждым элементом массива данных. Как и в предыдущем случае, данные передаются на графический процессор посредством функции gpuArray, а вычисления над каждым элементом выполняется функцией arrayfun, которая выполняет пользовательскую функцию, непосредственно выполняющую математические операции. Данный метод подразумевает значительное изменение вычислительно алгоритма и кода программы, но при этом дает большой выигрыш в производительности.

Третий способ оптимизации алгоритмов для графических процессоров является непосредственный вызов CUDA ядра из среды MatLab. При использовании данного метода первостепенным является написания CUDA ядра на языке программирования CUDA и его компиляция в объектный PTX файл средствами компилятора NVCC компании NVIDIA.

При использовании данного метода среда MatLab выполняет второстепенные задачи, такие как инициализация начальных условий, конфигурирование и вызов ядра, а так же графическое отображение полученного

множества Мандельброта. Данный метод является оптимальным с точки зрения производительности, но сложен в реализации, так как требует знаний языков программирования C и CUDA, знания аппаратно-программной технологии CUDA, а также знания архитектуры и особенностей графического процессора.

С помощью реализованных алгоритмов, описанных выше, был проведен эксперимент по построению фрактала Мандельброта различными методами. Размерность комплексной плоскости бралась 1000х1000 ячеек, максимальное количество итераций 500. Производительностью будем считать время построения множества Мандельброта. Результаты эксперимента приведены на рис. 3. На графике видно, что абсолютно все алгоритмы, реализованные для вычислений на графическом процессоре, имеют значительный выигрыш относительно вычислений выполняемых на CPU. При этом оптимизация алгоритмов для GPU является неотъемлемой для повышения производительности.

■ CPU I Naive GPU

GPU an ayfun

■ GPIJ CTJDA Kernel

Рис. 3. Время (в сек.) построения фрактала Мандельброта различными методами

Заключение

В ходе проведенной работы были изучены существующие технологии программирования графического ускорителя, а так же проведен сравнительный анализ архитектуры центрального и графического процессоров. На основе проведенных исследований были сделаны выводы о целесообразности использования графического процессора для решения ряда задач общего назначения.

Реализация простейшего алгоритма умножения матриц с использованием технологии CUDA программирования графических процессоров общего назначения показала, что несмотря на более чем десятикратный выигрыш во времени исполнения алгоритма на GPU по сравнению с CPU, данный подход является нецелесообразным из-за больших временных затрат, связанных с подготовкой данных и получением результатов вычислений.

Проведенные исследования доказали важность оптимизации алгоритма умножения матриц и конфигурирования вычисляющего ядра графического процессора под каждую модель и архитектуру графического процессора общего назначения.

1

.0,034

3,389

Реализация алгоритмов умножения матриц с использованием универсальных сторонних библиотек, выполняющих вычисления на графических процессорах, показала выигрыш во времени исполнения алгоритма на GPU по сравнению с CPU, но оказалась проигрышной по сравнению с алгоритмом, оптимизированным для модели GPGPU NVIDIA TESLA C2050 написанном на языке CUDA.

Технология программирования графических процессоров NVIDIA CUDA изначально проектировалась с целью предоставить разработчикам инструмент для программирования алгоритмов решающих задачи общего назначения на GPU. Реализация алгоритмов перемножения матриц показала, что использование данной технологии способно значительно сократить время их выполнения на входных данных больших размерностей.

Исследования вычислительных способностей систем на основе графических процессоров общего назначения в среде MatLab показали, что скорость выполнении алгоритмов напрямую зависит от метода обращения к вычисляемым данным, следствием чего является понижение производительности в задачах с произвольным доступом к памяти. Также экспериментально было доказано преимущество низкоуровневого программирования на языке CUDA над встроенными возможностями и функциями MatLab R2012b Parallel Computing Toolbox.

Литература

1. Бирюков, В.В. Применение системы Femlab для моделирования гидродинамики течений в обогатительных аппаратах / В.В. Бирюков, А.Г. Олейник // Информационные ресурсы России. - 2007. - № 3 (97). - С.30-32.

2. Разработка моделей разделительных аппаратов с использованием математического аппарата ММК / В.В. Бирюков и др. // Труды Кольского научного центра РАН. Информационные технологии. -Апатиты: Изд-во КНЦ РАН, 4/2012(11). -Вып.3. - С.124-133.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3. Вицентий, А.В. Ограничения данных при реализации процедур декларативных моделей прогнозирования параметров производственных процессов обогащения / А.В. Вицентий // Труды Кольского научного центра РАН. Информационные технологии. -Апатиты: Изд-во КНЦ РАН, 4/2012(11). -Вып.3-С.134-140.

4. Nvidia Cuda Programming Guide / The Nvdia Corporation, 2008. -111 с.

5. OpenMP Architecture Review Board. -Режим доступа: http: //openmp.org/wp/

6. Matlab The Language of Technical Computing.

- Режим доступа: http: //www.mathworks.com/products/matlab/

Сведения об авторе

Рябов Дмитрий Валерьевич - aспирант, программист,

е-mail: [email protected]

Dmitriy V. Ryabov - Post-graduate, Programmer

Вицентий Александр Владимирович - к.т.н., научный сотрудник, е-mail: alx [email protected]

Alexander V. Vicentiy - Ph.D. (Tech. Sci.), Researcher

i Надоели баннеры? Вы всегда можете отключить рекламу.