Академический Документы
Профессиональный Документы
Культура Документы
225
Векторизация метода распространяющегося пучка и его реализация по технологии CUDA В.А. Алексеев, Д.Л. Головашкин
следовании распространения излучения в свободном Пусть матрица А имеет вид (рис. 1):
пространстве ( n* = n0 ) примет вид [3]:
Ψ ik +1 − Ψ ki iθ Ψ ki +1 − 2Ψ ik + Ψ ik−1
= +
hz 2k0 n* hy2
(4)
i (1 − θ) Ψ ik++11 − 2Ψ ik +1 + Ψ ik−+11
+ ,
2k 0 n* hy2
где θ – весовой коэффициент разностной схемы.
Введение указанного упрощения не влияет на век- Рис. 1. Ленточная матрица А, где верхняя ширина ленты
торизацию вычислений и преследует исключитель- и нижняя ширина ленты q=p=1, соответственно
но методические цели. 1≤ i ≤ N для ai , 1≤ i ≤N-1 для bi и сi
Рассмотрим в качестве начального условия поле Тогда при хранении по диагоналям представим
Ψ ( y, 0) при z = 0 , записав следующую его дискре- матрицу А в виде:
тизацию Ψ i0 = Ψ 0 (ihy ) . Краевые условия соответст- Adiag = [a1 , ⋯ , aN ],
вуют расположению идеального проводника на гра- Bdiag = [b1 , ⋯ , bN −1 ], (6)
ницах D при y = 0 и y = Ly : Ψ k0 = Ψ kN = 0 . Cdiag = [c1 , ⋯ , cN −1 ].
Приняв весовой коэффициент θ =0,5 [14], пере-
Выбирая более сложный дифференциальный
пишем (4) как:
шаблон, можно придти к матрице с большей шири-
a ( Ψ ik++11 + Ψ ik−+11 ) − (1 + 2a)Ψ ik +1 = − Fi k , (5) ной верхней и нижней ленты, для общности поло-
жим ширину верхней и нижней ленты произвольной
где Fi k = a ( Ψ ik+1 + Ψ ik−1 ) + (1 − 2a)Ψ ik и a =
ihz и равной p и q соответственно. Тогда элемент мат-
.
4k0 n* hy2 рицы A(i , j ) хранится в одном из векторов Adiag ,
Задача свелась к решению системы линейных ал- Bdiag и C diag в соответствии со следующим прави-
гебраических уравнений (СЛАУ) вида Ax = b с лен-
лом:
точной матрицей. Приступая к векторизации вычис-
лений по (5), выберем для решения системы метод Adiag (i ), i = j ,
однопараметрической итерации [14]. К сожалению,
как отмечено в монографиях Дж. Голуба и В. Лоуна A( j + h, j ) = Cdiag ((h − 1) N −
[8] и Дж. Ортеги [9], прямые методы решения A(i , j ) = − h(h − 1) / 2 + j ), i ≥ j + h, (7)
СЛАУ с узкой лентой эффективно не векторизуются. A(i, i + m) = B ((m − 1) N −
diag
В выбранном методе приближение к решению x s +1 − m(m − 1) / 2 + i ), i ≤ j − m,
(на s + 1 итерации) равно произведению матрицы P на
вектор приближенного решения x s (на s итерации), где h и m - номера диагоналей в нижней и верхней
сложенный с произведением вектора правой части ленте, для которых справедливо неравенство
b на параметр τ. При этом P = ( A − τE ) , E – единич- 1≤ h < p и 1≤ m < q .
ная матрица, τ = 2 / (λ + Λ ) , λ и Λ – минимальное Умножение матрицы на вектор z = Ax (основная
и максимальное собственные числа матрицы А соот- операция в методе) может быть записана следую-
ветственно. Такой выбор параметра τ обеспечивает щим образом в нотации из [8].
оптимальную скорость сходимости [15]. При моде- Алгоритм умножения матрицы на вектор:
лировании среды с меняющимся показателем пре- z = Adiag .* x % умножение главной диагонали на век-
ломления, возникает необходимость в пересчете
собственных чисел матрицы A. Авторы полагают тор х
возможным в силу плавности изменения среды про- for m = 1: q %проход по верхней ленте
изводить пересчет не на каждом пространственном t = (m − 1) N − m(m − 1) / 2 % номер 1-го элемента
слое разностной схемы, а через определенные про- поддиагонали в массиве, хранящем верхние ленты
межутки. Тогда доля длительности расчета значений z (1 : N − m) = z (1: N − m) +
λ и Λ в общем времени вычислений может быть
+ Bdiag (t + 1: t + N − m).* x(m + 1: N );
минимизирована.
Рассмотрим следующую схему компактного хра- end
нения матрицы по диагоналям. Ранее Дж. Голуб for h = 1: p %проход по нижней ленте
и В. Лоун [8] применяли аналогичный подход для t = (h − 1) N − h(h − 1) / 2 % номер 1-го элемента
хранения симметричной матрицы. поддиагонали в массиве, хранящем нижние ленты
226
2010 Компьютерная оптика, том 34, №2
z (h + 1 : N ) = z (h + 1: N ) + yn
+Cdiag (t + 1: t + N − h).* x(1: N − h); Ψ ( y, 0) = sin π ,
L
y
end
где Ly – его ширина. Данные условия выбраны для
Правило хранения матрицы по диагоналям и век-
простоты верификации разностного решения. Длина
торный алгоритм представлены для ленточных мат-
волны принималась равной λ = 1 мкм, ширина вол-
риц, с произвольной шириной верхней и нижней
ленты. Заметим, что во внутренних циклах происхо- новода Ly = 10 мкм, Lz = 100 мкм, показатель пре-
дит покомпонентное произведение векторов, обо- ломления среды n = 1.
значенное в алгоритме «.*» (на многих процессорах Число узлов сеточной области N менялось от 100
производится аппаратно), и осуществляется доступ до 3000. Соответственно hy = Ly / N , hz = hy / π (для
к последовательно расположенным в памяти данным асимптотической устойчивости [14]).
(что значительно ускоряет вычисления). Исследование велось в операционной системе
2. Реализация векторного алгоритма Microsoft Windows XP, 32-bit (Service Pack 3) с уста-
на видеокарте NVIDIA GeForce GTS 250 новленным драйвером NVIDIA CUDA 2.3 driver.
Результаты, представленные далее, получены на Скалярный и векторный алгоритмы написаны с ис-
видеокарте GeForce GTS 250. пользованием программного пакета Microsoft Visual
Studio 2008 Express Edition.
Таблица 1. Основные характеристики
GPU NVIDIA GeForce GTS 250
Приведем ядро (kernel в терминах [10]) для GPU,
выполняющее основную операцию описанного вы-
Характеристика Значение ше векторного алгоритма (умножение матрицы на
Количество мультипро- вектор).
16
цессоров, шт.
__global__ void
Размер видеопамяти, Мб 1024 matrixMulfVextor( cuFloatComplex* d_Bdiag,
Максимальное число по- cuFloatComplex* d_Cdiag, cuFloatComplex*
512
токов в блоке, шт. d_Adiag, cuFloatComplex* d_x0, cuFloatComplex*
Максимальная размер- d_bt, cuFloatComplex* d_x, int N)
ность блока потоков 512*512*64 //номер элемента в блоке
(x, y, z), шт. {int i = blockIdx.x * blockDim.x+threadIdx.x;
Максимальная размер-
65535 * 65535 * 1 //умножение главной диагонали на вектор x
ность сетки блоков, шт.
и суммирование с вектором правой части.
Тактовая частота ядра, if(i<N){
702
МГц d_x[i]=cuCaddf(cuCmulf(d_Adiag[i],d_x0[i]),
Тактовая частота памяти, d_bt[i]);
1000 } __syncthreads();
МГц
Кроме того, использовался процессор Intel Core //умножение верхней ленты на вектор x
Duo E7500. if(i<N-1){
d_x[i]=cuCsubf(d_x[i],
Таблица 2. Основные характеристики CPU cuCmulf(d_Bdiag[i],d_x0[i+1]));
Intel Core Duo E7500 } __syncthreads();
Характеристика Значение // умножение нижней ленты на вектор х
Тактовая частота ядра, ГГц 2,93 if(i>0 && i<N) {
d_x[i]=cuCsubf(d_x[i],
Тактовая частота шины CPU, МГц 1066
cuCmulf(d_Cdiag[i-1],d_x0[i-1]));
Кеш L1, Кб 64*2 } __syncthreads();
Кеш L2, Кб 3072
// переход с k(итерации) на k+1(итерацию)
Пропускная способность шины if(i<N) {
8,528
процессор-чипсет, ГБ/с d_x0[i].x = d_x[i].x; d_x0[i].y = d_x[i].y;
Ширина шины L2 кеша, бит 256 }__syncthreads();
В вычислительных экспериментах по определе-
На вход в ядро передаются вектора главной диа-
нию ускорения моделирование распространения
электромагнитного излучения проводилось для по- гонали ( Adiag из (6)), верхней и нижней лент ( Bdiag и
лого волновода с идеальными проводящими стенка- Cdiag из (6)) и правой части. Размер блока равен 256
ми. В качестве начального условия была взята мода потокам (thread в терминах [10]), размер сетки (grid
волновода: в терминах [10]) выбирался равным N / 256. На каж-
227
Векторизация метода распространяющегося пучка и его реализация по технологии CUDA В.А. Алексеев, Д.Л. Головашкин
дом мультипроцессоре может исполняться совокуп- ядра отдана под кеш и сложные арифметико-
ность потоков до 24 (24 warp в терминах [10]) или логические устройства (АЛУ), на графическом ядре
768 потоков (размер warp = 32 потока). За счет этого размещено большое количество упрощенных АЛУ,
и достигается высокая производительность. которые имеют общую память на кристалле.
В скалярном варианте авторы остановились на
Заключение
итерационном методе решения (5) и для CPU как на
методе не только обеспечивающем корректное срав- В настоящей работе создан векторный алгоритм
нение эффективности обеих реализаций (векторной для решения уравнений разностной схемы Кранка-
и скалярной), но и позволяющем в будущем исполь- Николсона. Данный алгоритм реализован с использо-
зовать векторные инструкции SSE центрального ванием технологии CUDA применительно к BPM-FD
процессора. методу. Сравнение векторного алгоритма, выполняе-
На рис. 2 виден эффект от применения вектор- мого на GPU, cо скалярным аналогом на CPU про-
ных вычислений. демонстрировало увеличение производительности
в 22,5 раза для размерности задачи 3000 * 3000. Та-
ким образом, представляется перспективным исполь-
зование технологии CUDA для вычислений и по дру-
гим BPM методам.
Благодарности
Работа выполнена при поддержке грантов РФФИ
№ 10-07-00553-а, 10-07-00453-а и 10-01-00723-а и
гранта Президента РФ №НШ-7414.2010.9.
Литература
1. Feit, M.D. Light Propagation in Graded-Index Optical Fi-
bers / M.D. Feit, J.A. Fleck // Applied Optics. – 1978. –
Vol. 17, N. 24. – P. 3990-3998.
2. Gerdes, J. Beam-propagation algorithm based on the
Рис. 2. Время выполнения BPM метода (пунктирной method of lines / J. Gerdes, R. Pregla // Journal of the Op-
линией) на CPU и (сплошной) на GPU tical Society of America B. – 1991. – Vol. 8, N. 2. –
P. 389-394.
Зависимость времени выполнения от размерности 3. Huang, W. The Finite-Difference Vector Beam Propaga-
задачи для CPU параболическая, а для GPU - линей- tion Method: Analysis and Assessment / W. Huang, C. Xu,
ная. Это объясняется тем, что с ростом размерности S.-T. Chu, S.K. Chaudhuri // Journal of Lightwave Tech-
задачи число скалярных операций увеличивается про- nology. – 1992. – Vol. 10, N. 3. – P. 295-305.
порционально квадрату размерности сеточной облас- 4. Lu, Y.Y. Some Techniques for Computing Wave Propa-
ти, а число векторных операций растет линейно. Су- gation in Optical Waveguides / Y.Y. Lu // Communica-
щественной разницы на участке размерности от 100 до tions in Computational Physics. – 2006. – Vol. 1, N. 6. –
400 узлов сетки нет, что связано с возможностью цен- P. 1056-1075.
5. Гаврилов, А.В. Модифицированный метод распро-
трального процессора быстро обрабатывать небольшое
страняющегося пучка и его применение к расчету рас-
количество данных, которое может быть помещено в пространения в волноводах с изменяющимся профи-
его кеш (cache). С ростом размерности задачи такая лем показателя преломления / А.В. Гаврилов // Ком-
возможность исчезает и тысячи процессорных тактов пьютерная оптика. – 2008. – Т. 32, № 1. – С. 15-22.
уходят на пересылку данных из оперативной памяти в 6. OlympIOs: design, simulation and mask layout platform
кеш и обратно. Кроме того, центральный процессор //URL: http://www.c2v.nl/products/software/olympios-
выполняет ряд системных инструкций, снижающих software.shtml.
производительность. Длительность выполнения вы- 7. RSoft: Photonic Component Design Suite // URL:
числений для одного шага по z на GPU в 22,5 раз http://www.rsoftdesign.com/uicontrols/products/brochures
меньше аналогичной операции для CPU для размерно- /RSoftProductCatalog.pdf.
8. Голуб, Дж. Матричные вычисления / Дж. Голуб, Ч. Ван
сти исходной матрицы N * N = 3000 * 3000. Проведен- Лоун – М.: Мир, 1999. – 548 с.
ные исследования для значений n > 15000 показали по- 9. Ортега, Дж. Введение в параллельные и векторные
явление параболической зависимости длительности методы решения линейных систем / Дж. Ортега – М.:
вычислений от размерности задачи и для векторного Мир, 1991. – 364 с.
алгоритма, что связано с ограниченным размером па- 10. CUDA, Published by NVIDIA Corporation – 2701 San
мяти видеокарты. Однако среди реализаций BPM, Tomas Expressway Santa Clara, CA 95050,
встреченных авторами в литературе, отсутствуют се- http://www.nvidia.com/object/cuda_home_new.html
точные области с упомянутой размерностью. Следует 11. Евстигнеев, Н.М. Интегрирование уравнения Пуас-
отметить, что, хотя векторное ускорение, получаемое сона с использованием графического процессора тех-
нологии // Вычислительные методы и программирова-
при выполнении кода на видеокарте, велико, это впол- ние. – 2009. – Т. 10, № 2. – С. 82-87.
не ожидаемый результат, учитывая особенности архи- 12. Price, D.K. GPU-based accelerated 2D and 3D FDTD
тектуры GPU. В отличие от CPU, где большая часть solvers / D.K. Price, J.R. Humphrey, and E.J. Kelmelis –
228
2010 Компьютерная оптика, том 34, №2
Physics and Simulation of Optoelectronic Devices XV, 6. OlympIOs: design, simulation and mask layout platform
vol. 6468 of Proceedings of SPIE, San Jose, Calif, USA, //URL: http://www.c2v.nl/products/software/olympios-
January 2007. software.shtml.
13. Adinetz, A. Implementing Classical Ray Tracing on GPU 7. RSoft: Photonic Component Design Suite // URL:
– a Case Study of GPU Programming / A. Adinetz, S. Be- http://www.rsoftdesign.com/uicontrols/products/brochures
rezin – Proceedings of Graphicon, 2006. /RSoftProductCatalog.pdf.
14. Самарский, А.А. Введение в численные методы / 8. Golub, G. Matrix Computations / G. Golub, C. Van Loan
А.А. Самарский – М.: Наука, 1987.– 286 с. – Мoscow: “Mir” publisher, 1999. – 548 p. – (in Russian).
15. Косарев, В.И. 12 лекций по вычислительной матема- 9. Ortega J. Introduction to parallel and vector solution of
тике. Вводный курс / В.И. Косарев – М.: Физматлит, linear systems / J. Ortega – Moscow: “Mir” publisher,
2000. – 224 с. 1991. – 364 p. – (in Russian).
References 10. CUDA, Published by NVIDIA Corporation – 2701 San
Tomas Expressway Santa Clara, CA 95050,
1. Feit, M.D. Light Propagation in Graded-Index Optical Fi- http://www.nvidia.com/object/cuda_home_new.html
bers / M.D. Feit, J.A. Fleck // Applied Optics. – 1978. – 11. Evstigneev, N.M. Integration of the equation of Puassona
Vol. 17, N. 24. – P. 3990-3998. with use of the graphic processor of technology // Com-
2. Gerdes, J. Beam-propagation algorithm based on the
puting methods and programming. – 2009. – Т. 10, N 2. –
method of lines / J. Gerdes, R. Pregla // Journal of the Op-
P. 82-87. – (in Russian).
tical Society of America B. – 1991. – Vol. 8, N. 2. –
12. Price, D.K. GPU-based accelerated 2D and 3D FDTD
P. 389-394.
solvers / D.K. Price, J.R. Humphrey, and E.J. Kelmelis //–
3. Huang, W. The Finite-Difference Vector Beam Propaga-
tion Method: Analysis and Assessment / W. Huang, C. Xu, Physics and Simulation of Optoelectronic Devices XV,
S.-T. Chu, S.K. Chaudhuri // Journal of Lightwave Tech- vol. 6468 of Proceedings of SPIE, San Jose, Calif, USA,
nology. – 1992. – Vol. 10, N. 3. – P. 295-305. January 2007.
4. Lu, Y.Y. Some Techniques for Computing Wave Propa- 13. Adinetz, A. Implementing Classical Ray Tracing on GPU
gation in Optical Waveguides / Y.Y. Lu // Communica- – a Case Study of GPU Programming / A. Adinetz, S. Be-
tions in Computational Physics. – 2006. – Vol. 1, N. 6. – rezin – Proceedings of Graphicon, 2006.
P. 1056-1075. 14. Samarskii, A.A. Introduction in numerical methods
5. Gavrilov, A.V. The modified method of beam propaga- /А.А. Samarskii – Мoscow: “Nayka” publisher, 1987. –
tion and its application to distribution calculation in wave 286 p. – (in Russian).
guides with a changing profile of an indicator of refraction 15. Kosarev, V.I. 12 lectures on calculus mathematics. An in-
/ A.V. Gavrilov // Computer Optics. – 2008. – V. 32, N 1. troduction course / V.I. Kosarev – Moscow: “Fizmatlit”
– P. 15-22. publisher, 2000. – 224 p. – (in Russian).
Сведения об авторах
229
Векторизация метода распространяющегося пучка и его реализация по технологии CUDA В.А. Алексеев, Д.Л. Головашкин
230