Распараллеливание нейросетевого алгоритма решения краевых задач математической физики на многоядерных процессорах nvidia

УДК 004.272:004.032.26

В. И. Горбаченко, Н. О. Матвеева, Е. И. Гурин

РАСПАРАЛЛЕЛИВАНИЕ НЕЙРОСЕТЕВОГО АЛГОРИТМА РЕШЕНИЯ КРАЕВЫХ ЗАДАЧ МАТЕМАТИЧЕСКОЙ ФИЗИКИ НА МНОГОЯДЕРНЫХ ПРОЦЕССОРАХ NVIDIA

Аннотация. Рассматривается возможность эффективной реализации нейросе-тевого алгоритма решения краевых задач математической физики на многоядерном графическом процессоре NVIDIA GeForce 8800 GTX. Предлагаются методы распараллеливания основных вычислений алгоритма обучения радиально-базисной нейронной сети (RBFNN), решающей уравнение Пуассона, с использованием технологии CUDA. Проводится сравнение времени обучения RBFNN на центральном и массивно-параллельном графическом процессорах. Ключевые слова: массивно-параллельная архитектура, графический процессор, параллельность, CUDA, радиально-базисная нейронная сеть, дифференциальное уравнение.

Abstract. The article describes the possibility of effective realization of the algorithm for solving boundary value problems of mathematical physics on multicore Graphics Processing Unit (GPU) NVIDIA GeForce 8800 GTX. The authors propose parallel realization of the training algorithm of the radial basis neural network (RBFNN), using CUDA. The proceeding compares execution time using CPU versus GPU.

Key words: massive parallel processing, Graphics Processing Unit, parallelism, CUDA, radial basis neural network, differential equation.

Введение

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

Вычислительные мощности современных суперкомпьютеров на данный момент доступны далеко не всем, но созданные относительно недавно и активно развивающиеся многопроцессорные системы, первоначально появившиеся как видеокарты новой архитектуры, предоставляют реальную возможность ускорения вычислений путем их распараллеливания. Так как рост тактовой частоты одного процессора уже достиг своего максимума, дальнейшее повышение производительности связано с увеличением площадей кристалла. Графическим процессорам первоначально был свойственен параллелизм, поэтому неудивительно, что видеокарты стали многопроцессорными. Еще до появления графических процессоров (GPU) нового поколения были предприняты попытки использовать вычислительные ресурсы видеокарты для решения задач общего назначения, а после выхода удобной технологии программирования новых GPU nVidia CUDA (Compute Unified Device Architecture) [1] они стали использоваться для решения самых разных задач, требующих больших вычислительных затрат.

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

Альтернативным подходом является использование различных вариантов метода взвешенных невязок, когда в качестве базисных функций применяются радиальные базисные функции (RBF - radial basis function) [2-6]. Использование RBF-функций рассматривается как бессеточный метод (meshless, meshfree). Применение радиально-базисных функций позволяет обойтись без трудоемкого построения сетки и позволяет получить приближенное дифференцируемое решение в произвольных точках области. Недостатком метода является сложность определения параметров радиально-базисных функций.

Бессеточные методы эффективно реализуются на радиально-базисных нейронных сетях (RBFNN) [6-9]. RBFNN отличаются простотой, так как содержат только один скрытый слой, поэтому исключается неформализуемый подбор структуры сети, необходимый для большинства типов нейронных сетей. RBFNN могут быть реализованы на параллельных системах. Главное достоинство RBFNN состоит в использовании принципов обучения для формирования оптимальных параметров радиально-базисных функций.

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

1. Структура радиально-базисной нейронной сети

Радиально-базисная нейронная сеть (рис. 1) представляет собой сеть с двумя слоями [6-8].

Рис. 1. Радиально-базисная нейронная сеть

Первый слой осуществляет преобразование входного вектора x с использованием радиально-базисных функций (RBF). Практически используются различные радиально-базисные функции. В дальнейшем будем использовать наиболее часто употребляемую функцию - Гауссиан, имеющий вид

для к -го нейрона:

Фк

где x - входной вектор; Гк =||x - ск|| - радиус к -го нейрона; ак - ширина к -го нейрона; с к - центр к -го нейрона.

Выход сети описывается выражением

m

и = Z WkФк

к =1

где Wk - вес, связывающий выходной нейрон с к -м нейроном первого слоя; m - число нейронов первого слоя.

2. Алгоритм обучения радиально-базисной нейронной сети

Рассмотрим градиентный алгоритм обучения радиально-базисной нейронной сети на примере решения двумерного уравнения Пуассона:

2 2

= f

Эx2 dy2

и = p

где Эй - граница области; f и p - известные функции (x, y).

Выбирая в качестве радиально-базисной функции Гауссиан (1), опреде-

Г±

2

ляемый как фк (x, y ) = e к , рассмотрим RBF-сеть как аппроксиматор функции решения:

m

и

к=1

где m - число радиально-базисных функций (скрытых нейронов),

Гк =\J(x - cxk )2 + (у - cyk )2 , (cxk,cyk ) - координаты центра нейрона к , ак -

ширина нейрона к .

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

1 N

I (w, с, а ) = - £

2  1

1=1

- - п2

ди

2

+ — 2

(х,У])-Р]_ ,

]+1

где X - штрафной множитель; Р] - значение граничных условий первого рода в точке ] границы; N и К - количество внутренних и граничных контрольных точек.

Функционал (6) необходим для обучения сети. Используется пакетный режим обучения, т.е. ошибка вычисляется усредненная по всем контрольным точкам.

Очень важно соблюдать при обучении соотношение между оптимальным количеством нейронов т и количеством контрольных точек [7, с. 389]:

где го - знак пропорциональности; N - число внутренних контрольных точек; К - число контрольных точек на границе.

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

Градиентный алгоритм спуска, одновременно оптимизирующий веса, центры и ширину может быть построен в виде последовательности двух шагов [9].

Шаг 1. Зафиксировав , находим центры и ширину, минимизирующие функционал ошибки (6), используя метод градиентного спуска

т го

Хп) Л«-1)

где

]=1

К Ї .С*!.

+>.•2^

е

. . . . 2 і=1 ак

4

ДТ- N --к 2 т 2

= 2^ (А»,- - Л Не а* •( - Сук +

-Сук ,=1 ак

К І .(*1

+>.•2^

е

а2

і=1 ак

Направление изменения параметров сети выбирается противоположным градиенту функционала I.

Шаг 2. Зафиксировав центры и ширину, находим веса, минимизирующие функционал ошибки (6).

Для обучения весов сети использовался алгоритм сопряженных градиентов для минимизации квадратичного функционала, предложенный в [6]. Данный алгоритм эквивалентен при зафиксированных центрах и ширине решению системы линейных алгебраических уравнений Aw = 8, где

1 / т т \

А = — ^М М + AN N |- симметричная положительно определенная матрица;

1 / т т \ 2 гк — ак

8 = — ( Г + А^ р |; М - матрица N х т с элементами тк = 4е °к ——4— ;

ак

2 , 2 -г,к / ак

N - матрица К х т с элементами п,к = е ік к ; Г - вектор значений функции правой части во внутренних точках; р - вектор граничных условий в граничных контрольных точках. Алгоритм метода сопряженных градиентов для решения СЛАУ Aw = 8 представлен на рис. 2.

г0 = 8 — ^0 Р0 = Г0 Для , = 1,2,...

а і =

Если І І Гу+1| /118| < є, то КОНЕЦ

р і+1 = Гі+1 +Р і р і увеличить і

Рис. 2. Метод сопряженных градиентов для решения СЛАУ

Центры и ширина обучались по формулам шага 1 алгоритма градиентного спуска.

3. Алгоритмы распараллеливания вычислений на графическом процессоре в технологии СиБА

Как было описано выше, для минимизации весов сети использовался алгоритм сопряженных градиентов. Распараллеливание данного алгоритма заключается в основном в параллельной реализации матрично-векторных операций, как описано в [10]. Но кроме коррекции весов большая доля времени приходится на вычисление матриц М и N, расстояний щ, коррекцию векторов ширины и центров. При этом элементы данных матриц и векторов находятся не с помощью матрично-векторных операций, а в циклах, что делает невозможным использование стандартной библиотеки СИБА СИБЬА8. Например, функция вычисления матрицы М и г в МАТЬАБ представлена на рис. 3.

function rim

global w a nv m r2_v f M 1 R

R1=zeros(1,nv);

s o r e z = (nv,m);

:Еог 1 = 1 :nv

:Еог k=1:m

r2=r2_v(i,k);

M(i,k)=4*exp(- -r2/(a(k)"2))*((r2-

а(к)Л2)/(а(к)Л4 ));

R1(i)=R1(i)+M (i,k)*w(k);

епб.

Я1( i)=R1(i)-f(i);

епб.

епб.

Рис. 3. Функция вычисления матрицы М и вектора г в МАТЬАБ

Для вычисления одного элемента матрицы М требуется прочитать из

2

Цк 0 0

—Т 2 2

2 г-^- — а^

памяти Цк и ак и выполнить все операции по формуле т^ = 4е ак ——-—,

а4

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

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

т

Гц = ^ т^к — реализуется в том же ядре, что и матрицы М, для умень-

к=1

шения чтений из памяти, так как найденные элементы матрицы М сразу ис-

пользуются для вычисления вектора г через разделяемую память блока размером 1х т, что можно видеть на рис. 4.

global void r1m(float* M, float* R1,float* r2_v,

float* a, float* w, float* f, int n)

{

const unsigned int tx = threadldx.x;

const unsigned int by = blockldx.y;

int i = tx;

int j = by*n + i;

extern ___shared__ float sdata[];

float r = r2_v[j];

float ak2 = powf(a[i],2);

float sd = 4*expf(-r/ak2)*(r-ak2)/powf(ak2,2);

M[j] = sd;

sdata[i] = sd*w[i];

for

{

__syncthreads();

if

sdata[tx] += sdata[tx + stride];

}

__syncthreads();

if

R1[by] = sdata[0] - f[by];

J_____________________________________________________________________

Рис. 4. Функция вычисления матрицы M и вектора r в CUDA

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

4. Анализ результатов экспериментов

Алгоритм обучения радиально-базисной нейронной сети реализовывался с помощью технологии CUDA [1, 11] на графическом процессоре nVidia GeForce 8800 GTX и на центральном процессоре Intel Pentium 4 3 GHz в системе MATLAB 7.7.0. Экспериментальное исследование проводилось на примере модельной задачи (3)-(4) для f (х, у ) = sin (ях )• sin (яу), p (x, y ) = 0.

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

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

О ТСРи г

о =------, где Тсри - время решения задачи на центральном процессоре,

Тори

Тори - на графическом процессоре.

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

90.00

80.00

70.00

60.00

50.00

40.00

30.00

20.00 10,00

0,00

к - 224, н - 64

83,42

38,58

34,50

17,31

Параметры сети

к - 524 н - 64

Ускорение по сравнению с Pentium 4

Ускорение по сравнению с Intel Core™ 2 Quad CPU

Рис. 5. Результаты экспериментов

Заключение

Проанализирован алгоритм обучения радиально-базисной нейронной сети с точки зрения его эффективного распараллеливания на графическом процессоре.

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

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

Список литературы

1. NVIDIA CUDA Homepage. - URL: http://www.nvidia.ru/object/cuda.html.

2. Buhmann, M. D. Radial Basis Functions: Theory and Implementations / M. D. Buhmann. - Cambridge : Cambridge University Press, 2004. - 259 p.

3. Liu, G. R. An Introduction to Meshfree Methods and Their Programming / G. R. Liu, Y. T. Gu. - Springer, 2005. - 479 p.

4. Meshfree Methods for Partial Differential Equations / ed.: M. Griebel,

Marc. A. Schweitzer. - Springer, 2008. - 412 p.

5. Толстых, А. И. Бессеточный метод на основе радиальных базисных функций / А. И. Толстых, Д. А. Широбоков // Журнал вычислительной математики и математической физики. - 2005. - Т. 45, № 8. - С. 1498-1505.

6. Горбаченко, В. И. Исследование градиентных алгоритмов обучения весов радиально-базисных нейронных сетей для решения краевых задач математической физики / В. И. Горбаченко, Е. В. Артюхина // Известия ПГПУ им. В. Г. Белинского. - 2009. - № 13 (17). - С. 134-143.

7. Хайкин, С. Нейронные сети: полный курс / С. Хайкин. - М. : Вильямс, 2006. -1104 с.

8. Осовский, С. Нейронные сети для обработки информации / С. Осовский. -М. : Финансы и статистика, 2002. - 344 с.

9. Jianyu, L. Numerical solution of elliptic partial differential equation using radial basis function neural networks / L. Jianyu, L. Siwei, Q. Yingjiana, H. Yapinga // Neural Networks. - 2003. - № 16 (5/6). - P. 729-734.

10. Горбаченко, В. И. Реализация итерационных алгоритмов решения систем линейных алгебраических уравнений на графических процессорах в технологии CUDA / В. И. Горбаченко, Н. О. Матвеева // Вопросы радиоэлектроники. Серия «Электронная вычислительная техника». - 2008. - Вып. 5. - С. 65-75.

11. NVIDIA CUDA Compute Unified Device Architecture. Programming Guide. Version 2.0. 06.07.2008.

Горбаченко Владимир Иванович

доктор технических наук, профессор, заведующий кафедрой информатики и вычислительных систем, Пензенский государственный педагогический университет им. В. Г. Белинского

E-mail: gorvi@mail.ru

Матвеева Наталья Олеговна программист, отдел автоматизации, Пензенский государственный педагогический университет им. В. Г. Белинского

E-mail: gorvi@mail.ru

Гурин Евгений Иванович доктор технических наук, профессор, кафедра вычислительной техники, Пензенский государственный университет

E-mail: gurin2@yandex.ru

Gorbachenko Vladimir Ivanovich Doctor of engineering sciences, professor, head of sub-department of informatics and computing systems, Penza State Pedagogical University named after V. G. Belinsky

Matveeva Natalya Olegovna Programmer, automation department, Penza State Pedagogical University named after V. G. Belinsky

Gurin Evgeny Ivanovich

Doctor of engineering sciences, professor, sub-department of computer engineering, Penza State University

УДК 004.272:004.032.26 Горбаченко, В. И.

Распараллеливание нейросетевого алгоритма решения краевых задач математической физики на многоядерных процессорах NVIDIA / В. И. Горбаченко, Н. О. Матвеева, Е. И. Гурин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2011. - № 4 (20). - С. 57-65.