Вы находитесь на странице: 1из 6

2010 Компьютерная оптика, том 34, №2

ВЕКТОРИЗАЦИЯ МЕТОДА РАСПРОСТРАНЯЮЩЕГОСЯ ПУЧКА


И ЕГО РЕАЛИЗАЦИЯ ПО ТЕХНОЛОГИИ CUDA
Алексеев В.А. 2, Головашкин Д.Л. 1
1
Институт систем обработки изображений РАН,
2
Самарский государственный аэрокосмический университет им. С.П.Королева
Аннотация
Разработан векторный алгоритм метода решения уравнения Гельмгольца (BPM подход),
основанный на представлении вычислений в модели SIMD (Single Instruction, Multiple Data).
Реализация данного алгоритма на графическом процессоре NVIDIA GeForce GTS 250 по
технологии CUDA продемонстрировала ускорение вычислений в 22,5 раза по сравнению с
расчетами на центральном процессоре Intel Core Duo E7500.
Ключевые слова: уравнение Гельмгольца, BPM метод, векторный алгоритм, графический
процессор, покомпонентное произведение, CUDA.

Введение были, данной работой авторы рассчитывают за-


Развитие оптических технологий определяет не- полнить этот пробел.
обходимость совершенствования известных и соз- 1. Векторный алгоритм для разностной схемы
дания новых методов моделирования распростране- Кранка-Николсона
ния электромагнитного излучения. В области воло-
Представляя скалярный вариант BPM подхода
конной и интегральной оптики получили широкую
(двумерный случай), принято [3] рассматривать
известность варианты метода распространяющегося
уравнение Гельмгольца в виде:
пучка (BPM – Beam propagation method): Fast Fourier
transform Beam propagation method (FFT-BPM) [1], ∂ 2U  ∂ 2 
Method of lines Beam propagation method (MoL-BPM) +  2 + k02 n2  U = 0 , (1)
∂z 2
 ∂y 
[2], Finite-difference Beam propagation method
(FD-BPM) [3], Finite elements Beam propagation где под величиной U, определенной на вычислитель-
method (FE-BPM) [4], модифицированный метод но области D = {( y , z ) : 0 ≤ y ≤ Ly ; 0 ≤ z ≤ Lz } , пони-
распространяющегося пучка [5]. Объединяет упо-
мянутые варианты дискретизация функции ампли- мают напряженность электрического поля (в случае
тудно-фазового распределения поля и численное ТЕ-поляризованного излучения) или напряженность
решение уравнения Гельмгольца относительно этой магнитного (в случае TM-поляризованного излуче-
функции с заданными начальными условиями. По- ния). Используя приближение «медленно меняю-
пулярность метода объясняется простотой реализа- щейся огибающей» [2], пренебрегают значением
ции и достаточной строгостью подхода в приведен- второй производной по z, тем самым понижая поря-
ных областях оптики. док дифференцирования. Тогда уравнение (1) пред-
К сожалению, развитие метода сдерживается его ставляют как:
высокой вычислительной сложностью. Так, произ- ∂Ψ i  2 2 ∂2 
водители известного пакета OlympIOs [6] вынужде- =  k0 n* − k0 n − 2
2 2
Ψ , (2)
∂z 2k0 n*  ∂y 
ны включить в него модуль для параллельных вы-
числений. Компания RSoft предлагает различные где Ψ ( y, z ) = U ( y, z ) exp(ik0 n* z ) , k0 – волновое число
способы оптимизации параметров и решения под в вакууме, n* – базовый показатель преломления,
требования заказчика [7]. К настоящему времени
известна альтернативная технология снижения дли- характеризующий точность огибающей. При этом
тельности расчетов, основанная на векторизации ал- распространение излучения в неоднородной среде
горитма. Такие алгоритмы известны достаточно считают сходным с распространением в однородной
давно [8,9], однако до последнего времени не полу- среде с показателем преломления n* . Уравнение (2)
чили распространения в силу недоступности соот- называют уравнением Гельмгольца в форме Френеля.
ветствующей аппаратной базы широкому кругу ис- Записывая разностную схему для (2), наложим
следователей. Технология CUDA [10], получившая на D следующую сеточную область:
всеобщее признание с 2007 года, открывает возмож- Dh =
ность реализации векторных алгоритмов на обыч-
ных персональных компьютерах.  Ly L  (3)
= ( yi , zk ) : yi = ihy , hy = ; zk = khz , hz = z  ,
С ее появлением вернулся интерес к вектори-  N K
зации хорошо известных численных методов: Га-
усса-Зайделя [11], FDTD [12], Ray Tracing [13] и где hy и hz – шаги дискретизации, характеризующие
многих других. Для BPM подхода аналогичные сходимость разностного решения. Тогда схема
исследования в доступной литературе найдены не Кранка-Николсона для уравнения (2) [14] при ис-

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).

VECTORIZATION OF THE BEAM PROPAGATION METHOD USING CUDA TECHNOLOGY


V. A. Alekseeev 1, D. L. Golovashkin2
1
S.P. Korolyov Samara State Aerospace University,
2
Image Processing Systems Institute of the RAS
Abstract
We propose a vector algorithm for solving the helmholtz equation through BPM (beam
propagation method) by representing the computation in the SIMD (single instruction, multiple
data) model. The implementation of the given algorithm on graphic processor NVIDIA GeForce
GTS 250 on technology CUDA has shown acceleration of calculations in 22.5 times in
comparison with the computation on the central processor Intel Core Duo E7500.
Key words: helmholtz equation, beam propagation method, vector algorithm, graphics proces-
sor, componentwise product, cuda.

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

Алексеев Вадим Александрович, аспирант кафедры наноинженерии, Самарский


государственный аэрокосмический университет им. С.П. Королева. E-mail:
alekseev.v.a@inbox.ru.
Область научных интересов: векторные и параллельные матричные вычисления,
волоконная оптика и фотонные кристаллы.

Vadim Aleksandrovich Alekseev, the post-graduate student of chair nanoengineering the


Samara State Space University of S.P.Korolev. E-mail: alekseev.v.a@inbox.ru.
Scientific interests: vector and parallel matrix calculations, fiber optics and photon crystals.

229
Векторизация метода распространяющегося пучка и его реализация по технологии CUDA В.А. Алексеев, Д.Л. Головашкин

Головашкин Димитрий Львович, доктор физико-математических наук, доцент,


старший научный сотрудник Института систем обработки изображений РАН. E-mail:
dimitriy@smr.ru. Область научных интересов: разностное решение уравнений Максвелла
(FDTD метод); дифракционная оптика; векторные и параллельные матричные
вычисления.

Dimitry Lvovich Golovashkin, Doctor of Physical and Mathematical Sciences, Associate


Professor, Senior Researcher of Image Processing Systems Institute Russian Academy of
Scienes. E-mail: dimitriy@smr.ru. Scientific interests: FDTD method, subwave optics, vector
and parallel algorithms for matrix computation.

Поступила в редакцию 28 апреля 2010 г.

230

Вам также может понравиться