22. How to Optimize Data Transfer in CUDA C/C++ // NVIDIA Developer: website [Электронный ресурс]. URL: https://devblogs.nvidia.com/parallelforall/how-optimize-data-transfers-cuda


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
Санкт
-
Петерˡургский государственный ˽лектротехнический университет

įЛ˝˒Иİ им. ˂.И.˓льянова (Ленина)

(СПˡ˃˝˒˓ įЛ˝˒Иİ)


ˍаправление

01.04.02
-

Прикладная математика и
информатика

Программа

ˌатематическое и программное оˡеспечение
вычислительных ма˸ин

˔акультет

ˊ˒И

ˊафедра

ˌˎ ˝˂ˌ

ˊ за˹ите допустить


ˇав. кафедрой


ˊринкин

ˊ.˂.



˂˛П˓Сˊˍˀ˟ ˊ˂ˀЛИ˔Иˊˀ˖
Иˎˍˍˀ˟ Рˀˁˎ˒ˀ

ˌˀ˃ИС˒Рˀ


˒ема:
РˀˇРˀˁˎ˒ˊˀ И ПРˎ˃Рˀˌ
ˌˍˎ
-
ˀППˀРˀ˒ˍˀ˟ Р˅ˀЛИˇˀ˖И
˟
ˀЛ˃ˎРИ˒ˌˎ˂ ˖И˔Рˎ˂ˎˉ
˔ИЛ˜˒Рˀ˖ИИ ˍˀ ˂˛˗ИСЛ
И˒˅Л˟˕ С
˒˅˕ˍˎЛˎ˃И˅ˉ
CUDA


Студент(ка)




ˁогаевский ˄.˂.



подпись



Руководитель

к.т.н.



ˊаплун ˄.И.



подпись



ˊонсультанты

к.т.н.



Иванов
ˀ
.
ˍ
.



подпись




к.т.н.



˟новский ˂.˂.



подпись















Санкт
-
Петерˡург

2017

2


ˇˀ˄ˀˍИ˅

ˍˀ ˂˛П˓Сˊˍ˓˞ ˊ˂ˀЛИ˔И
ˊˀ˖Иˎˍˍ˓˞
Рˀˁˎ˒˓



˓твер˦да˾


ˇав. кафедрой ˌˎ ˝˂ˌ


ÈÈÈÈÈÈÈÈÈÈÈÈ ˊринкин ˊ.˂.


įÈÈÈİÈÈÈÈÈÈÈÈÈÈÈÈÈÈ
17

г.


Студент

ˁогаевский ˄.˂.


˃руппа

1381

˒ема раˡоты:
Разраˡотка и программно
-
аппаратная реализация алгоритмов
цифровой фильтрации на вычислителях с
технологией C¾DA
.

ˌесто выполнения ˂ˊР: СПˁ˃˝˒˓ įЛ˝˒Иİ

Исходные данные (технические треˡования):
н
еоˡходимо реализовать и
провести анализ производительности цифрового фильтра в системе
остаточных классов и ˡанка фильтров в алгеˡре кватернионов.

Содер˦ание ˂ˊР:
1.

Постановка задачи цифровой фильтрации. .
Синтез
цифровых фильтров
.

3. Программно
-
аппаратная реализация разраˡотанных
методов.

Перечень отчетных материало
в:
пояснительная записка, илл˾стративный
материал

˄ополнительные разделы:
специальные вопросы оˡеспечения ˡезопасности


˄ата выдачи задания

˄ата представления ˂ˊР к за˹ите

įÈÈÈİÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈ г.

įÈÈÈİÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈ г.



Студент


ˁогаевский ˄.˂.

Руководитель


к.т.н.


ˊаплун ˄.И.

ˊонсультант к.т.н.


Иванов
ˀ.ˍ.




3


ˊˀЛ˅ˍ˄ˀРˍ˛ˉ ПЛˀˍ ˂˛П
ˎЛˍ˅ˍИ˟

˂˛П˓Сˊˍˎˉ ˊ˂ˀЛИ˔Иˊˀ˖
Иˎˍˍˎˉ Рˀˁˎ˒˛



˓твер˦да˾


ˇав. кафедрой ˌˎ ˝˂ˌ


ÈÈÈÈÈÈÈÈÈÈÈÈ ˊринкин ˊ.˂.


įÈÈÈİÈÈÈÈÈÈÈÈÈÈÈÈÈÈ
17

г.


Студент

ˁогае
в
ский ˄.˂.


˃руппа

1381

˒ема раˡоты:
Разраˡотка и программно
-
аппаратная
реализация алгоритмов
цифровой фильтрации на вычислителях с технологией C¾DA
.


̑
п/п

ˍаименование раˡот

Срок
выполнения

1

ˎˡзор литературы по теме раˡоты

04
.
02
ķ

20
.
02

2

Постановка задачи цифровой фильтрации

2
0.0
2

ķ

1
0.0
3

3

Синтез цифровых фильтров

1
0.0
3

ķ

05
.0
4

4

Программно
-
аппаратная реализация разраˡотанных
методов

0
5
.0
4

ķ

10.05

5

ˎформление пояснительной записки

1
0.0
5

ķ

17
.0
5

6

ˎформление илл˾стративного материала

17.05
ķ

20.05


Студент


ˁогаевский ˄.˂.

Руководитель

к.т.н.


ˊаплун ˄.И.











4


Р˅˔˅Рˀ˒


Пояснительная записка
90

стр.,
17

рис
.,
6

таˡл.,
29

ист.

˖И˔Рˎ˂ˀ˟ ˎˁРˀˁˎ˒ˊИ С
И˃ˍˀЛˎ˂, ˖И˔Рˎ˂ˀ˟ ˔И
Л˜˒Рˀ˖И˟,
NVIDIA

CUDA
, СИС˒˅ˌˀ ˎС˒ˀ˒ˎ˗ˍ˛˕

ˊЛˀССˎ˂, ˁˀˍˊ ˔ИЛ˜˒Р
ˎ˂,
ˊ˂ˀ˒˅РˍИˎˍ˛


ˎˡ˺ектом
разраˡотки

явля˾тся
алгоритмы

цифровой фильтрации
.

˖ель раˡоты
ķ

разраˡотки и реализация высокопроизводительных
алгоритмов цифровой фильтрации
.

˂ данной раˡоте ˡыли разраˡотаны и реализованы фильтр с конечной
импульсной характеристикой, использу˾˹ий систему остаточных, и ˡанк
цифровых

фильтров, использу˾˹ий кватернионы в качестве передаточных
функций фильтров анализа и синтеза.

˄ля реализации данных алгоритмов с цель˾ получения наиˡоль˸ей
производительности ˡыла выˡрана технология
NVIDIA

CUDA
, которая
производит параллельные вычисления

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

Помимо
˽того, для сравнения результатов данные алгоритмы ˡыли реализованы на
центральном процессоре.

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

центральном
процессоре.









5


ABSTRACT


The main goal of this final qualifying work is
developing and implementation
of
finite impulse response

filter

using a residual system

and
digital filter
s

bank using
quaternions as transfer functions of analysis
and synthesis filters
.

To implement these
algorithms, NVIDIA CUDA technology was chosen to obtain the highest
performance, which produces parallel computing on a graphics processor.




















6


Сˎ˄˅РˆˀˍИ˅

ˎпределения, оˡозначения и сокра˹ения

................................
................................

7

 Постановка задачи цифровой фильтрации

................................
............................

8

. ˂ведение в цифрову˾ фильтраци˾

................................
................................
.

8

. История развития и современное состояние теории цифровой
фильтрации

................................
................................
................................
.............

17

.3 Реализация
цифровых фильтров. Программно
-
аппаратная ˡаза

................

19

.3. Современный подход к синтезу цифровых фильтров
............................

20

1.3.2
Реализация цифровых фильтров на ПЛИС

................................
.............

22

.3.3 Реализация цифровых фильтров на вычислителях с технологией
CUDA

................................
................................
................................
...................

27

 Синтез цифровых фильтров, ˽ффективных по критери˾ минимума
вычислительной сло˦ности и аппаратных затрат

................................
.................

38

. ˝тапы разраˡотки цифровых фильтров

................................
.........................

38

. ˀлгоритмы с использованием Сˎˊ

................................
...............................

45

.3 Параунитарный ˡанк фильтров в алгеˡре кватернионов

.............................

50

3 Программно
-
аппаратная реализация разраˡотанных методов

..........................

58

3. ˎсоˡенности реализации на C¾DA

................................
...............................

58

3. Результаты реализации

................................
................................
....................

70

3.3 ˀнализ возмо˦ных путей повы˸ения производительности

.......................

74

4
Специальные вопросы оˡеспечения
ˡезопасности

................................
.............

77

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

................................
................................
................................
...

88




7


ˎПР˅˄˅Л˅ˍИ˟, ˎˁˎˇˍˀ˗
˅ˍИ˟ И СˎˊРˀ˙˅ˍИ˟


˂ настоя˹ей пояснительной записке применя˾т следу˾˹ие термины с
соответству˾˹ими определениями:

ˀ˖П
ķ

аналого
-
цифровой преоˡразователь

ˀ˗˕
ķ

амплитудно
-
частотная характеристика

ˁИ˕
ķ

ˡесконечная импульсная характеристика

ˁ˔
ķ

ˡанк фильтров

Сˎˊ
ķ

система остаточных классов

ˊИ˕
ķ

конечная импульсная характеристика

П˂ˌ
ķ

персональная вычислительная ма˸ина

Пˇ˓

ķ

постоянное запомина˾˹ее устройство

ПЛИС
ķ

программируемая логическая интегральная схема

Пˎ
ķ

программное оˡеспечение

П˓ˁ˔
ķ

параунитарный ˡанк фильтров

П˔
ķ

полосовой фильтр

Р˔
ķ

ре˦екторный фильтр

˔˂˗
ķ

фильтр верхних частот

˔ˍ˗
ķ

фильтр ни˦них частот

˔˗˕
ķ

фазово
-
частотная характеристика

˖ˎС
ķ

цифровая
оˡраˡотка сигналов

˝˂ˌ
ķ

˽лектронно
-
вычислительная ма˸ина

CPU

ķ

центральный процессор

DSP

ķ

процессор для оˡраˡотки цифровых сигналов

FPGA

ķ

программируемая логическая интегральная схема

GPU

ķ

графический процессор

IDE

ķ

среда разраˡотки

LUT

ķ

таˡлица поиска

SOC

ķ

система на кристалле

8


1
ПˎС˒ˀˍˎ˂ˊˀ ˇˀ˄ˀ˗И ˖И
˔Рˎ˂ˎˉ ˔ИЛ˜˒Рˀ˖ИИ

1.1
˂
ведение в цифрову˾ фильтраци˾

˖ифровая оˡраˡотка сигналов
ķ

˽то оˡласть науки и техники, в которой
изуча˾тся оˡ˹ие для

различных технических прило˦ений принципы, методы и
алгоритмы оˡраˡотки сигналов средствами цифровой вычислительной техники.

ˎˡоˡ˹енная схема ˖ˎС отоˡра˦ает последовательность процедур,
неоˡходимых для преоˡразования исходного аналогового сигнала
x
(
t
)
в д
ругой
аналоговый сигнал
y
(
t
)
по заданному алгоритму средствами цифровой
вычислительной техники.

[1]

˂ цифровой оˡраˡотке сигнала мо˦но выделать три основных ˽тапа:

þ

˔ормирование цифрового сигнала
x
(
nT
)
из исходного аналогового
сигнала

x
(
t
)
.

þ

Преоˡразование цифрового сигнала
x
(
nT
)

в цифровой сигнал

y
(
nT
)

по
заданному алгоритму.

þ

˔ормирование результиру˾˹его аналогового сигнала
y
(
t
)
из цифрового
сигнала
y
(
nT
).

˂ оˡоˡ˹енной схеме ˖ˎС ˽тим ˽тапам соответству˾т три
функциональных устройства
:

þ

ˊодер.

˔ормирует цифровой сигнал из аналогового.

þ

˓стройство ˖ˎС.

˂ыполняет заданный алгоритм над цифровым
сигналом.

þ

˄екодер.

˔ормирует аналоговый сигнал из цифрового.

ˎˡоˡ˹енная схема ˖ˎС представлена на рисунке .


Рисунок
1

ķ

ˎˡоˡ˹енная

схема ˖ˎС

ˊодер

˓стройство
˖ˎС

x(nT)

y(nT)

y(t)

˄екодер

x(t)

9


ˊак правило
, о
дной
из основных операций в устройстве ˖ˎС является
цифровая фильтрация. ˎна

является одним из наиˡолее мо˹ных
инструментальных средств ˖ˎС.
˔ильтрация
ĸ

преоˡразование сигналов с
цель˾ изменения соотно˸ения ме˦ду их различными частотными
составля˾˹ими.

[2]

Сигнал
ķ

физический процесс, несу˹ий в сеˡе информаци˾.
ˌатематически сигн
алы описыва˾тся функциями времени
f
(
t
)
, тип которых
зависит от сигнала
.
Сигналы ˡыва˾т аналоговыми, дискретными и цифровыми.

þ

ˀналоговый сигнал
ķ

сигнал, который непрерывен во времени.

þ

˄искретный сигнал
ķ

сигнал, который задан в фиксированные моменты
времени.

þ

˖ифровой сигнал
ķ

дискретный сигнал, над которым выполнена операция
квантования.

С
у˹ествует два вида фильтров:


þ

ˀналоговый фильтр
ķ

˽то частотно
-
изˡирательная цепь, которая
оˡеспечивает селекци˾ аналоговых сигналов по частоте
.

þ

˖ифровой фильтр
ķ

˽то частотно
-
изˡирательная цепь, которая
оˡеспечивает селекци˾ цифровых сигналов по частоте
.

Процесс проектирования цифровых фильтров состоит из тех ˦е ˽тапов,
что и процесс проектирования аналоговых фильтров. Сначала формулиру˾тся
треˡования к ˦елаемым ха
рактеристикам фильтра, по которым затем
рассчитыва˾тся параметры фильтра. ˀмплитудная и фазовая характеристики
формиру˾тся аналогично аналоговым фильтрам. ˊл˾чевое различие ме˦ду
аналоговым и цифровым фильтрами закл˾чается в том, что, вместо вычисления
вел
ичин сопротивлений, емкостей и индуктивностей для аналогового фильтра,
рассчитыва˾тся значения ко˽ффициентов для цифрового фильтра. Иными
словами, в цифровом фильтре числа заменя˾т физические сопротивления и
емкости аналогового фильтра. ˝ти числа явля˾тся
ко˽ффициентами фильтра,
10


они постоянно находятся в памяти и использу˾тся для оˡраˡотки (фильтрации)
дискретных данных, поступа˾˹их от ˀ˖П.

Помимо легкости вычисления ко˽ффициентов по сравнени˾ с
вычислениями сопротивлений, индуктивностей и емкостей, мо˦но
выделить и
другие п
реиму˹еств
а

цифровых фильтров перед аналоговыми:

[3]

þ

˂ысокая точность.

þ

Линейная фаза.

þ

Стаˡильность.

þ

Легки в моделировании и проектировании.

þ

˃иˡкость настройки, легкость изменения.

þ

ˊомпактность.

˒ем не менее, цифровые фильтры не могут
являться ре˸ением всех
возмо˦ных задач фильтрации, возника˾˹их при оˡраˡотке сигналов.

Су˹ествует много прило˦ений, в которых цифровые фильтры дол˦ны
раˡотат
ь в реальном мас˸таˡе времени. ˂

них накладыва˾тся определенные
треˡования на процессор
, производя˹
ий вычисления,

в зависимости от частоты
дискретизации и сло˦ности фильтра. ˊл˾чевым моментом является то, что
процессор дол˦ен проводить все вычисления в течение интервала
дискретизации, чтоˡы ˡыть готовым к оˡраˡотке следу˾˹его отсчета данных.

ˎднако, про
изводительности процессора мо˦ет не хватать для раˡоты на столь
высоких частотах. По˽тому основным недостатком цифровых фильтров
является трудность раˡоты с высокочастотными сигналами.

ˍедостатки цифровых фильтров
по сравнени˾ с
аналоговыми:

þ

˒рудность раˡо
ты с высокочастотными сигналами.

þ

˒рудность раˡоты в реальном времени.

˂ ˡоль˸инстве современных систем оˡраˡотки сигналов использу˾тся
комˡинации аналоговых и цифровых методов для реализации ˦елаемых
11


функций и использу˾тся преиму˹ества всех методов, как аналоговых, так и
цифровых.

ˊак правило, цифровая фильтрация занимает 5
-
8% вычислений при
цифровой оˡраˡотке сигнала, по˽тому
современные цифровые фильтры
дол˦ны оˡеспечивать высоку˾ точность и скоро
сть вычислений, при ˽том
раˡотая на ˸ироком диапазоне частот порядка сотен мегагерц.
Растут порядки
фильтров и разрядность оˡраˡатываемых данных
,
следовательно,

растут и
оˡ˺емы вычислений, при которых сло˦но доˡиться ˦елаемой
производительности. По˽тому ос
новн
ая

задач
а

цифровой фильтрации
ķ

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

По типу частотной изˡирательности

цифровые фильтры мо˦но разделить
на
четыре

вида:

þ

˔ильтр ни˦них частот (˔ˍ˗)
.

þ

˔ильтр высоких частот (˔˂˗)
.

þ

Полосовой фильтр (П˔)
.

þ

Ре˦екторный фильтр (Р˔)
.

˔ильтр низких частот пропускает частотный спектр сигнала ни˦е
определенной частоты и подавляет частотный спектр сигнала вы˸е ˽той
частоты.

ˀмплитудно
-
частотная характеристика филь
тра низких частот

представлена на рисунке 
:


Рисунок
2

ķ

ˀ˗˕ фильтра низких частот

12


˔ильтр высоких частот пропускает частотный спектр сигнала вы˸е
определ̀нной частоты и подавляет частотный спектр сигнала ни˦е ˽той
частоты.
ˀмплитудно
-
частотная характеристика фильтра высоких частот

представлена на рисунке 3
:


Рисунок
3

ķ

ˀ˗˕ фильтра высоких частот

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

и подавляет частоты, не вход
я˹ие в него. ˀмп
литудно
-
частотная
характеристика

полосового фильтра

представлена на рисунке 4
:


Рисунок
4

ķ

ˀ˗˕ полосового фильтра

Ре˦екторный фильтр подавляет частоты, находя˹иеся в определенном
диапазоне
, и пропускает частоты,
не входя˹ие в него. ˀмплитудно
-
частотная
характеристика ре˦екторного фильтра

представлена на рисунке 5
:

13



Рисунок
5

ķ

ˀ˗˕ ре˦екторного фильтра

ˌатематические модели цифровых фильтров описыва˾тся разностными
уравнениями:

[5]

ߛ
(
ߐ
)


߄

ߚ
(
ߐ

ߋ
)


߃

ߛ
(
ߐ

ߌ
)
ɧ









(
ϻ
)













где
N
, M

ķ

константы
,

порядок фильтра
-

ĕĉĠ


(
޶

Ϲ
ɧ
޵

Ϲ
)

,
x
(
n
)

ķ

входной
сигнал,
y
(
n
)

ķ

выходной сигнал,
߃
ɧ
߄

-

ко˽ффициенты.

Разностное уравнение
ķ

уравнение, связыва˾˹ее значение некоторой
неизвестной функции в л˾ˡой точке с ее значением в одной или нескольких
точках, отстоя˹их от данной на определенный интервал.

˂ зависимости от вида
разностного уравнения ц
ифровые фильтры мо˦но классифицировать на
ˊИ˕ и
ˁИ˕ фильтры.

ˊИ˕ фильтр (
фильтр с конечной импульсной характеристикой
)
ķ

один из
видов линейных цифровых фильтров, характерной осоˡенность˾ которого
является ограниченность по времени его импульсной характеристики (с какого
-
то момента времени она становится точно равной нул˾).

˄остоинства:

þ

ˍе треˡу˾т проверки на устойчивость,
так как все ˊИ˕ фильтры
устойчивы.

þ

ˊИ˕

фильтры могут иметь строго линейну˾ фазову˾
характеристику.

ˍедостатки:

14


þ

Име˾т ˡоль˸ий порядок, чем ˁИ˕ фильтры с аналогичными
характеристиками.

˂о временной оˡласти соотно˸ение вход/выход для цифровых фильтров
описыва
ется в виде разностного уравнения.


˂
z
-
оˡласти соотно˸ение вход/выход описывается с помо˹ь˾
передаточной функции. Передаточная функция
ķ

отно˸ение выходного сигнала
к входному в
z
-
оˡласти.

Помимо разностного уравнения и передаточной функции цифровые
фильтры могут ˡыть описаны с помо˹ь˾ структурных схем.

Разностное уравнение ˊИ˕

фильтра
:

ߛ
(
ߐ
)


߄

ߚ
(
ߐ

ߋ
)






ɧ





(
Ϲ
)

где
(
N
-
1)

ķ

порядок фильтра,
x
(
n
)

ķ

входной сигнал,
y
(
n
)

ķ

выходной сигнал
,
߄

͓͎͖͗ͦ͑͑͛ͤ͟͝͝
.


Передаточная функция ˊИ˕

фильтра:

ް
(
ߜ
)


߄

ߜ








ɧ












(
Ϻ
)

где
(
N
-
1)

ķ

порядок фильтра,
߄

͓͎͖͗ͦ͑͑͛ͤ͟͝͝
.

Прямая каноническая структура ˊИ˕

фильтра:


Рисунок
6

ķ

Пр
ямая каноническая структура ˊИ˕
фильтра

15


ˊИ˕ фильтр так˦е называ˾т н
е
рекурсивным, так как

в его разностном
уравнении отсутствует связь выходного сигнала в теку˹ий момент времени со
значением выходного сигнала в пред˸еству˾˹ий момент времени.

ˁИ˕ фильтр (
фильтр с ˡесконечной импульсной характеристикой
)
ķ

один
из видов линейных фильтров, использ
у˾˹их один или ˡолее своих выходов в
качестве входа, то есть оˡразу˾˹их оˡратну˾ связь
.

˄остоинства:

þ

Име˾т мень˸ий порядок, чем ˊИ˕ фильтры с аналогичными
характеристиками.

ˍедостатки:

þ

˒реˡу˾т проверки на устойчивость.


Разностное уравнение ˁИ˕
-
фильтра
:

ߛ
(
ߐ
)


߄

ߚ
(
ߐ

ߋ
)


߃

ߛ
(
ߐ

ߌ
)
ɧ









(
ϻ
)













где
N
, M

ķ

константы
,

порядок фильтра
-

ĕĉĠ


(
޶

Ϲ
ɧ
޵

Ϲ
)

,

x
(
n
)

ķ

входной
сигнал,
y
(
n
)

ķ

выходной сигнал
,
߃
ɧ
߄

-

ко˽ффициенты
.

Передаточная функция ˁИ˕
-
фильтра:


ް
(
ߜ
)

щ
߄

ߜ








Ϲ

щ
߃

ߜ








ɧ










(
ϼ
)

где
(
N
-
1)

ķ

порядок нерекурсивной части фильтра,
(
M
-
1)

ķ

порядок рекурсивной
части фильтра,
߃
ɧ
߄

-

ко˽ффициенты.


Прямая каноническая структура ˁИ˕

фильтра

представлена на рисунке 7
:

16



Рисунок
7

ķ

Прямая каноническая структура ˁИ˕
-
фильтра


ˁИ˕

фильтр называ˾т рекурсивным ввиду наличия связи ме˦ду его
выходными отсчетами.











17


1.2
И
стория развития и современное состояние теории цифровой
фильтрации


˂ 3
-
50
-
х годах
XX

века перед учеными того времени стояла проˡлема
недостаточной точности и стаˡильности аналоговой оˡраˡотки сигналов.
˂ыда˾˹иеся ученые того времени, ˃. ˍайквист, ˂.ˀ. ˊотельников, ˍ.ˀ.
ˆелезнов и др., задумывались о
замене оˡраˡотки непрерывной информации

ˡолее простыми задачами.

˂ 4
-
х годах
XX

века начали появляться первые ˝˂ˌ. Именно тогда и
возникло такое фундаментальное направление науки, как цифровая оˡраˡотка
сигналов. ˎднако, недостаточная вычислительная мо˹ность ма˸ин того
времени не позволяла пр
оизводить оˡраˡотку сигналов в реальном времени.

˂ 5
-
ые

год
ы проˡлеме цифровой фильтрации ˡыли посвя˹ены труды
американского ученого Линвеля
.

˂ 6
-
х годах цифровая оˡраˡотка сигналов вы˸ла на новый уровень с
появлением малых ˝˂ˌ, ориентированных на оˡра
ˡотку данных в реальном
времени. ˁыли оценены потенциальные возмо˦ности изоˡретенных ˝˂ˌ, что
привело развити˾ цифровой фильтрации и спектрального анализа.


˖ифровая фильтрация и спектральный анализ
возникли из теории
дискретных систем и
активнее всего развивались в
1965
-
975 гг. ˎˡ˹ей
основой ˡыл синтез цифровых фильтров частотной селекции
. Первый вклад
ˡыл сделан ˄. ˊайзером, рассчитав˸им цифровые фильтры с ну˦ными
характеристиками, используя ˡилинейное преоˡразование. ˂ то˦е время
учены
ми ˊули и ˒ь˾к
и

ˡыл разраˡотан
новый

метод вычисления

преоˡразование ˔урье
, который впоследствии ˡыл улуч˸ен и стал известен как
алгоритм ˡыстрого преоˡразования ˔урье.

˄анный алгоритм показал,
насколько цифровые методы оˡраˡотки могут ˡыть выгоднее аналог
овых.


˂ 7
-
ых г
одах

появля˾тся первые однокристальные микропроцессоры и
нач
ин
а
ет

активно развиваться направление цифровой частотной селекции
сигналов
, которое использовалось для цифровой оˡраˡотки речи и звука
.

18



˂ 8
-
ых годах начала появляться первые сиг
нальные процессоры,
ориентированные своей архитектурой на высоко˽ффективну˾ программно
-
аппаратну˾ реализаци˾ классических алгоритмов ˖ˎС.


˂ 9
-
ых

годах

для ре˸ения задач цифровой фильтрации начина˾т
активно применяться программируемые логические интегральные схемы
(ПЛИС)
.

ˊонцепция построения системы ˖ˎС ˡазируется на ˸ироком
использовании потенциальных возмо˦ностей ПЛИС и методике оптимального
проектиро
вания, позволя˾˹ей достичь ну˦ных результатов при минимальных
аппаратных затратах.


˂ настоя˹ее время
ˡурно развивается цифровая техника. ˂се ˡоль˸ая
часть оˡраˡотки сигналов переходит в цифровой вид
, так как цифровая
фильтрация позволяет сформировать цифр
овой сигнал ну˦ного вида и формы
.
П
ри цифровой фильтрации сигналов ставится задача получения наиˡоль˸ей
производительности и наимень˸их аппаратных затрат.
˄ля ˽того и
спользу˾тся

специальные процессоры для оˡраˡотки цифровых сигналов (
DSP
),
многоядерные выс
окопроизводительные процессоры

(
CPU
)
,
графические
процессоры(
GPU
), системы на кристалле (
SoC
), программируемые логические
интегральные схемы (
FPGA
) и другие современные технологии.









19


1.3
Р
еализация цифровых фильтров. Программно
-
аппаратная
ˡаза

ˍемалова˦ну˾ роль в дости˦ении ну˦ной производительности играет не
только выˡор математической модели цифрового фильтра, но и их реализация.
Различа˾т
три

вида реализации цифровых фильтров:

[1]

þ

ˀппаратн
ая

ķ

фильтр реализован с использованием разнооˡразных
функциональных ˡлоков, таких как регистры, сумматоры, умно˦ители,
устройств памяти, логических ˽лементов и т.д., которые оˡ˺единя˾тся в
единое устройство. ˒акой фильтр
реализуется на ˽лементах интегральных
схем.

þ

Программн
ая

ķ

фильтр представлен в виде прог
раммы, написанной на
языке программирования, соответству˾˹ем конкретному операционному
ˡлоку. ˒акие программы выполня˾тся

на ПЛИС, процессоре или
микроконтроллере.

þ

Программно
-
аппаратная
ķ

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

˂ настоя˹ее время активно развива˾тся вычисления на графических
процессорах, становятся популярными технологии
NVIDIA

CUDA

и
OpenCL
.
˃рафический процессор, ˡлагодаря многоядерности, позволяет производить
огромное количество однотипн
ых вычислений параллельно. ˒ак как в
цифровой фильтрации таких вычислений достаточно много, то целесооˡразно
применить данный подход.

˂ данной ˂ˊР реализованы несколько алгоритмов цифровой фильтрации
с использованием технологии
NVIDIA

CUDA
.





20


1.3.1
С
овременный подход к синтезу цифровых фильтров


Первоначально

классическая теория синтеза ˽лектрических фильтров
развивалась как

теория проектирования фильтров на ˡазе индуктивностей и
емкостей. ˎсновной задачей разраˡотчиков ˡыло создание
цепи,
удовлетворя
˾˹ей треˡованиям к ˀ˗˕, с минимальным количеством
˽лементов, что приводило к получени˾ фильтра мень˸его порядка. ˒о есть
выполнение заданных треˡований для фильтра при его наимень˸ем порядке.


После раˡот знаменитых ученых в оˡласти синтеза цифровых фильтр
ов
не целесооˡразно ставить задачу умень˸ения порядка фильтра при сохранении
его параметров. По˽тому современный подход к синтезу цифровых фильтров
предполагает

использование современной аппаратной ˡазы,
увеличива˾˹ей
производительность устройств ˖ˎС, и ра
зраˡотку алгоритмов для сокра˹ения
количества простей˸их операций.

˄ля сокра˹ения
количества простей˸их операций

вычислений мо˦но
использовать такие фильтры,
часть ко˽ффициентов которых явля˾тся

нул
ями
.

˅сли среди ко˽ффициентов фильтра
N

нулей, то данный п
одход позволяет
сократить оˡ˺ем вычислений на
N

операция сло˦ения и
N

операций
умно˦ения.
ˎднако не многие фильтры оˡлада
˾
т таким свойством.

˒ак ˦е возмо˦но
применение фильтров с целочисленными
ко˽ффициентами, использу˾˹их таˡлицы, которые заменят операции
умно˦ения. ˎднако
методики синтеза таких фильтров сло˦ны, а оˡласть
применения ограничена
.

˄ля увеличения скорости вычислений мо˦но повысить количество
вычи
слителей.
ˎднако используемый алгоритм фильтрации дол˦ен оˡладать
высокой степень˾ параллелизма, что накладывает некоторые ограничения
на

применени
е

данного подхода.

˂ настоя˹ее время все ˡоль˸у˾ популярность приоˡрета˾т

вычисления
на

графических процессо
рах

ввиду высокой производительности и
возмо˦ности распараллеливания вычислений для не графических задач
.
Современны
е

графические процессоры позволя˾т производить параллельно
21


тысячи операций, что позволяет су˹ественно увеличить производительность.
Су˹еству
ет мно˦ество технологий параллельных вычислений, таких как
CUDA
,
OpenCL
,
OpenACC
,
C
++
AMP

и другие, однако наиˡолее популярными
явля˾тся
CUDA

и
OpenCL
.

Современный подход к
реализации

цифровых фильтров состоит в том,
что для сокра˹ения аппаратных затрат
исп
ользу˾т различные алгоритмы
синтеза
, позволя˾˹ие умень˸ить количество операций
, а для повы˸ения
производительности
ķ

параллельные вычисления
, в частности ПЛИС и
графические процессоры
.















22


1.3.2
Реализация цифровых фильтров на ПЛИС

Программируемая логическая интегральная схема

ĸ

˽лектронный
компонент, используемый для создания

цифровых

интегральных схем.

ˎтличие ПЛИС от оˡычных цифровых микросхем состоит в том, что
логика раˡоты оˡычной цифровой микросхемы определяется при изготовле
нии,
а логика раˡоты ПЛИС определяется программистом. ˂ качестве средств
разраˡотки и отладки программист использует программатор, который
поставляется в комплекте с ПЛИС, и специальну˾
IDE
,
которая оˡычно
предоставляется фирмой
-
производителем ПЛИС. Програ
ммист описывает
логику раˡоты ПЛИС на специальных языках описания аппаратуры, таких как
VHDL
,
AHDL
,
Verilog

и др.


ˁлагодаря использовани˾ ПЛИС мо˦но реализовать различные п
о
функциональным возмо˦ностям устройства:

þ

˓стройства с ˡоль˸им количеством портов в
вода
-
вывода.

þ

˓стройства ˖ˎС.

þ

˂идеоустройства.

þ

ˀудиоустройства.

þ

˓стройства высокоскоростной передачи данных.

þ

ˊриптографические устройства.

þ

˓стройства за˹иты информации.

þ

˓стройства для проектирования и прототипирования интегральных схем
специального
назначения (
ASIC
).

þ

ˊоммутаторы ме˦ду системой с различной логикой и напря˦ением.

þ

ˍейрочипы.

þ

˓стройства, моделиру˾˹ие квантовые вычисления.

Преиму˹ества и осоˡенности ПЛИС

Программируемые логические интегральные схемы делятся на два
основных класса: ПЛИС на

основе программируемой матричной логики (ПˌЛ)
и
ПЛИС на основе
программируемых вентильных матриц (П˂ˌ). ˄ля
23


цифровой оˡраˡотки сигналов
луч˸е всего использовать
П˂ˌ,
так как в
сравнении с сигнальными процессорами они оˡеспечива˾ ˡолее высоку˾
скорость оˡр
аˡотки
.
ˎднако при реализации сло˦ных алгоритмов

целесооˡразно использовать сигнальные процессоры

ввиду невыгодности или
невозмо˦ности выполнения
данных алгоритмов

на ПЛИС
.

[
6]

˂ настоя˹ее время ПЛИС постепенно вытесня˾т сигнальные процессоры
ввиду ряда пр
еиму˹еств:

þ

ПЛИС оˡлада˾т высокой тактовой частотой (порядка нескольких ˃˃ц).

þ

ˀппаратная реализация умно˦ителей в ПЛИС позволяет производить
умно˦ение за один такт.

þ

ПЛИС оˡладает ˡоль˸им числом аппаратных интерфейсов.

þ

ˍа ˽тапе трассировки
ПЛИС оˡеспечивает возмо˦ность
выˡора
разрядности данных.

þ

ПЛИС оˡладает мень˸ей стоимость˾, чем сигнальные процессоры.

˔ункциональность ПЛИС определяется

количеством устройств
оˡраˡотки, разме˹енных на ней.

ˊа˦дое устройство оˡраˡотки треˡует
наличия неоˡхо
димого для его раˡоты количества своˡодных ресурсов на
ПЛИС.

˒ак как ПЛИС оˡладает ограниченным количеством ресурсов,

по˽тому

количество устройств, определя˾˹их
функциональность ПЛИС
,

то˦е
ограничено. ˎдними из наиˡолее критичных ˽лементов в ПЛИС явля˾тся

умно˦ители
, так как их реализация треˡует ˡоль˸ого количества ресурсов
ПЛИС
.
При использовании малого количества умно˦ителей у ПЛИС появятся
ресурсы, которые мо˦но ˡудет отдать устройствам
оˡраˡотки
,

п
о˽тому для
оптимального использования ресурсов ПЛИС и
повы˸ения ее
функциональности

предполагается минимизировать число ненулевых
ко˽ффициентов фильтра, что позволит умень˸ить количество используемых
умно˦ителей, а значит освоˡодить место для других устройств.

Логическая емкость ПЛИС оценивается как число ˽кв
ивалентных
вентилей
, определяемое как среднее число вентилей
į
И
-
ˍ˅
İ
, неоˡходимых
24


для реализации ˽квивалентного проекта на ПЛИС и ˡазовом матричном
кристалле.

˒ак как ПЛИС не содер˦ат вентилей
į
И
-
ˍ˅
İ

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


ˍаиˡолее точное представление о классах задач, ре˸аемых на ПЛИС,
дает их классификация по структурному признаку.

˒ипы ПЛИС:

þ

ПЛИС с п
рограммируемы
ми

логически
ми матрицами
.

þ

ПЛИС с
программируемой матричной логикой.

þ

ПЛИС с п
рограммируем
ой

макрологик
ой
.

þ

ПЛИС с п
рограммируемые коммутируемые матричны
ми

ˡлок
ами
.

þ

ПЛИС с п
рограммируемы
ми

вентильны
ми матрицами
.

þ

ˊомˡинированные ПЛИС.

ПЛИС с программируемыми логическими матрицами.

Самый первый тип ПЛИС. ПЛИС такого типа
име
˾т

программируемые
матрицы įИİ и įИЛИİ.
ˎсновным недостатком данной архитектуры является
недостаточное
использование ресурсо
в программируемой матрицы įИЛИİ.

˂виду недостаточного использования ресурсов программируе
мой матрицы
įИЛИ
İ
ˡыло принято ре˸ение использовать фиксированну˾ матрицу įИЛИİ.

ПЛИС с программируемой матричной логикой.

˄анная архитектура основывается на ПЛИС с программируемыми
логическими матрицами, однако основным отличием является наличие
ф
иксирова
нн
ой

матриц
ы

įИЛИİ.
˂ настоя˹ее время выˡор такой архитектуры
ПЛИС оˡусловлен простой задачей, не треˡу˾˹ей ˡоль˸их вычислительных
затрат.

ПЛИС с программируемой макрологикой.

ПЛИС такого типа име˾т единственну˾ программируему˾ матрицу įИ
-
ˍ˅İ или įИЛИ
-
ˍ˅İ,

но за счет многочисленных инверсных оˡратных связей
спосоˡны формировать сло˦ные логические функции.

25


ПЛИС с программируемые коммутируемые матричными ˡлоками.

ПЛИС такого типа состоят из нескольких ПЛИС с программируемой
матричной логикой и макроячеек, оˡ˺
единенных коммутационной матрицей.
ˊа˦ду˾ ПЛИС из структуры называ˾т матричный логический ˡлок. ˎˡычно
ПЛИС такого типа име˾т высоку˾ степень интеграции, что оˡусловлено
наличием до  ˽квивалентных вентилей и 56 макроячеек.

ПЛИС с программируемыми ве
нтильными матрицами.

ПЛИС с программируемыми вентильными матрицами состоят из
логических ˡлоков.
Логические ˡлоки вкл˾ча˾т в сеˡя один или несколько
простых логических ˽лементов. ˂ основе ка˦дого
такого
˽лемента ле˦ит

таˡлица перекодировки

(
LUT
)
,
D
-
триггер, программируемый мультиплексор и
цепи управления.
˂заимодействие ˽лементов в ˡлоке происходит посредством
локальной
программируемой матрицы соединений. ˂заимодействие ˡлоков
ме˦ду соˡой и ˽лементами ввода
-
вывода осу˹ествляется глоˡальной
программир
уемой матрицей соединений.

Помимо ˽того, некоторые ПЛИС с программируемыми вентильными
матрицами могут иметь встроенные реконфигурируемые модули памяти и
специализированные ˡлоки, которые состоят из аппаратных умно˦ителей и
сумматоров.

˒ак как в алгоритмах

˖ˎС основными операциями явля˾тся
умно˦ение и сло˦ение, то данный тип ПЛИС хоро˸о подходит для их
реализации.

Современные ПЛИС такого типа, име˾т емкость ˡолее миллиона
вентилей и состоят из нескольких десятков тысяч простых логических
˽лементов.

ˊомˡинир
ованные ПЛИС.

ПЛИС комˡинированных архитектур сочета˾т удоˡство реализации
алгоритмов ˖ˎС на ˡазе таˡлиц перекодировок и реконфигурируемых модулей
памяти, характерных для
FPGA

структур и многоуровневых ПЛИС
,

с
удоˡством реализации цифровых автоматов на
CPLD

архитектурах.

˄анный
вид ПЛИС мо˦ет состоять из логических ˽лементов л˾ˡых типов, что
26


позволяет применять его как основну˾ ˽лементну˾ ˡазу для систем на
кристалле
(
SOC
)
.

ˎсновной идеей
SOC

является интеграция всей ˽лектронной
системы в одном кристалле
. ˊомпоненты систем на кристалле хранятся в виде
параметризируемых модулей, ка˦дый из которых разраˡатывается отдельно в
соответствии со стандартами для возмо˦ности использования компонентов от
разных разраˡотчиков.
С помо˹ь˾ программ систем автоматизации
проектирования ˽лектронных устройств
EDA

из ˽тих компонентов

формируется окончательная структура системы на кристалле.

˂ыˡор тип
а

ПЛИС.

˄ля оптимального выˡора типа ПЛИС разраˡотчик дол˦ен т˹ательно
проанализировать поставленну˾ задачу. ˄алее разраˡотчик,
основываясь на
анализе алгоритма и финансовых возмо˦ностях, выˡирает ПЛИС,
руководствуясь следу˾˹ими критериями:

þ

ˁыстродействие.

þ

Логическая емкость, достаточная для реализации алгоритма.

þ

Схемотехнические и конструктивные параметры ПЛИС, наде˦ность,
раˡочий

диапазон температур, стойкость к ионизиру˾˹им излучениям и
т.п.

þ

Стоимость владения средствами разраˡотки, вкл˾ча˾˹ая как стоимость
программного оˡеспечения, так наличие и стоимость аппаратных средств
отладки.

þ

Стоимость оˡорудования для программирования
ПЛИС или
конфигурационных Пˇ˓.

þ

ˍаличие методической и технической поддер˦ки.

þ

Стоимость микросхем
.




27


1.3.3
Реализация цифровых фильтров на вычислителях с технологией
CUDA

ˎсновные х
арактеристики графических процессоров.

CUDA

ķ

˽то архитектура параллельных вычислений от
NVIDIA
,
позволя˾˹ая су˹ественно увеличить вычислительну˾ производительность
ˡлагодаря использовани˾
GPU

(графических процессоров).

[7]

˄анная
технология применима только для графических процессоров, произведенн
ых
компанией
NVIDIA
.

ˎсновными характеристиками графических процессоров
фирмы
NVIDIA

явля˾тся:

þ

ˊоличество ядер
CUDA
.

þ

˒актовая частота
.

þ

Пропускная спосоˡность памяти
.

þ

ˎˡ˺ем
памяти
.

˟дра
CUDA

ķ

условное оˡозначение скалярных процессоров.
CUDA

ядро
содер˦ит в

сеˡе один

один векторный

и

один скалярный

˾нит, которые за один
такт выполня˾т по одной векторной и по одной скалярной операции, передавая
вычисления другому мультипроцессору, лиˡо в

к˽˸ память

для дальней˸ей
оˡраˡотки.

Соответственно, чем ˡоль˸е ядер
CUD
A
, тем ˡоль˸е операций
мо˦но выполнять одновременно.
С ка˦дым годом количество ядер
CUDA

на
новых видеокартах увеличивается в  раза.
ˎднако, количество параллельных
операций, выполняемых на графическом процессоре мо˦ет ограничиваться
пропускной спосоˡност
ь˾ памяти и ее ˡыстродействием. При недостаточном
ˡыстродействии и пропускной спосоˡности памяти и ˡоль˸ом количестве ядер
CUDA
, некоторые из ядер ˡудут простаивать

при выполнении программы
.

˒актовая частота

ķ

количество операций, которое в среднем выполня
ет
одно ядро графического процессора в секунду. ˗ем вы˸е тактовая частота, тем
ˡоль˸ее количество операций мо˦но выполнить за единицу времени. ˎднако,
как и в случае с ядрами
CUDA
, производительность мо˦ет ˡыть ограничена
недостаточным ˡыстродействием и пр
опускной спосоˡность˾ памяти.

28


Пропускная спосоˡность памяти
ķ

количество информации, которое

мо˦ет ˡыть передано из памяти видеокарты в ее
мульти
процессор в
секунду
.
˄анный показатель зависит от частоты памяти (ˡыстродействия памяти) и
˸ирины ˸ины и рассчитывается как
их произведение.

ˎˡ˺ем памяти
ķ

количество информации, которое мо˦ет храниться в
памяти видеокарты.

Современные видеокарты фирмы
NVIDIA

семейства
GeForce

представлены в таˡлице 
:

˒аˡлица
1


ˊоличество
ядер
CUDA

˒актовая
частота(ˌ˃ц)

Пропускная
спосоˡность
памяти
(˃ˡ/сек)

ˎˡ˺ем памяти
(
˃ˡ)

GeForce
GTX 1080

2560

1607

320

8

GeForce
GTX 1070

1920

1506

256

8

GeForce
GTX 1060

1280

1506

192

6

GeForce
GTX 1050

640

1354

112

2


ˎрганизация параллельных вычислений.

NVIDIA

CUDA

представляет соˡой параллельну˾ вычислительну˾
систему типа
SIMT

(
Single
-
Instruction
-
Multiple
-
Threads
), то есть одна и та ˦е
функция выполняется параллельно на
мно˦естве потоков (
threads
).
[8]
Поток
ķ

наимень˸ая единица оˡраˡотки данных, они

оˡ˺единя˾тся в
warp
ļы (
warps
),
ка˦дый
warp

состоит из 3 потоков и выполняется строго на одном скалярном
процессоре

(
Scalar

Processor
). ˂ сво˾ очередь,
warp
ļы оˡ˺единя˾тся в ˡлоки.
29


ˊоличество потоков в ˡлоке задается разраˡотчиком, однако на ˽то имеется
аппаратное ограничение, которое зависит от архитектуры вычислителя с
CUDA
. ˍапример, для ˡоль˸инства современных видеокарт максимальное
количество потоков в ˡ
локе составляет 4 потока. ˝то оˡусловлено тем,
что
ка˦дый ˡлок выполняется строго на одном
мультипроцессоров (
Streaming

Multiprocessors
)
, который имеет свои ресурсы, количество которых ограничено
.
ˁлоки оˡ˺единя˾тся в сетку (
grid
). ˒о есть сетка
ķ

˽то с
овокупность всех
потоков, выполняемых на
GPU
.
Схема сетки представлена на рисунке 8.


Рисунок
8

ķ

Схема сетки
CUDA

˃рафический процессор с
CUDA

имеет глоˡальну˾ память и потоковые
мультипроцессоры. ˊа˦дый потоковый мультипроцессор состоит из
разделяемой памяти, скалярных процессоров и регистров. Разделяемая память
ķ

память, к которой име˾т доступ все потоки, выполняемые в ˡлоке.
Скалярные процесс
оры выполня˾т потоки, а регистры хранят проме˦уточну˾
информаци˾.

ˀрхитектура графического процессора
NVIDIA

представлена на рисунке
9
:

30



Рисунок
9

ķ

ˀрхитектура графического процессора
NVIDIA

˂ аппаратной реализации видеокарт с
C
UDA

мо˦но выделить ряд
осоˡенностей потоковых мультипроцессоров, таких как:

þ

˂
озмо˦ность выполнения нескольких ˡлоков на одном
мультипроцессоре
.

þ

ˇ
апуск ка˦дого ˡлока строго на одном потоковом мультипроцессоре
.

þ

Р
азделение ресурсов мультипроцессора ме˦ду
ˡлоками
.

þ

Параллельность раˡоты мультипроцессоров.

ˊа˦дый ˡлок выполняется строго на одном мультипроцессоре, причем на
одном мультипроцессоре мо˦ет выполняться несколько ˡлоков.
Распределением ˡлоков по потоковым мультипроцессорам занимается
планиров˹ик.

Пр
имер р
аспределени
я

ˡлоков по потоковым мультипроцессорам

представлен на рисунке 
:

31



Рисунок
10

ķ

Распределение ˡлоков по потоковым мультипроцессорам

ˎрганизация памяти.

˂
идеокарты име˾т сво˾ соˡственну˾ память и соответственно свое
адресное пространство.
Память видеокарты делится на несколько типов:

[9]

þ

Р
егистровая (
register
), является самым ˡыстрым типом памяти,
она
мо˦ет
использоваться

локальными переменными, оˡ˺явленными в функциях,
выполняемых на графическом процессоре. ˂

CUDA

у программиста
нету
возмо˦ности явно задать ˽тот тип переменной
, вс
е

разме˹ение данных в
регистровой памяти

производится
графическим процессором
.

þ

Л
окальная (
loc
al

memory
), для данного типа памяти отсутствует
явное
использование,

и он
а

значительно медленнее, чем регистровая память,
по˽тому при ˡоль˸ом количестве локальных переменных в
CUDA

функции появляется неоˡходимость
использования памяти ˽того типа.

þ

Р
азделяем
ая (
shared

memory
), является ˡыстрым типом памяти, для
оˡ˺явления переменной разделяемой памяти используется спецификатор
__
shared
ÈÈ, разделяемые переменные хранятся в адресном пространстве
ˡлоков и име˾т одинаковый адрес для всех потоков в ˡлоке, по˽тому
их
мо˦но использовать для передачи данн
ых ме˦ду потоками в одном
ˡлоке.

þ

˃
лоˡальная (
global

memory
), является самым медленным типом памяти,
для оˡ˺явления переменной глоˡальной памяти используется
32


спецификатор ÈÈ
global
ÈÈ, глоˡальные переменные име˾т одинако
вый
адрес для всех потоков во всех ˡлоках, помимо ˽того глоˡальная память
используется для передачи данных из памяти компь˾тера в память
видеокарты и оˡратно с помо˹ь˾ функций
cudaMalloc
() и
cudaMemcpy
().

þ

ˊ
онстантная (
constant

memory
), является ˡыстрым тип
ом памяти, для
оˡ˺явления константной переменной используется спецификатор
__
constant
ÈÈ, константные переменные могут ˡыть записаны
c

хоста на
девайс, но на девайсе могут использоваться только для чтения,
константные переменные одинаковы
для всех потоков в
о всех ˡлоках.

þ

˒
екстурная (
texture

memory
), предна
значена для раˡоты с текстурами.

ˎна оптимизирована под выˡорку 
D

данных и имеет
возмо˦ност
ь
ˡыстр
ой

выˡорка значений фиксированного размера из одномерного или
двухмерного массива
, нормализованну˾

адресаци
˾

числами типа
float

в
интервале

[0,1)
, аппаратну˾ линейн
у˾

или ˡилинейну˾

интерполяция
соседних значений в с
лучае нормализованной адресации,
аппаратн
у˾

оˡраˡотк
у

выхода за границу массива с использованием двух ре˦имов:
clamp

и
wrap
.

Сравнительные
характеристики различных типов памяти представлены в
таˡлице .

˒аˡлица
2

˒ип памяти

˄оступ

˓ровень
выделения

Скорость раˡоты

Регистровая

˗тение/ˇапись

ˍа поток

˂ысокая

Локальная

˗тение/ˇапись

ˍа поток

ˍизкая

˃лоˡальная

˗тение/ˇапись

ˍа сетку

ˍизкая

Разделяемая

˗тение/ˇапись

ˍа ˡлок

˂ысокая

ˊонстантная

˒олько чтение

ˍа сетку

˂ысокая

˒екстурная

˒олько чтение

ˍа сетку

˂ысокая


33


Р
исунок

11

илл˾стрирует, как потоки взаимодейству˾т с память˾
графического процессора.


Рисунок

11

ķ

˂заимодействие потоков с память˾


ˁиˡлиотеки

CUDA
.

CUBLAS
.

CUBLAS

ķ

реализация стандартного интерфейса программирования для
раˡоты с матрицами и векторами с использованием технологии
NVIDA

CUDA
.
BLAS

(
Basic

Linear

Algebra

Subprograms
)
ķ

основные операции линейной
алгеˡры. ˄анная ˡиˡлиотека предоставляет разраˡотчику возмо˦ность
34


производить вычисления матриц и векторов на графическом процессоре
,
поддер˦ива˾˹ем технологи˾
NVIDIA

CUDA
.

[10]

ˍ
ачиная с C¾DA 6., ˡиˡлиотека
CU
BµA¼ теперь предоставляет два
наˡора A¹²,
оˡычный

API
CUBLAS

и
рас˸иренный
API CUBLASXT.


ˎсновным отличием оˡычной ˡиˡлиотеки от рас˸иренной является то,
что рас˸иренная ˡиˡлиотека сама копирует данные с
CPU

на
GPU

и, при
н
аличии нескольких
GPU
, выˡирает на котором ˡудут производиться
вычисления лиˡо распараллеливает вычисления ме˦ду ними.

ˎднако оˡычная ˡиˡлиотека
CUBLAS

предоставляет разраˡотчику
функции для создания и уничто˦ения оˡ˺ектов в адресном пространстве
графическ
ого процессора, копирования данных
c

CPU

на
GPU
.

Последовательность раˡоты с данной ˡиˡлиотекой:

þ

Создание оˡ˺ектов (вектора, матрицы) в памяти
GPU
.

þ

ˊопирование данных
c

CPU

на
GPU

в оˡласть памяти созданных
оˡ˺ектов.

þ

˂ыполнение заданного алгоритма над оˡ˺е
ктами путем вызова функций
CUBLAS

для раˡоты с ее оˡ˺ектами.

þ

ˊопирование результатов с
GPU

на
CPU
.

CUSPARSE
.

CUSPARSE

ķ

ˡиˡлиотека для раˡоты с разре˦енными матрицами.
[11]
Разре˦енные матрицы

или вектора

ķ

матрицы

или вектора
, ˡоль˸инство
˽лементов
которых явля˾тся нулями. Плотные матрицы

или вектора

ķ

матрицы

или вектора
, ˡоль˸инство ˽лементов которых не явля˾тся нулями.

˂ данной ˡиˡлиотеке
операции могут производиться как с матрицами, так
и с векторами, в зависимости от ˽того функции мо˦но разделит
ь на следу˾˹ие
категории
:

þ

ˊатегория . ˔ункции реализу˾т арифметические операции ме˦ду
разре˦енными и плотными векторами.

35


þ

ˊатегория . ˔ункции реализу˾т арифметические операции ме˦ду
разре˦енными матрицами и плотными векторами.

þ

ˊатегория 3. ˔ункции реализу
˾т арифметические операции ме˦ду
разре˦енными матрицами и несколькими плотными векторами.

þ

ˊатегория 4. ˔ункции конвертации матриц и векторов.

˂ыделение памяти и оˡмен данными ме˦ду память˾
графического

и
память˾
центрального
процессора с помо˹ь˾
стандартных функций
CUDA

осу˹ествляет сам пользователь
. Реализация данной ˡиˡлиотеки не
поддер˦ивает раˡоту с несколькими
GPU
.

CUSOLVER

CUSP

ķ

ˡиˡлиотека, основанная на ˡиˡлиотека
х

CUBLAS

и
CUSPARSE
.
˄анная ˡиˡлиотека предназначена для ре˸ения систем
линейных уравнений

с
плотными и разре˦енными матрицами на
GPU
.

[12]

CUSOLVER

предоставляет разраˡотчикам функции факторизации
матриц,

процедур
у

треугольного ре˸ения для плотных матриц, разре˦енный
метод наимень˸их квадратов
, а так ˦е позволяет находить соˡ
ственные числа
и векторы матриц.

ˊроме того,
CUSOLVER

предоставляет
функции

рефакторизации

матриц
, полезн
ые

для
вычисления

последовательностей
матриц с оˡ˹им ˸аˡлоном разре˦енности.

˝та ˡиˡлиотека делится на три части:

þ

CUSOLVERDN
.
˝та часть
выполняет

ре˸ение систем линейных
уравнений с плотными матрицами.

þ

CUSOLVERSP
.

˝та часть
выполняет

ре˸ением систем линейных
уравнений с разре˦енными матрицами.

þ

CU
SOLVERRF
.
˝та часть выполняет рефакторизаци˾ разре˦енных
матриц.

36


Помимо ˽того, данная ˡиˡлиотека предоставляет возмо˦ность
разраˡотчику изменять форматы матриц и копировать данные с
CPU

на
GPU

и
оˡратно.

CUFFT

CUFFT

ķ

ˡиˡлиотека для выполнения ˡыстрого преоˡразования ˔урье
(ˁП˔) на графических процессорах, поддер˦ива˾˹и
х технологи˾
NVIDIA

CUDA
.

[13]

ˁП˔
ķ

˽то алгоритм для ˽ффективного вычисления дискретных
преоˡразований ˔урье для комплексных или ве˹ественных
чисел
.

˄анный
алгоритм в основном используется в ˖ˎС.

˗
тоˡы ˡиˡлиотека максимально ˽ффективно произвела ˁП˔
неоˡходимо
вначале задать įпланİ, в котором указывается размер входной
последовательности, размер ˁП˔ и тип входных и выходных

данных
. После
создания плана, неоˡходимо вызвать функци˾ ˁП˔, в параметрах которой
неоˡходимо указать вид преоˡразования (прямое
или оˡратно ˁП˔).

CURAND
.

CURAND

-

оптимизированная ˡиˡлиотека для генерирования случайных
чисел на
центральных

и
графических процессорах
.

˄анная ˡиˡлиотека состоит
из двух частей:

[14]

þ

˔ункции, вызываемые центральным процессором.
˄ля раˡоты с
функциями
используется файл į
curand
.
h
İ. ˂озмо˦но создание двух
типов генератора: на графическом процессоре и на центральном.
˃енератор позво
ляет генерировать различные законы

распределения
случайных величин
, такие как нормальный, равномерный и т.д.

þ

˔ункции, вызывае
мые графическим процессором.

˄ля раˡоты с
функциями используется файл įÌÞÛÊ×ÍÈÔÎÛ×ÎÕ.Ñİ. Раˡота
осу˹ествляется через состояния. ˄ля получения чисел из одной или
разных последовательностей неоˡходимо правильно
проинициализировать состояния.

37


Последовательнос
ть раˡоты с функциями ˡиˡлиотеки:

þ

Создать ген
ератор.

þ

˓становить параметры.

þ

˂ыделить память под сгенерированные данные.

þ

Сгенерировать последовательность.

þ

Использовать сгенерированные данные.

þ

ˎсвоˡодить память.

þ

˓далить генератор
.

NPP

ˁиˡлиотека
NVIDIA

Performance

Primitives

ķ

˽то
GPU
-
ускоренная
ˡиˡлиотека с огромным наˡором
функций

для оˡраˡотки изоˡра˦ений и
сигналов.

ˍаˡор функций из ˽той ˡиˡлиотеки в основном сосредоточен на
оˡраˡотку изоˡра˦ений и видео, однако в ней име˾тся и функции для
оˡраˡотки
сигналов.

[15]

˄анная ˡиˡлиотека вкл˾чает в сеˡя:

þ

Раˡоту арифметикой и логикой изоˡра˦ений.

þ

Преоˡразование цветов изоˡра˦ения.

þ

С˦атие изоˡра˦ений.

þ

˔ильтры изоˡра˦ений.

þ

Раˡоту с геометрией изоˡра˦ения.

þ

Сравнение изоˡра˦ений.

þ

Раˡоту с сигналами.






38


2
СИˍ˒˅ˇ ˖И˔Рˎ˂˛˕ ˔ИЛ˜
˒Рˎ˂, ˝˔˔˅ˊ˒И˂ˍ˛˕
Пˎ ˊРИ˒˅РИ˞ ˌИˍИˌ˓ˌˀ

˂˛˗ИСЛИ˒˅Л˜ˍˎˉ
СЛˎˆˍˎС˒И И ˀППˀРˀ˒ˍ
˛˕ ˇˀ˒Рˀ˒

2.1
˝тапы разраˡотки цифровых фильтров

Разраˡотка цифрового фильтра оˡычно проходит в пять ˽тапов.

1.
Спецификация

треˡований к фильтру.

2.
Расчет

ко˽ффициентов фильтра.

3. ˂ыˡор структуры фильтра.

4. ˀнализ влияния конечной разрядности на производительность фильтра.

5. Реализация фильтра на программном и/или аппаратном уровне.

ˌе˦ду данными пять˾ ˽тапами мо˦ет присутствовать зависимость, и
они могу
т выполняться в другом порядке. ˒ак ˦е возмо˦но оˡ˺единение
нескольких ˽тапов в один.

[16]

Спецификация треˡований.

ˍа ˽тапе спецификации треˡований к фильтру происходит задание
характеристик сигнала, характеристик фильтра, принципа реализации и других
тре
ˡований.


Спецификация

характеристик сигнала
вкл˾чает в сеˡя задание типа
источника и получателя сигнала, интерфейса ввода
-
вывода, скорост
и

передачи
данных, ˸ирины полосы и наивыс˸ей частоты, представля˾˹ей практический
интерес.

С
пецификации
характеристик фильтра
вкл˾чает в сеˡя
задание
амплитудной

и фазов
ой характеристик,

величины допустимых отклонений на
˽ти параметры,

скорость раˡоты и ре˦имы фильтрации
.


Спецификация
принципа реализации
определяется выˡором программно
-
аппаратной ˡазы и про
граммно
-
аппаратных средств.
Программно
-
аппаратная
ˡаза выˡирается путем анализа ее осоˡенности и параметров реализуемого
цифрового фильтра.

39


˂ качестве дополнительных треˡований могут выступать такие
параметры, как цена фильтра, фирма
-
производитель и т.д
.

˂ычисление ко˽ффициентов.

ˍа ˽тапе вычисления ко˽ффициентов выˡирается один из методов
аппроксимации, предоставляемых разраˡотчикам стандартными утилитами,
су˹еству˾˹ими в л˾ˡом пакете оˡраˡотки сигналов:
Matlab
,
LabView
,
Mathcad
,
FirCompiler

и т.д. ˍеопти
мальность некоторых из используемых
алгоритмов полность˾ окупается простотой их использования.

Спосоˡ вычисления ко˽ффициентов фильтра определяется типом
фильтра
. Подходы к вычислени˾ ко˽ффициентов ˊИ˕ и ˁИ˕ фильтров
су˹ественно отлича˾тся.


ˌетоды в
ы
числени
я

ко˽ффициентов ˁИ˕
-
фильтра
основаны

на
преоˡразовании характеристик известных аналоговых фильтров в
характеристики ˽квивалентных цифровых. Су˹ествует три основных подхода:

þ

ˌет
о
д инвар
и
антного пре
оˡразования импульсной характеристики
.

þ

ˌетод ˡилиней
ного преоˡразования
.

þ

ˌетод р
азме˹ени
я нулей и пол˾сов
.

ˌет
о
д инвар
и
антного пре
оˡразования импульсной характеристики
позволяет сохранить импульсну˾ характеристику исходного аналогового
фильтра после оцифровки, однако амплитудно
-
частотная характеристика не
сохраняется. ˍедостаток данного метода
ķ

внутреннее нало˦ение, по˽тому он
не подходит для фильтров верхних частот и ре˦екторных фильтров
.

ˌетод
инвариантного преоˡразования импульсной характеристики
в основном
используется
при моделировании аналоговых сист
ем
.

ˌетод ˡилинейного преоˡразования позволяет создавать цифровые

частотно
-
изˡирательные

фильтры с известными классическими
характеристиками, такими как в фильтрах
ˁаттерворта, ˗еˡы˸ева или
˽ллиптических.

Полученные данным методом цифровые фильтры ˡудут им
еть
одинакову˾ с аналоговыми фильтрами амплитудно
-
частотну˾ характеристику,
40


но различные свойства во временной оˡласти.

˄анный метод используется при
вычислении ко˽ффициентов частотно
-
изˡирательных ˁИ˕ фильтров.

ˌетод разме˹ения нулей и пол˾сов основан на
переˡоре поло˦ений
нулей и пол˾сов. ˅го следует применять для расчета ко˽ффициентов очень
простых фильтров и не рекомендуется применять для фильтров с хоро˸ей
амплитудно
-
частотной характеристикой.

˄ля вычисления ко˽ффициентов ˊИ˕ фильтров в основном
исполь
зу˾тся следу˾˹ие три метода:

þ

ˌетод в
ырезания (взве˸ивания)
.

þ

ˌетод ч
астотной выˡорки
.

þ

ˎптимальный
метод
(алгоритм Паркса

ķ

ˌак ˊлиллана)
.

ˌетод взве˸ивания предоставляет очень простой и гиˡкий спосоˡ
вычисления ко˽ффициентов ˊИ˕

фильтра, но не позволяет раз
раˡотчику
адекватно управ
лять параметрами фильтра.

ˎсновным достоинством метода частотной выˡорки является
возмо˦ность рекурсивной реализации ˊИ˕ фильтра. ˎднако при
использовании данного метода разраˡотчик не мо˦ет задавать параметры
реализуемых фильтро
в.

ˎптимальный метод является самым используемым. ˝то оˡусловлено
тем, что в ˡоль˸инстве случаев он позволяет получить треˡуемый ˊИ˕
фильтр.

При проектировании ˊИ˕

фильтров
сначала

следует использовать
оптимальный метод. ˅сли данный метод не дал ну˦ный результат, то у˦е
следует использовать другие методы вычисления ко˽ффициентов ˊИ˕

фильтра.

˂ыˡор структуры фильтра.

˂ыˡор структуры фильтра состоит в математическом преоˡразовании
пер
едаточной функции в
структуру
, по
которой

ˡудет реализован цифровой
фильтр. Структуры фильтров
оˡычно изоˡра˦а˾тся функциональными
41


схемами, ˽лементами которых явля˾тся сумматоры, умно˦ители и задер˦ки.
˒ак как ˁИ˕ фильтр отличается от ˊИ˕ фильтра наличием
рекурсивной части,
то оˡычно структурная схема ˁИ˕ фильтра является ˡолее сло˦ной.

ˍаиˡолее востреˡованными структурами представлениями передаточной
функции для ˊИ˕

фильтров явля˾тся
:

þ

Прямая

структура
.

þ

ˊаскадная

структура
.

þ

Структура ч
астотной выˡорки
.

ˍаиˡ
олее простой является прямая структура, по˽тому ее использу˾т
ˡоль˸е всего. При представлении ˊИ˕ фильтра прямой структурой, его
называ˾т трансверсальным фильтром или линией задер˦ки с отводами.

Прямая
структура ˊИ˕

фильтра:

ް
(
ߜ
)


߄

ߜ
















(
Ͼ
)

При каскадной структуре ˊИ˕ фильтра

передаточная функция

отоˡра˦ается в виде произведения
многочленов

второго порядка. ˊаскадная
структура ˊИ˕

фильтра:

(
ߜ
)


(
߄



߄


ߜ



߄


ߜ


)













(
Ͽ
)

Представление передаточной функции в виде частотной

выˡорки

треˡует
расчета мень˸его числа ко˽ффициентов фильтра, что позволит при ее
реализации сократить количество арифметических операций. ˎднако для
реализации данной структуры мо˦ет понадоˡиться ˡоль˸ий оˡ˺ем памяти.
Структура частотной выˡорки ˊИ˕

фильт
ра:

ް
(
ߜ
)

Ϲ

ߜ


޶

ް
(
ߋ
)
Ϲ

ߜ


߇



















(
Ѐ
)


42



ˍаиˡолее востреˡованными структурами представлениями передаточной
функции для ˁИ˕

фильтров явля˾тся
:

þ

Прямая

структура
.

þ

ˊаскадная

структура
.

þ

Параллельная

структура
.

Прям
у˾ форму пре
дставления п
ередаточной функции ˁИ˕
фильтра

мо˦но представить следу˾˹ей формулой
:

ް
(
ߜ
)

щ
߄

ߜ








Ϲ

щ
߃

ߜ

















(
Ё
)

При каскадной структуре ˁИ˕ фильтра передаточная функция
отоˡра˦ается в виде произведения звеньев второго порядка
.

ˊаскадн
у˾

форм
у

п
ередаточной функции ˁИ˕

фильтра

мо˦но представить следу˾˹ей
формулой
:

ް
(
ߜ
)


(
߄



߄


ߜ



߄


ߜ


Ϲ

߃


ߜ



߃


ߜ


)













(
Ϲϸ
)

˂ параллельной форме
передаточная функция

представляется как

сумма

звеньев второго порядка.

Параллельн
у˾

форм
у

пе
редаточной функции ˁИ˕

фильтра

мо˦но представить следу˾˹ей формулой
:

ް
(
ߜ
)


(
߄



߄


ߜ


Ϲ

߃


ߜ



߃


ߜ


)
















(
ϹϹ
)

ˍаиˡолее используемыми структурными схемами ˁИ˕ фильтров
явля˾тся каскадная и параллельная структуры, так как их про˹е ре
ализовать,
чем ˁИ˕ фильтры с прямой структурой.

ˀнализ влияния конечной разрядности на производительность фильтра.

ˍа данном ˽тапе разраˡотчик выˡирает используемые фильтром типы
данных, которые оˡеспечат неоˡходиму˾ точность представления чисел в
памяти
компь˾тера. ˎˡычно выˡирается арифметика с плава˾˹ей запятой, так
как при использовании арифметики с фиксированной запятой мо˦ет
проявиться иска˦ение частотных характеристик.

43


˄ля корректного выˡор типа данных разраˡотчик дол˦ен
проанализировать ко˽ффициент
ы фильтра, входные данные, выходные данные,
количество и тип простей˸их арифметических операций, используемых в
алгоритме.

Помимо ˽того, разраˡотчик дол˦ен е˹е учитывать основные источники
ухуд˸ения производительности:

þ

˝ффект к
вантования сигнала на входе

и

выходе
.
При представлении
входных данных в формате, который использует аналогово
-
цифровой
преоˡразователь, происходит округление чисел, что приводит к потере
точности.

þ

˝ффект к
вантовани
я

ко˽ффициентов
.
При представлении
ко˽ффициентов, полученных на ˽тапе
их вычислений, в формате,
используемым устройством ˖ˎС, происходит округление
ко˽ффициентов, что приводит к иска˦ени˾ характеристик ˊИ˕ и ˁИ˕
фильтров.

þ

ˎ˸иˡки округления
. При использовании целых чисел или чисел с
фиксированной запятой возмо˦ны появления о˸
иˡок округления. ˝то
связано с тем, что при выполнении арифметических операций и записи их
результата в память происходит округление числа, ввиду
недостаточности ˡитов для ˡолее точного представления. ˄анный ˽ффект
вызывает потер˾ точности вычислений и мо˦
ет привести к
неустойчивости ˁИ˕ фильтров.

þ

Переполнение
.
При сло˦ении или умно˦ении чисел результат мо˦ет
превысить максимально допустимое значение для данного типа, которое
зависит от количества ˡит, выделяемых в памяти компь˾тера под ˽тот
тип данных.
˂ р
езультате данного ˽ффекта возмо˦но получение
аˡсол˾тно неверных результатов раˡоты алгоритма
.

Реализация фильтра.

44


Реализация фильтра происходит на выˡранной программно
-
аппаратной
ˡазе с помо˹ь˾ специализированных программно
-
аппаратных средств и
дол˦на
учитывать осоˡенности выˡранной

аппаратной ˡазы, поскольку многие
параметры фильтра, например, его структура, могут выˡираться исходя из
реализационных осоˡенностей соответству˾˹ей программно
-
аппаратной
системы.



















45


2.2
ˀлгоритмы с
использованием Сˎˊ


ˊак у˦е ˡыло написано вы˸е, основной задачей цифровой фильтрации

является синтез фильтра, оˡеспечива˾˹его наиˡоль˸у˾ скорость вычислений
и
сокра˹ение их оˡ˺ема.


˄ля ре˸ения задачи увеличения скорости вычислений мо˦но
использовать
реализация цифровых фильтров в системе остаточных классов.


Система остаточных классов.

Система остаточных классов (Сˎˊ) (от англ.
Residue

Number

System
,
RNS
)

ķ

непозиционная система счисления, в которой представление чисел
основано на понятии вычета и китайской теореме оˡ остатках.

Сˎˊ
определяется наˡором взаимно простых модулей
(
ߏ

ɧ
ߏ

ɧ
ɫ
ɧ
ߏ

)
, называемых
ˡазисом, с произведением

޵

ߏ

д
ߏ

д
ɫ
д
ߏ

. ˊа˦дому
целому числу из
отрезка

ϸ
ɫ
޵

Ϲ


ставится в соответствие наˡор вычетов
(
ߚ

ɧ
ߚ

ɧ
ɫ
ɧ
ߚ

)
, где

ߚ

ڦ
ߚ

ߏߑ߆

ߏ


ߚ

ڦ
ߚ

ߏߑ߆

ߏ




















(
ϹϺ
)

ɫ

ߚ

ڦ
ߚ

ߏߑ߆

ߏ



При ˽том китайская теорема оˡ остатках (ˊ˒ˎ) гарантирует
однозначность представления для чисел из отрезка

ϸ
ɫ
޵

Ϲ

.

[
1
7
]


Преиму˹ества Сˎˊ.

þ

˂ысокая скорость раˡоты, котору˾ оˡеспечивает параллельная
реализация ˡазовых арифметических операций.

þ

Сокра˹ение
аппаратных затрат за сч̀т модульной организации
вычислений и, соответственно, использования чисел малой разрядности.

þ

Сокра˹ение количества используемых аппаратных умно˦ителей при
реализации в ПЛИС, которое достигается ˡлагодаря использовани˾
модулярной опе
рации умно˦ения.


46


ˍедостатки Сˎˊ.

þ

˂озмо˦ность представления ограниченного количества чисел.

þ

ˌедленный перевод в десятичну˾ систему счисления и оˡратно.

þ

ˍельзя сравнить числа.

˖ифровые фильтры в Сˎˊ.

Линейная фазовая характеристика ˊИ˕

фильтров оˡеспечивает

возмо˦ность параллельного вычисления ка˦дого выходного отсчета.

˝то
видно из разностного уравнения ˊИ˕

фильтра:

ߛ
(
ߐ
)


߄

ߚ
(
ߐ

ߋ
)










(
Ϲϻ
)

˂ Сˎˊ разностное уравнение для ˊИ˕

фильтра мо˦но записать в виде:

ʇ
ߛ
(
ߐ
)
ʇ





ʇ
߄

ߚ
(
ߐ

ߋ
)
ʇ















(
Ϲϼ
)

ˀлгоритм цифровой фильтрации

в Сˎˊ
.

1.

Расчет
примерного
диапазона значений чисел, которые ˡудут
использоваться в вычислениях. ˒ак
как
китайская теорема оˡ остатках
гарантирует однозначность представления чисел в диапазоне

ϸ
ɫ
޵

Ϲ

, то для
корректной раˡоты фильтра неоˡходимо, чтоˡы
все

числ
а

принадле˦ал
и

данному отрезку.

˄ля расчета диапазона чисел,
неоˡходимо знать разрядность входных данных, разрядность
ко˽ффициентов и порядок фильтра.


޵

޵ީ߀

д
޵ީ߀

д
޺










(
ϹϽ
)

2.

˂ыˡор наˡора
в
заимно простых
модулей,
произведение которых
ˡоль˸е или равно
M
. ˄ля сокра˹ения аппаратных затрат неоˡходимо
подˡирать модули
одинаковой разрядности.


4
7


3.

˂ычисление

мультипликативных инверсий для ка˦дого из модулей.
ˌультипликативные инверсии использу˾тся для перевода числа из
системы остаточных классов в десятичну˾ систему счисления.

4.

Представление ко˽ффициентов фильтра в системе остаточных классов.
˒ак как ко˽ффицие
нты постоянны и использу˾тся только внутри
фильтра, то мо˦но достаточно всего
޺
д
ߍ

(
R

ķ

кол
-
во ко˽ффициентов,
k

ķ

кол
-
во модулей) операций вычисления остатка от деления.

5.

Перевод входного сигнала из десятичной системы счисления в систему
остаточных классов
.

6.

˂ычисление выходного сигнала по разностному уравнени˾ в системе
остаточных классов.

7.

Перевод выходного сигнала из системы остаточных классов в
десятичну˾ систему счисления.

ˀлгоритм цифровой фильтрации в Сˎˊ изоˡра˦ен на рисунке .


Рисунок
12

ķ

ˀлгоритм цифровой фильтрации в Сˎˊ

Перевод
из десятичной системы счисления в систему остаточных классов
.


Имеется ˡазис взаимно простых модулей
(
ߏ

ɧ
ߏ

ɧ
ɫ
ɧ
ߏ

)

и число
X
. ˄ля
перевода числа в систему остаточных классов неоˡходимо посчитать остаток от
деления ˽того числа на ка˦дый модуль.

Перевод числа ˕ в Сˎˊ описан

следу˾˹ей

формулой
:

ߚ

ڦ
߀

ߏߑ߆

ߏ


ߚ

ڦ
߀

ߏߑ߆

ߏ



ɫ
ߚ

ڦ
߀

ߏߑ߆

ߏ



















(
ϹϾ
)

Разло˦ение
по
модулям
(перевод в
Сˎˊ)

ߚ
(
ߐ޼
)


ʇ
ߛ
(
ߐ޼
)
ʇ



ʇ
ߛ
(
ߐ
)
ʇ





ʇ
߄

ߚ
(
ߐ

ߋ
)
ʇ










ʇ
ߚ
(
ߐ޼
)
ʇ



ʇ
ߚ
(
ߐ޼
)
ʇ



ʇ
ߛ
(
ߐ޼
)
ʇ



Перевод в
исходну˾
систему
счисления

ߛ
(
ߐ޼
)


48



ˍаˡор остатков
(
ߚ

ɧ
ߚ

ɧ
ɫ
ɧ
ߚ

)

соответствует представлени˾ числа
X

в
системе остаточных классов с ˡазисом
(
ߏ

ɧ
ߏ

ɧ
ɫ
ɧ
ߏ

)
.


ˀрифметические операции в
системе остаточных классов
.


˂ системе остаточных классов арифметические операции выполня˾тся с
остатк
ами. ˎстатки, соответству˾˹ие одному модул˾, складыва˾, вычита˾т,
умно˦а˾т и делят, как и в десятичной системе счисления, а затем находят
остаток от результата по теку˹ему модул˾.

[18]


С
ло˦ени
е

и
вычитание

для двух чисел в Сˎˊ:

(
ߚ

ɧ
ߚ

ɧ
ɫ
ɧ
ߚ

)

(
ߛ

ɧ
ߛ

ɧ
ɫ
ɧ
ߛ

)

(
ߜ

ɧ
ߜ

ɧ
ɫ
ɧ
ߜ

)

ߜ


(
ߚ


ߛ

)

ߏߑ߆

ߏ


ߜ


(
ߚ


ߛ

)

ߏߑ߆

ߏ























































(
ϹϿ
)

ɫ

ߜ


(
ߚ


ߛ

)

ߏߑ߆

ߏ



ˎпераци
я

умно˦ения
двух чисел в Сˎˊ
:


(
ߚ

ɧ
ߚ

ɧ
ɫ
ɧ
ߚ

)
д
(
ߛ

ɧ
ߛ

ɧ
ɫ
ɧ
ߛ

)

(
ߜ

ɧ
ߜ

ɧ
ɫ
ɧ
ߜ

)

ߜ


(
ߚ

д
ߛ

)

ߏߑ߆

ߏ


ߜ


(
ߚ

д
ߛ

)

ߏߑ߆

ߏ

























































(
ϹЀ
)

ɫ

ߜ


(
ߚ

д
ߛ

)

ߏߑ߆

ߏ


Перевод из
системы остаточных классов в десятичну˾ систему счисления
.


ˎдин из спосоˡов перевода чисел из системы остаточных
классов в
десятичну˾ систему основан на китайской теореме оˡ остатках. Имеется число

(
ߚ

ɧ
ߚ

ɧ
ɫ
ɧ
ߚ

)
, предс
т
авленно
е

в си
стеме остаточных классов, наˡор модулей
(
ߏ

ɧ
ߏ

ɧ
ɫ
ɧ
ߏ

)

с произведением
M
, их мультипликативные инверсии
(
ߎ

ɧ
ߎ

ɧ
ɫ
ɧ
ߎ

)
. ˒огда пере
вод из системы остаточных классов в десятичну˾
систему счисления

описывает
следу˾˹ая
формула
:

߀


ߚ

޵
ߏ

ߎ


ߚ

޵
ߏ

ߎ


ܴ

ߚ

޵
ߏ

ߎ


Ю
޵













(
ϹЁ
)



49


Расчет мультипликативных инверсий.


ˌультипликативная инверсия

числа

ߚ


ķ

такое число

ߛ
, при котором
остаток
от деления их произведения на модуль Сˎˊ

ߏ


равен единице.

ˌультипликативн
ая

инверси
я

числа
х

мо˦ет ˡыть вычислена следу˾˹им оˡразом:

(
ߚ
д
ߛ
)

ߏߑ߆

ߏ


Ϲ
















(
Ϻϸ
)


Расчет мультипликативных инверсий для модулей Сˎˊ произво
дится путем
подˡора
, то есть происходит инкремент числа

ߛ
,
пока равенство не ˡудет
выполнят
ь
ся. ˂ качестве числа
ߚ

выступает
произведения всех модулей Сˎˊ,
кроме
ߏ

.


޵
ߏ

д
ߛ


ߏߑ߆

ߏ


Ϲ












(
ϺϹ
)

















50


2.3
Параунитарный ˡанк
фильтров в алгеˡре кватернионов

ˊватернионы.

ˊватернионы

ĸ

си
стема

гиперкомплексных чисел,
о
ˡразу˾˹ая

векторное

пространство

размерность˾

четыре над

полем

ве˹ественных чисел.

[19]

Пусть даны кватернионы

ߓ

߃

߄ߋ

߅ߌ

߆ߍ

и
ߙ

߇

߈
ߋ

߉
ߌ

ߊ
ߍ
.

Стандартное представление кватернионов.

ˊватернионы мо˦но
определить,

как формальну˾ сумму

߃

߄ߋ

߅ߌ

߆ߍ
,

где
a
,
b
,
c
,
d

ĸ

ве˹ественные числа, а

i
,
j
,
k

ĸ

мнимые единицы

со
следу˾˹им свойством:


ߋ


ߌ


ߍ


ߋߌߍ


Ϲ












(
ϺϺ
)

˗тоˡы сло˦ить два
кватерниона
,

неоˡходимо сло˦ить ко˽ффициенты
перед соответству˾˹ими мнимыми единицами:

ߓ

ߙ

(
߃

߇
)

(
߄

߈
)
ߋ

(
߅

߉
)
ߌ

(
߆

ߊ
)
ߍ











(
Ϻϻ
)

ˎперация вычитания производится аналогично операции сло˦ения.

ˎперация умно˦ения для кватернионов не коммутативна. ˄ля
умно˦ения
неоˡходимо записать кватернионы в виде произведения многочленов с
мнимыми единицами и раскрыть скоˡки, не используя коммутативных свойств
умно˦ения, затем в соответствии с таˡлицей умно˦ения ˡазисных
кватернионов вычислить произведения мнимых еди
ниц в полученном
многочлене.

˒
аˡлица умно˦ения

ˡазисных кватернионов

ĸ

1,
i
,
j
,
k
:

˒аˡлица
3



Сопря˦ения кватернионов происходит аналогично комплексным числам,
то есть меняется знак у ко˽ффициентов, стоя˹их перед мнимыми
единицами
:

51


ߓ


߃

߄ங

߅ச

߆ߍ






















߃

߄ߋ

߅ߌ

߆ߍ








(
Ϻϼ
)


Сопря˦ение произведения есть произведение сопря˦енных кватернионов
в оˡратном порядке:

ߓߙ





ߙ

ߓ














(
ϺϽ
)


˒ак ˦е для кватернионов справедливо равенство:

ߓ



Ϲ
Ϻ
(
ߓ

ߋߓߋ

ߌߓߌ

ߍߓߍ
)












(
ϺϾ
)


ˌодуль кватерниона вычисляется аналогично модул˾ комплексных
чисел:

ʇ
ߓ
ʇ


ߓ
ߓ



߃


߄


߅


߆








(
ϺϿ
)


˅сли
ʇ
ߓ
ʇ

Ϲ
,
то
ߓ

называ˾т единичным кватернионом.


˄ля деления кватернионов используется умно˦ение на оˡратный
кватернион, который
вычисляется по формуле:

ߓ



ߓ

ʇ
ߓ
ʇ

















(
ϺЀ
)

ˌатричное представление.


ˊватернионы так˦е мо˦но определить, как ве˹ественные матрицы:

ߓ


߃

߄

߅

߆
߄
߃

߆
߅
߅
߆
߃

߄
߆

߅
߄
߃














(
ϺЁ
)


˄ля данного представления сло˦ение и вычитание, умно˦
ение
выполняется аналогично операциями с матрицами.


Сопря˦енному кватерниону соответствует транспонированная матрица:

ߓ



߃
߄
߅
߆

߄
߃
߆

߅

߅

߆
߃
߄

߆
߅

߄
߃









(
ϻϸ
)


˗етвертая степень модуля кватерниона равна определител˾ матрицы
кватерниона:

ʇ
ߓ
ʇ


ČčĜ
(
ߓ
)











(
ϻϹ
)



52


ˁанк фильтров.

ˁанк фильтров (ˁ˔) (от англ.
ķ

į
Filter

Bank
İ)
ķ

цифровая система,
состоя˹ая из секций анализа и синтеза, называемых ˡанком фильтров анализа и
ˡанком фильтров синтеза.
˂ ˡлоке анализа входной сигнал
ߚ
(
ߐ
)

представленны
й последовательность˾ отсчетов

при помо˹и полосовых
фильтров разˡивается на
M

суˡполосных составля˾˹их, которые в идеальном
случае не перекрыва˾тся в частотной оˡласти. ˄алее в ˡлоке синтеза, при
помо˹и фильтров синтеза, происходит восстановление исходног
о сигнала из
его суˡполосных компонент.

˂ зависимости от ˸ирины каналов, которые получа˾тся после
˽тапа
анализа, ˡанки фильтров разделя˾т на равнополосные и неравнополосные. По
количеству каналов ˡанки фильтров делят на двухканальные и
многоканальные
. По в
иду передаточных функций фильтров анализа и синтеза
ˡанки фильтров делят на ортогональные и ˡиортогональные.

˄ецимация
ķ

операция, закл˾ча˾˹аяся в искл˾чении (пропуске)
отсчетов входного сигнала, с порядковым номером, кратным ко˽ффициенту
децимации. ˄ецима
ция в
M

раз оˡозначается оˡычно как
(
ף
޵
)
:

ߛ
(
ߐ
)

(
ף
޵
)

ߚ
(
ߐ޵
)















(
ϻϺ
)

Интерполяция
ķ

операция, закл˾ча˾˹аяся во встраивании (доˡавлении)
ме˦ду отсчетами, чей порядковый номер кратен определенному числу,
некоторой константы. Интерполяция в
M

раз оˡычно оˡозначается как
(
ס
޵
)
:

ߛ
(
ߐ
)


ߚ
(
ߐ
޵
)
ɧ
͎͚͔͑
ߐ
޵

͎͔͎͗͟
ϸ











(
ϻϻ
)

Принцип раˡоты ˡанка фильтров состоит в следу˾˹ем.
Исходный сигнал
разˡи
вается при помо˹и фильтров анализа
ް

(
ߜ
)
ɧ
ߍ

ϸ
ɫ
޵

Ϲ

на
M

суˡ
полосных

составля˾˹их, которые в идеальном случае в частотной оˡласти
не перекрыва˾тся. Подоˡрав соответству˾˹им оˡразом наˡор фильтров
синтеза

ޮ

(
ߜ
)
ɧ
ߍ

ϸ
ɫ

޵

Ϲ
, мо˦но восст
ановить исходный сигнал из его
суˡполосных
компонент.

ˁанк фильтров изоˡра˦ен на рисунке
13.

53



Рисунок
13

ķ

ˁанк фильтров

Полное восстановление или перфективная реконструкция

ķ

свойство
ˡанка цифровых фильтров, закл˾ча˾˹ееся в том, что сигнал, про˸ед˸ий через
схему анализа
-
синтеза идентичен входному с точность˾ до зад
ер˦ки.

Параунитарный (ортогональный) ˡанк фильтров (П˓ˁ˔)
ķ

ˡанк
фильтров, у которого передаточные функции анализиру˾˹их и
синтезиру˾˹их фильтров и их соответственно сме˹енные версии
ортогональны друг другу. ˔ильтры синтеза в параунитарных ˡанках явля˾тся
транспонированным
и версиями фильтров анализа
.

Параунитарный ˡанк
фильтров
гарантирует

полное восстановление.

[21]

Пример параунитарного четырехканального ˡанка
фильтров анализа с
линейной ˔˗˕ изоˡра˦ен на рисунке 4.


Рисунок
14

ķ

˗етырехканальный ˡанк фильтров анализа с линейной ˔˗˕

54



˂ данном примере фильтраци˾ исходного сигнала на четыре канала

мо˦но описать следу˾˹ими ˸агами:

1)

Путем децимации из входных отсчетов формируется четыре канала.


2)

Перестановка ме˦ду отсчетами третьего и

четвертого каналов.

3)

˓
мно˦ение на матрицу перестановок
W
.

޿


Ϲ
ϸ
Ϲ
ϸ
ϸ
Ϲ
ϸ
Ϲ
Ϲ
ϸ

Ϲ
ϸ
ϸ
Ϲ
ϸ

Ϲ














(
ϻϼ
)

4)

˓мно˦ение на ортогональные матрицы
U
0

и
V
0
.

5)

˄
еление
отсчетов

ка˦дого канала на
ф
Ϻ
.

6)

˓
мно˦ение на матрицу перестановок
W
.

7)

ˇадер˦ка третьего и четвертого каналов.

8)

˓мно˦ение на матрицу перестановок
W
.

9)

˓мно˦ение на ортогональные матрицы
U
0

и
V
0
.

10)

˄еление на .

Параунитарный четырехканальный ˡанк фильтров в алгеˡре
кватернионов.

ˎсновным достоинством реализации ˡанка фильтров
в алгеˡре
кватернионов является

то, что на основе кватернионов мо˦но ˡыстро
реализовывать кодеки ˡез потерь.


Использование кватернионов оˡусловлено тем, что для ка˦дой
ортогональной матрицы
A

размерность˾ 4
x
4 су˹ествует уникальная пара
единичных кватернионов, таких что матрицу ˀ мо˦но
представить в виде
произведения ˽тих кватернионов.

˂ данной раˡоте реализован
ы

п
араунитарн
ые

ˡанк
и

фильтров анализа

и
синтеза

в алгеˡре кватернионов с линейной ˔˗˕
.

˔ильтр анализа имеет схему
, представленну˾ на рисунке 5.

55



Рисунок
15

ķ

Параунитарный четырехканальный ˡанк фильтров анализа

Схему данного ˡанка фильтров анализа мо˦но описать следу˾˹им
алгоритмом:

1)
Путем децимации из входных отсчетов формируется четыре канала.


2)
Перестановка ме˦ду
отсчетами третьего и четвертого каналов.

3)
˓мно˦ение на матрицу перестановок
W
.

4)
Левое умно˦ение кватерниона, представленного отсчетами четырех
каналов на кватернион
޹

.

5)
Правое умно˦ение кватерниона, представленного отсчетами четырех
каналов на
кватернион

޸

.

6)
˄еление
отсчетов

ка˦дого канала на
ф
Ϻ
.

7)
˓мно˦ение на матрицу перестановок
W
.

8)
ˇадер˦ка третьего и четвертого каналов.

9)
˓мно˦ение на матрицу перестановок
W
.

10)
Правое умно˦ение кватерниона, представленного отсчетами четырех
каналов
на кватернион
޸

.

) ˄еление отсчетов ка˦дого канала на .

12)
˓мно˦ение на матрицу перестановок
W
.

13)
ˇадер˦ка третьего и четвертого каналов.

14)
˓мно˦ение на матрицу перестановок
W
.

5) Правое умно˦ение кватерниона, представленного отсчетами четырех
к
аналов на кватернион
޸

.

6) ˄еление отсчетов ка˦дого канала на .

56


˔ильтр синтеза имеет схему
, представленну˾ на рисунке 6.


Рисунок
16

ķ

Параунитарный четырехканальный ˡанк фильтров синтеза

Схему
данного ˡанка фильтров синтеза мо˦но описать следу˾˹им
алгоритмом:

1)

˄еление отсчетов ка˦дого канала на .

2)

Правое умно˦ение кватерниона, представленного отсчетами четырех
каналов на кватернион
޸


, который является комплексно
-
сопря˦енным к
кватерниону
޸

.

3)

˓мно˦ение на матрицу перестановок
W
.

4
)

ˇадер˦ка первого и второго каналов.

5)

˓мно˦ение на матрицу перестановок
W
.

6) ˄еление отсчетов ка˦дого канала на .

7) Правое умно˦ение кватерниона, представленного отсчетами четырех
каналов на кватернион
޸


, который является комплексно
-
сопря˦енным к
кватерниону
޸

.

8)

˓мно˦ение на матрицу перестановок
W
.

9)

ˇадер˦ка первого и второго каналов.

) ˓мно˦ение на матрицу перестановок
W
.

)˄еление отсчетов ка˦дого канала на
ф
Ϻ
.

12)

Правое умно˦ение кватерниона, представленного отсчетами четырех
каналов на кватернион
޸


, который является комплексно
-
сопря˦енным к
кватерниону
޸

.

57


13)

Левое умно˦ение кватерниона, представленного отсчетами четырех
каналов на кватернион
޹


, который явл
яется комплексно
-
сопря˦енным к
кватерниону
޹

.

14)

˓мно˦ение на матрицу перестановок
W
.

5) Перестановка ме˦ду отсчетами третьего и четвертого каналов.

6) Путем интерполяции из четырех каналов формируется выходной
сигнал.
























58


3
ПРˎ˃Рˀˌˌˍˎ
-
ˀППˀРˀ˒ˍˀ˟ Р˅ˀЛИˇˀ˖И
˟
РˀˇРˀˁˎ˒ˀˍˍ˛˕ ˌ˅˒ˎ˄ˎ
˂

3.1
ˎсоˡенности реализации на
CUDA

Среда разраˡотки.

˄ля реализации и тестирования данных алгоритмов ˡыл выˡран
инструментарий
NVIDIA

CUDA

Toolkit

8.
, так как данный инструментарий
является сˡорником новей˸их средств разраˡотки с использованием
технологии
NVIDIA

CUDA
, рекомендуемый официальном сайтом
NVIDIA
.
˒ак˦е
NVIDIA

CUDA

Toolkit

8
. интегрируется в среду разраˡотки
Microsoft

Visual

Studio
.
MVS

яв
ляется одной из самых популярных сред разраˡотки,
которая поддер˦ивает язык С++, содер˦ит встроенный компилятор и отладчик
для С++, оˡладает возмо˦ность˾ доˡавления плагинов (в том числе и
NVIDIA

CUDA

Toolkit

8.), а так ˦е удоˡным графическим интерфейсом
и мно˦еством
других полезных функций. Помимо ˽того,
NVIDIA

CUDA

Toolkit

8.
 содер˦ит
в сеˡе драйвер для видеокарты, компилятор
nvcc
,
NVIDIA

Parallel

Nsight

и
пакет примеров с исходным кодом
CUDA
.

Nvcc

ķ

интегрируемый в
Microsoft

Visual

Studio

компилятор
CU
DA

от
компании
NVIDIA
, так ˦е он поддер˦ивает языки
C
и С++.

NVIDIA

Parallel

Nsight

ķ

˽то платформа, интегрируемая в
Microsoft

Visual

Studio
, которая позволяет отла˦ивать модули программ, выполняемые на
видеокарте.

CUDA

Runtime

API
.

Помимо компилятора, реализация
CUDA

дол˦на предоставлять удоˡну˾
систему взаимодействия с хост системой и другими
API
.
˄ля ˽той цели слу˦ит
CUDA

Runtime

API

ķ

ˡиˡлиотека функций, оˡеспечива˾˹их:

[9]

1)

˓правление
GPU.

2)

Раˡоту с контекстом.

3)

Раˡоту с память˾.

4)

Роˡоту с модулями.

59


5)

˓правление выполнением кода.

6)

Раˡоту с текстурами.

7)

˂заимодействие
с
OpenGL

и
Direct

3
D
.

˒еоретически
GPU

мог ˡы самостоятельно контролировать ˡоль˸у˾
часть данного функционала, однако теку˹ий дизайн ˡиˡлиотек таков, что в
CUDA
-
ядре присутствует минимальное количество возмо˦ностей, прямо не
связанных с вычислениями, а все функции
CUDA

Runtime

API

выполня˾тся на
CPU
.


CUDA

Runtim
e

API

делится на два уровня:
CUDA

Driver

API

и
CUDA

API
.
˂ызовы оˡоих уровней доступны
CUDA

прило˦ени˾
и в целом
аналогичный, за искл˾чением ряда осоˡенностей. ˂ частности,
Driver

API

является ˡолее низкоуровневым и треˡует явной инициализации устройства,
тогда как в
CUDA

API

неявная инициализация происходит при первом вызове
л˾ˡой функции ˡиˡлиотеки. ˍапря
му˾ взаимодействовать с
GPU

мо˦ет
только драйвер устройства, на нем ˡазиру˾тся
CUDA

Driver

API
,
CUDA

Runtime

API

и прикладные ˡиˡлиотеки.

При взаимодействии
CPU

и
GPU
,
CPU

называ˾т хост, а
GPU

девайс.
˕ост и девайс име˾т свои адресный пространства и име˾т
возмо˦ность
раˡотать асинхронно.

П
ередача

данных ме˦ду
GPU

и
CPU
.


ˎсновным недостатком технологии
NVIDIA

CUDA

является
неоˡходимость передачи данных ме˦ду графическим и центральным
процессорами.
˝тот недостаток является критичным в прило˦ениях,
раˡота˾˹их

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


При неˡоль˸ом количестве операций, выполняемых на графическом
процессоре,
и высокой степени параллелизма алгоритма,
копирование данных
мо˦ет занимать
около 9% от всего времени выполнения программы.

Су˹еству˾т различные подходы для умень˸ения времени копирования
данных с хоста на девайс и оˡратно:

60


þ

Использования асинхронного копирования,
CUDA

Streams

и
CUDA

Events
.

þ

Испол
ьзование
Pinned

Memory

при раˡоте с данными на хосте.

При оˡычной передаче данных

ме˦ду девайсом и хостом неоˡходимо
выделить память на девайсе и скопировать данные с хоста в ˽ту оˡласть
памяти. ˄ля выделения памяти на девайсе использу˾тся такие функции ка
к
cudaMalloc
,
cudaMallocPitch
,
cudaMallocArray
,
cudaMalloc
2
D
,
cudaMalloc
3
D

и т.д. ˄ля копирования данных с хоста в глоˡальну˾ память
девайса и оˡратно использу˾тся такие функции как
cudaMemcpy
,
cudaMemcpy
2
D
,

cudaMemcpyToArray
,

cudaMemcpy
2
DToArray

и т.д. ˄ля
копирования данных в константну˾ память девайса используется функция
cudaMemcpyToSymbol
.

ˎсоˡенности реализации ˊИ˕
-
фильтра в Сˎˊ.


Исходя из спецификации
CUDA

программа реализована в виде наˡора
функций на языке
C
++.


ˎсновной функцией являет
ся

cudaResidueFIR
,
которая позволяет
раˡотать с л˾ˡым типом данных, для которого определены операторы
сло˦ения, вычитания и преоˡразование в формат
int
32.
˄анная функция
содер˦ит функции копирования данных с хоста на девайс и оˡратно, расчет
оˡратных инвер
сий для модулей Сˎˊ,
разло˦ение ко˽ффициентов и входных
отсчетов в Сˎˊ, применения алгоритма фильтрации к входным отсчетам в Сˎˊ
и перевод результата в десятичну˾ систему счисления.

ˍаиˡолее время
затратной функцией является расчет мультипликативных инверс
ий

в силу
их
подˡора
.

ˎднако при цифровой фильтрации в реальном времени в системе ˖ˎС
неоˡходимость постоянного расчета мультипликативных инверсий отпадает,
так как при постоянных модулях Сˎˊ ее достаточно произвести один раз
, что
су˹ественно сокра˹ает
время выполнения всего алгоритма
. ˀналогично
отпадает перевод ко˽ффициентов фильтра в Сˎˊ.

61



void

allocate
_
blocks
(
int

blocks
,
int
*

threads
,
dim
3*

blocks
3
d
);

ˎписание.

Распределяет количество ˡлоков таким оˡразом, чтоˡы в ка˦дом ˡлоке
ˡыло не ˡолее 4
потоков.

ˀргументы.


blocks

ķ

количество ˡлоков.


threads

ķ

количество потоков, которое ˡудет пересчитано.


blocks
3
d

ķ

структура с рассчитанным количеством ˡлоков.

Результат.


˂
threads

ˡудет поме˹ено возмо˦ное количество потоков. ˂
blocks
3
d

ˡудет поме˹ен
о возмо˦ное количество ˡлоков.


template


typename

T

T
*

copyArrayHostToDevice
(
T
*

host_array
,

int

size
);

ˎписание.


ˊопирует массив типа
T

с хоста на девайс.

ˀргументы.


host
_
array

ķ

указатель на массив данных
в памяти хоста
.


size

ķ

размер копируемого массива.

Результат.


˓казатель на массив в памяти девайса.


template


typename

T

T
*

(
T
*

dev_array
,

int

size
);

ˎписание.


ˊопирует массив типа
T

с девайса на хост.

ˀргументы.


dev
_
array

ķ

указатель на массив данных
в памяти девайса
.

62



size

ķ

размер копируемого массива.

Результат.


˓казатель на массив в памяти хоста.


template


typename

T


T
*

(
T
*

dev_array
,

int

size
);

ˎписание.


ˊопирует массив типа
T

с девайса на девайс.

ˀргументы.


dev
_
array

ķ

указатель на массив данных
в памяти девайса
.


size

ķ

размер копируемого массива.

Результат.


˓казатель на массив в памяти девайса.


template class las;&#xs -9;T00;T

void cudaResidueFIR(T* x, T* y, T* k,
int xsize, int ksize,

int* base, int basesize)
;

ˎписание.


ˊопирует входные отсчеты, ко˽ффициенты и модули на девайс,
раскладывает их в Сˎˊ и выполняет фильтраци˾.

ˀргументы.


x

ķ

указатель на массив входных отсчетов в памяти хоста.


k

ķ

ко˽ффициенты фильтра в памяти хоста.


xsize

ķ

количество входных отсчетов.


ksize

ķ

количество ко˽ффициентов фильтра.



base

ķ

указатель на массив модулей Сˎˊ в памяти хоста.


basesize

ķ

количество модулей Сˎˊ.

Результат.


y

ķ

указатель на выходные отсчеты в памяти хоста.


63


template class las;&#xs -3;ҕT;T

__global__ void
cuda_calculate_base_keys(int* base, T M, int base_size,
int* base_keys)
;

ˎписание.


˂ычисляет мультипликативные инверсии для модулей в Сˎˊ.

ˀргументы.


base

ķ

указатель на массив модулей Сˎˊ в памяти девайса.


M

ķ

произведение модулей Сˎˊ.


basesize

ķ

количество модулей Сˎˊ.

Результат.


base
_
keys

ķ

указатель на выходные мультипликативные инверсии для
модулей Сˎˊ в памяти девайса.


template class las;&#xs -4;T00;T __global__ void cuda_expand_numbers(T*
x, int size, int* base, int base_size, int* y)
;

ˎписан
ие.


Перевод чисел из памяти девайса в Сˎˊ в памяти девайса.

ˀргументы.


x

ķ

указатель на массив входных чисел в памяти девайса.


size

ķ

количество входных отсчетов.


base

ķ

указатель на массив модулей Сˎˊ в памяти девайса.


bas
e
_
size

ķ

количество модулей
Сˎˊ.

Результат.


y

ķ

указатель на массив выходных числе в Сˎˊ в памяти девайса. Размер
массива ˡудет равен
size
*
base
_
size
.


__global__ void cuda_residue_FIR(int* x, int* y, int* k,
int xsize, int ksize, int* base, int basesize)
;

ˎписание.


Применение ˊИ˕

ф
ильтра в Сˎˊ
.

64


ˀргументы.


x

ķ

указатель на массив входных чисел в Сˎˊ в памяти девайса.


k

ķ

указатель на массив ко˽ффициентов ˊИ˕

фильтра в Сˎˊ в памяти
девайса.


x
size

ķ

количество входных отсчетов.


ksize

ķ

количество
ко˽ффициентов ˊИ˕

фильтра.



base

ķ

указатель на массив модулей Сˎˊ в памяти девайса.


basesize

ķ

количество модулей Сˎˊ.

Результат.


y

ķ

указатель на массив выходных числе в Сˎˊ в памяти девайса. Размер
массива ˡудет равен
size
*
base
_
size
.


template class las;&#xs -4;T00;T
__global__ void cuda_fold_numbers(int*
x, int size, int* base, int* base_keys, int base_size,
T

M,
T

*y)
;

ˎписание.


Переводит массив чисел из системы остаточных классов в десятичну˾
систему счисления.

ˀргументы.


x

ķ

указатель на массив
ч
исел в Сˎˊ в
памяти девайса.


k

ķ

указатель на массив ко˽ффициентов ˊИ˕
-
фильтра в Сˎˊ в памяти
девайса.


size

ķ

количество
чисел в Сˎˊ
.


base

ķ

указатель на массив модулей Сˎˊ в памяти девайса.


base
_
keys

ķ

указатель на массив мультипликативных инверсий в Сˎˊ.


base
_
si
ze

ķ

количество модулей Сˎˊ.


T

ķ

произведение модулей в Сˎˊ.

Результат.


y

ķ

указатель на массив выходных числе в
десятичной системе счисления

в памяти девайса.

65


ˎсоˡенности реализации параунитарного ˡанка фильтров в алгеˡре
кватернионов.


Поскольку в
данном алгоритме используется операция задер˦ки
отсчетов, то неоˡходима синхронизация. ˒ак как использование данного
алгоритма предполагает ˡоль˸ой размер входной последовательности, то при
выполнении программы потоки оˡ˺единятся в несколько десятков ˡлоко
в.

Поскольку из
-
за архитектуры
CUDA

невозмо˦но синхронизировать данные
ме˦ду ˡлоками, то
в
реализация алгоритмов анализа и синтеза

функции
задер˦ки отсчетов вызыва˾т ядро
GPU

самостоятельно (явля˾тся
___
global
___
функциями).


˄ля кватернионов разраˡотан класс
Quaternion
,
который реализует
арифметические операции с ними, а именно сло˦ение, вычитание, левое
умно˦ение, правое умно˦ение и сопря˦ение.


ˎˡ˹ие

функции
.

__device__ void cuSWAP_function(double* q);

ˎписание.


ˌеняет местами отсчеты третьего и четвертого каналов.

ˀргументы.


q

ķ

указатель на кватернион, представленный отсчетами четырех каналов.

Результат.

q

ķ

указатель на кватернион, представленный отсчетами четырех каналов.


__device__ void cuW_function(double
* q);

ˎписание.


Производит умно˦ение на матрицу перестановок. ˓мно˦ение
реализуется оˡычными перестановками, что су˹ественно сокра˹ает
вычислительные затраты.

ˀргументы.


q

ķ

указатель на кватернион, представленный отсчетами четырех каналов.

Результат.

66


q

ķ

указатель на кватернион, представленный отсчетами четырех каналов.



Реализация фильтра анализа.

ˀлгоритм фильтра анализа происходит через вызов функции
analysis
_
filter
,
которая принимает на вход отсчеты из памяти хоста и количество
кватернионов, котор
ое формируется из них путем децимации. ˄анная функция
копирует отсчеты из памяти хоста в память девайса, затем производится
алгоритм анализа, затем результаты копиру˾тся в память хоста.

void analysis_filter(double* x, double* y, int
quat_number);

ˎписание.


ˊопирует входные отсчеты на девайс

и
алгоритм анализа

в алгеˡре
кватернионов
.

ˀргументы.


x

ķ

указатель на массив входных отсчетов в памяти хоста.


quat
_
number

ķ

количество кватернионов, которое рассчитывается как
количество отсчетов разделенное на
количество каналов.

Результат.


y

ķ

указатель на выходные отсчеты в памяти хоста.


__global__ void analys
i
s_step1(double* x);

ˎписание.


˂ыполняет часть алгоритма фильтра анализа до первой задер˦ки.

ˀргументы.


x

ķ

указатель на массив кватернионов в
памяти девайса.

Результат.


x

ķ

указатель на массив кватернионов в памяти девайса.


__global__ void analysys_step2(double* x);

ˎписание.

67



˂ыполняет часть алгоритма фильтра анализа после первой задер˦ки и до
второй задер˦ки.

ˀргументы.


x

ķ

указатель на ма
ссив кватернионов в памяти девайса.

Результат.


x

ķ

указатель на массив кватернионов в памяти девайса.


__global__ void analysys_step3(double* x);

ˎписание.


˂ыполняет часть алгоритма фильтра анализа после второй задер˦ки.

ˀргументы.


x

ķ

указатель на
массив кватернионов в памяти девайса.

Результат.


x

ķ

указатель на массив кватернионов в памяти девайса.


__global__ void delay34(double* x);

ˎписание.


˂ыполняет задер˦ку третьего и четвертого каналов.

ˀргументы.


x

ķ

указатель на массив кватернионов в п
амяти девайса.

Результат.


x

ķ

указатель на массив кватернионов в памяти девайса.


Реализация фильтра синтеза.

ˀлгоритм фильтра синтеза происходит через вызов функции
synthesis
_
filter
,
которая принимает на вход кватернионы из памяти хоста,
полученные
фильтром анализа, и их количество.

˄анная функция копирует
кватернионы

из памяти хоста в память девайса, затем производится алгоритм
синтеза, затем резуль
таты копиру˾тся в память хоста.


void synthesis_filter(double* x, int quat_number);

ˎписание.

68



ˊопируе
т входные кватернионы на девайс и выполняет алгоритм синтеза.

ˀргументы.


x

ķ

указатель на массив кватернионов в памяти хоста.


quat
_
number

ķ

количество кватернионов, которое рассчитывается как
количество отсчетов разделенное на количество каналов.

Резуль
тат.


y

ķ

указатель на выходные отсчеты в памяти хоста.


__global__ void synthesis_step1(double* x);

ˎписание.


˂ыполняет часть алгоритма фильтра синтеза до первой задер˦ки.

ˀргументы.


x

ķ

указатель на массив кватернионов в памяти девайса.

Результат.


x

ķ

указатель на массив кватернионов в памяти девайса.


__global__ void synthesis_step2(double* x);

ˎписание.


˂ыполняет часть алгоритма фильтра синтеза после первой задер˦ки и до
второй задер˦ки.

ˀргументы.


x

ķ

указатель на массив кватернионов в памяти д
евайса.

Результат.


x

ķ

указатель на массив кватернионов в памяти девайса.


__global__ void synthesis_step3(double* x);

ˎписание.


˂ыполняет часть алгоритма фильтра синтеза после второй задер˦ки.

ˀргументы.


x

ķ

указатель на массив кватернионов в памяти
девайса.

69


Результат.


x

ķ

указатель на массив отсчетов в памяти девайса.


__global__ void delay23_part1(double* x);

ˎписание.


˂ыполняет задер˦ку первого и второго каналов.

ˀргументы.


x

ķ

указатель на массив кватернионов в памяти девайса.

Результат.


x

ķ

указатель на массив кватернионов в памяти девайса.




















70


3.2
Результаты реализации


Производительность.


ˊИ˕
-
фильтр в Сˎˊ.

Поскольку

алгоритм

цифровой фильтрации в Сˎˊ

оˡеспечива
е
т
сверхточну˾ оˡраˡотку и спосоˡ
е
н раˡотать с ˸ироким диапазоном

частот, то
для тестирования

использовались числа типа
Big

Integer
.

Big

Integer

ķ

целые числа, для операций над которыми использу˾тся
специальные алгоритмы, их диапазон не ограничен.

˄ля использования
Big

Integer

в
C
++
и

CUDA

ˡыла взята открытая
ˡиˡлиотека

ˌ˽тта ˌак

ˊулчена

и адаптирована для использования на
GPU

с
технологией
CUDA
.

ˀнализ производительности производился на видеокарте
GeForce

GTX

750
Ti

и центральном процессоре
Intel

Core

i
5
-
4670
.
˂ ходе анализа
производительности использовались реализация
ˊИ˕

фильтра на
CPU
,
реализация ˊИ˕

фильтра на
GPU

ˡез

Сˎˊ

и реализация ˊИ˕

фильтра в Сˎˊ.
Поскольку для тестирования использовались числа порядка
Ϲϸ
஽஺
, то в качестве
модулей Сˎˊ ˡыли взяты простые числа
919, 929, 937, 941, 947, 953, 967, 971,
977, 983

и
,
а мультипликативные инверсии к ним ˡыли рассчитаны заранее.
˔ильтрам с одинаковыми ко˽ффициентами и подавались одинаковые случайно
сгенерированный на хосте массив отсчетов

размерами 89, 6384 и 3768
.

Порядок ˊИ˕

фильтров составлял 48 и 496.

Результат
ы для ˊИ˕

фильтра порядка 48 представлены в таˡлице 4.

˒аˡлица
4

ˊоличество
входных отсчетов

˂ремя
выполнения на
CPU
,
мс

˂ремя
выполнения на
GPU
,
мс

˂ремя
выполнения на
CPU

в Сˎˊ
,
мс

8192

6383

390

201

16384

13722

720

418

32768

28436

1301

765

71


Результаты для ˊИ˕
-
фильтра поряд
ка 496 представлены в таˡлице 5
.

˒аˡлица
5

ˊоличество
входных отсчетов

˂ремя
выполнения на
CPU
,
мс

˂ремя
выполнения на
GPU
,
мс

˂ремя
выполнения на
CPU

в Сˎˊ
,
мс

8192

11152

657

259

16384

26166

1246

508

32768

56301

2633

1034


ˊак видно из таˡлиц, реализация ˊИ˕
-
фильтра в Сˎˊ имеет наиˡоль˸у˾
производительность.

˝то оˡусловлено тем, что при использовании Сˎˊ
происходит пони˦ение разрядности чисел, но увеличение количества
вычислений. ˒ак как для чисел типа
Big

Integer

арифметические операции
занима˾т намного ˡоль˸е времени, чем для чисел типа
int
32
, то в данном
с
лучае виден очевидный прирост производительности. ˎднако, если выигры˸ в
операциях при пони˦ении разрядности мал, то целесооˡразно не использовать
Сˎˊ.

ˍу˦но учитывать, что при использовании Сˎˊ

количество параллельных
вычислений возрастет в несколько раз.

ˁанк цифровых фильтров на кватернионах.


Поскольку
данный алгоритм предполагает раˡоту с числами с плава˾˹ей
запятой, то для тестирования использовались числа формата
double
.


ˀнализ производительности проводился на видеокарте
GeForce

GTX

750
Ti

и сравнив
ался с реализацией на
CPU

Intel

Core

i
5
-
4670.
ˍа вход подавался
случайно

сгенерированный

массив отсчетов

формата
double

и

размером 4,
48 и 496
. Размер данного массива кратен четырем, так как кватернион имеет
четыре составля˾˹ие.
Результаты раˡоты ˡан
ка цифровых фильтров на
кватернионах представлены в таˡлице 6.

˒аˡлица
6

Размер входных данных

˂ремя выполнения на
˂ремя выполнения на
72


CPU
, мс

GPU
, мс

1024

2.12

0.34

2048

4.35

0.41

4096

8.97

0.53



ˊак видно из таˡлиц
ы
, реализация параунитарного ˡанка фильтров на
GPU

раˡотает в несколько раз ˡыстрее, чем аналогичная реализация на
CPU
.
˝то оˡусловлено тем, что реализованный алгоритм оˡладает высокой степень˾
параллелизма.


Статьи
, опуˡликованные по результатам выполнения

раˡоты

1.

įПараллельно
-
конвейерная реализация методов и алгоритмов цифровой
оˡраˡотки сигналов на основе модулярных кодовİ И.ˀ.
ˊалмыков, ˂.
˂елиго˸а, ˄.И. ˊаплун, ˄.ˌ. ˊлионский, ˄.˂. ˁогаевский, ˀ.ˁ.
˒ристанов.

˄анная

статья ˡыла
представлена на
конференции į
IV

ˌе˦дународный
ˁалтийский форумİ, которая проходила в
г. ˊалининград с  по 8 мая 6 г.
ˎзнакомиться с содер˦анием данной статьи мо˦но в прило˦ении ˀ, лиˡо по
URL

https://elibrary.ru/item.asp?id=27394634.

2.

įˎсоˡенности реализации непозици
онных цифровых фильтровİ ˀ.˂.
˂елиго˸а, ˃.И.Линец, ˄.И. ˊаплун, ˄.ˌ. ˊлионский, ˄.˂. ˁогаевский
.

˄анная статья опуˡликована в ˦урнале įˌе˦дународная конференция по
мягким вычислениям и измерениямİ
, который издан Санкт
-
Петерˡургском
государственном ˽лектротехническом университете įЛ˝˒Иİ им. ˂.И ˓льянова
(Ленина). ˎзнакомиться с содер˦анием данной стать мо˦но в прило˦ении ˁ,
лиˡо по
URL

https://elibrary.ru/item.asp?id=27053133
.

73


3.

į
Реализация методов и
алгоритмов цифровой оˡраˡотки сигналов на
основе модулярных кодов
İ И.ˀ. ˊалмыков, ˀ.˂. ˂елиго˸а, ˄.И. ˊаплун,
˄.˂. ˁогаевский, ˂.˂. ˃ульванский, ˀ.
С.

˂ознесенский.

˄анная статья опуˡликована в ˦урнале įˊомпоненты и технологииİ.
ˎзнакомиться с содер˦анием
статьи мо˦но в прило˦ении ˂.
























74


3.3
ˀнализ возмо˦ных путей повы˸ения производительности


Повы˸ение скорости передачи данных ме˦ду девайсом и хостом.


Pinned

Memory
.


При использовании функции
new

п
о

умолчани˾

хост

выделяет

Pageable

Memory
.
˄евайс не мо˦ет получить доступ к данной памяти напряму˾,
по˽тому для того, чтоˡы
GPU

получил данные, хост

сначала копирует их из
Pegeable

Memory

в
Pinned

Momory
, а затем у˦е из
Pinned

Memory

в
память
девайса.

[22]

ˊопирование данных с хоста на дев
айс изоˡра˦ено на рисунке 7.


Рисунок
1
7

ķ

ˊопирование данных с хоста на девайс


˄ля того, чтоˡы не ˡыло неоˡходимости копировать данные из
Pageable

Memory

в
Pinned

Memory
,
достаточно сразу ˦е хранить их в
Pinned

Me
mory
.


˄ля раˡоты
Pinned

Memory

разраˡотчик использует те ˦е функции, что и
для
Pageable

Memory
,
однако для выделения
Pinned

Memory

посредством
CUDA

API

используется функция
cudaMallocHost
, а для освоˡо˦дения
cudaFreeHost
.



Разраˡотчику не следует чрезмерно испо
льзовать
Pinned

Memory
,
так как
˽то умень˸ит оˡ˺ем физической памяти, доступной для других программ, что
снизит оˡ˹у˾ производительность системы.


75


Повы˸ение производительности в ˊИ˕
-
фильтре на Сˎˊ.

Использование
LUT
.


ˊак видно из разностного уравнения
ˊИ˕

фильтра основными
операциями явля˾тся сло˦ение и умно˦ение. При использовании Сˎˊ мо˦но
искл˾чить все операции умно˦ения, заменив их
таˡлицами

поиска, в
английской литературе
LUT
.

[
23]

˒аˡлица поиска

(англ.

lookup

table
, LUT
)

ĸ

˽то

структура данных,
оˡ
ычно

массив

или

ассоциативный массив, используемая с цель˾ заменить
вычисления на операци˾ простого

поиска. ˓величение скорости мо˦ет ˡыть
значительным, так как получить данные из памяти зачасту˾ ˡыстрее, чем
выполнить трудо̀мкие вычислен
и
я.

ˍаиˡоль˸у˾ производительность мо˦но получить за счет использования
маленьких модулей Сˎˊ, тогда таˡлицы ˡудут иметь малый размер, что
оˡеспечит минимальное
время поиска.



Повы˸ение производительности в параунитарном ˡанке фильтров в
алгеˡре кватернионов.


Реализация умно˦ителей на кватернионах

с использованием
CORDIC

алгоритма
.

˒ак как
в современных ˖ˎС устройствах есть тенденция
к умень˸ени˾
операций умно˦ения, то при реализации умно˦ения кватернионов
целесооˡразно применить
CORDIC

алгоритм.

CORDIC

(от ан
гл.

Coordinate

Rotation

Digital

Computer

ĸ

цифровой
вычислитель поворота системы координат)
ķ

аппаратно
-
ориентированный
алгоритм, предназначенный для вычисления поворота вектора на плоскости, а
так ˦е вычисления других ˽лемен
тарных функций и преоˡразований
. ˂
русскоязычной литературе ˡоль˸е известен как алгоритм вычисления цифра за
цифрой. ˎсновная идея закл˾чается в том, чтоˡы аппроксимировать матрицу
оˡоротов линейной комˡинацией дискретных ˽лементарных оˡоротов, ка˦дый
из которых реализуется на основе дв
оичных сдвигов и сло˦ений.

[
24]

76


CORDIC
-
алгоритм основывается на факторизации матрицы оˡорота
следу˾˹им оˡразом:

(
ߚ

ߛ

)

޻
౭౨౭

(
Ϲ


(
ߐ
)
Ϻ


(

)

(
ߐ
)
Ϻ


(

)
Ϲ
)
(
ߚ

ߛ

)






ɧ









(
ϻϽ
)

где
޶
,

(
ߐ
)
,

(
ߐ
)

подоˡраны таким оˡразом, что результат произведения
аппрок
симирует поворот вектора на заданный угол.

˒аким оˡразом
реализация умно˦ения кватернионов на основе алгоритма
CORDIC

позволит полность˾ заменить операции умно˦ения на операции
сдвига и сло˦ения.






















77


4
СП˅˖ИˀЛ˜ˍ˛˅ ˂ˎПРˎС˛
ˎˁ˅СП˅˗˅ˍИ˟
ˁ˅ˇˎПˀСˍˎС˒
И

ˎрганизация раˡочего места.

Реализованные алгоритмы могут ле˦ать в основе огромной системы для
˖ˎС. ˂ процессе интеграции разраˡотанного Пˎ в систему оˡраˡотки ˖ˎС
разраˡотчик дол˦ен находится в комфортных условиях, которые оˡеспечива˾т
ˡезопа
сность и здоровье. Профессиональное мастерство и возмо˦ность
приоˡретения дополнительных профессиональных навыков во многом зависят
от того, насколько комфортно раˡотать. По˽тому целесооˡразно рассмотреть
организаци˾ раˡочего места программиста.

ˊа˦дый чел
овек индивидуален, по˽тому условия комфорта у ка˦дого свои,
однако мо˦но выделить оˡ˹ие.

Разраˡотчики программного оˡеспечения
оˡычно раˡота˾т в офисах. При раˡоте в поме˹ении мо˦но выделить
следу˾˹ие треˡования:

ˎˡ˹ие треˡования

Согласно СанПиˍ ../.4
.1340
ķ
3 į˃игиенические треˡования к
персональным ˽лектронно
-
вычислительным ма˸инам и организации раˡотыİ

[25]

ˡыли определены следу˾˹ие треˡования к раˡочему месту.

˒реˡования к
разме˹ени˾
:

þ

Расстояние ме˦ду ˡоковыми поверхностями видеомониторов не дол˦но
ˡыть менее , м.

þ

Расстояние ме˦ду раˡочими столами с видеомониторами дол˦но ˡыть не
менее , м.

þ

˅сли в поме˹ениях есть источники вредных производственных факторов,
то места с персональными

компь˾терами дол˦н
ы

располагаться в
изолированных каˡинах с организованным воздухооˡменом.

þ

ˌеста с персональным компь˾тером рекомендуется отделить друг от
друга перегородкой высотой ,5
ķ

, м, если персонал, раˡота˾˹ий на
78


них, выполняет творческу˾ раˡот
у, подвер˦ен сильному умственному
напря˦ени˾ или его раˡота треˡует высокой концентрации.

þ

˃лаза пользователя дол˦ны находиться на расстоянии ,6
ķ

,7 м от
видеомонитора.

þ

˃лаза пользователя не дол˦ны находиться ˡли˦е, чем на расстоянии ,5
м от видеомонито
ра.

þ

При определении расстояния поло˦ения глаз пользователя от
видеомонитора ну˦но учитывать размер видимых им знаков и символов.

þ

При разме˹ении раˡочих столов неоˡходимо учитывать, что
естественный свет дол˦ен падать на поверхность раˡочего стола
преиму˹ес
твенно слева.

þ

При разме˹ении раˡочих столов неоˡходимо учитывать, что
видеомониторы дол˦ны ˡыть ориентированы ˡоковой стороной к
проемам.

˒реˡования к раˡочему столу:

þ

ˊонструкция раˡочего стола дол˦на оˡеспечивать оптимальное
разме˹ение на раˡочей поверхности используемого оˡорудования с
учетом его количества и конструктивных осоˡенностей, характера
выполняемой раˡоты. При ˽том допускается использование раˡочих
столов р
азличных конструкций, отвеча˾˹их современным треˡованиям
˽ргономики.

þ

Поверхность раˡочего стола дол˦на иметь ко˽ффициент отра˦ения ,5
-
0,7.

þ

Рекомендуется использовать стол для раˡоты с персональным
компь˾тером, который имеет следу˾˹ие параметры: ˸ирину 8
00, 1000,
 и 4 мм, глуˡину 8 или  мм, высоту 75 мм.

þ

Раˡочий стол дол˦ен иметь пространство для ног высотой не менее 6
мм, ˸ириной
-

не менее 5 мм, глуˡиной на уровне колен
-

не менее 45
мм и на уровне вытянутых ног
-

не менее 65 мм.

79



˒р
еˡования к креслу:

þ

При раˡоте с персональным компь˾тером используемое кресло дол˦но
оˡеспечивать поддер˦ание оптимальной раˡочей позы, при ˽том оно
дол˦но позволять изменять позу для сни˦ения усталости мы˸ц ˸еи,
плеч и спины.

þ

При выˡоре типа кресла неоˡход
имо учитыва
ть параметры тела
пользователя, а так˦е характер и продол˦ительность раˡоты с
персональным компь˾тером.

þ

ˊресло дол˦но ˡыть регулируемым по высоте.

þ

˂ысота кресла составлять

400
-

55 мм
.

þ

ˊресло дол˦но поворачиваться.

þ

ˊресло дол˦но иметь спинку с
регулируемым наклоном.


þ

˂ысота опорной поверхности спинки дол˦на составлять
300

ę

 мм,

˸ирину не менее 38 мм.

þ

ˌаксимальные углы наклона спинки вперед и назад дол˦ны составлять
3ĉ
.

þ

Расстояние спинки от переднего края сиденья дол˦но составлять
260
-

400

мм
.

þ

Подлокотники кресла дол˦ны ˡыть длинной не менее 5 мм и ˸ириной
50
ķ

7 мм.

þ

˂нутреннее расстояние ме˦ду подлокотниками дол˦но ˡыть 35
ķ

500
мм.

þ

˂ысота подлокотников
над сиденьем
дол˦на составлять

230

ę

3 мм
.

þ

ˊресло дол˦но иметь сиденье с регулиру
емым наклоном.

ˌаксимальные
углы наклона вперед и назад дол˦ны составлять
5ĉ

и

.

þ

П
оверхность сиденья

кресла дол˦на ˡыть

с закругленным передним
краем
.

80


þ

Поверхность всех

˽лементов

кресла
дол˦на ˡыть полумягкой, с

нескользя˹им, слаˡо ˽лектризу˾˹имся и
воздухопроницаемым
покрытием,

оˡеспечива˾˹им легку˾ очистку от загрязнений.

þ

˂ысота раˡочей поверхности стола дол˦на регулир
оваться в пределах
680
-

8 мм.

þ

ˊонструкция раˡочего
кресла

дол˦на оˡеспечивать: ˸ирину и глуˡину
повер
хности сиденья не менее 4
мм.

˒реˡования к дополнительному оˡорудовани˾:

þ

По ˦ела
ни˾ персонала, раˡочее место дол˦но иметь подставку для ног.

þ

˘ирина подставки для ног дол˦на ˡыть не менее 3 мм.

þ

˃луˡина подставки для ног дол˦на ˡыть не менее 4 мм.

þ

˂ысота подставки для ног дол˦на

составлять 5 мм.

þ

˓гол наклона подставки для ног дол˦ен составлять максимум
ĉ
.

þ

Подставка для ног дол˦на иметь рифлену˾ поверхность с ˡортиком
высотой  мм по правому кра˾.

þ

Расстояние ме˦ду краем стола и клавиатуры дол˦но составлять 
ķ

300
мм.

þ

ˊлави
атура дол˦на располагаться на специальной поверхности, которая
отделена от поверхности стола.

˒реˡования к
персональным компь˾терам
:

þ

ˊа˦дый персональный компь˾тер дол˦ен ˡыть подвергнут
санитарно
-
˽пидемиологической ˽кспертизе
, в ходе которой ˡудет выставле
на оценка
его производительности.

þ

˟ркость ˡелого поля в видеомониторах дол˦на составлять не менее 35
кд/м
2
.

þ

ˍеравномерность яркости в видеомониторах дол˦на составлять не ˡолее
20%.

81


þ

ˊонтрастность для монохромного ре˦има в видеомониторах дол˦на ˡыть
не менее

3:1.

þ

Персональный компь˾теры не дол˦ны выделять в воздух вредные
ве˹ества, концентрация которых превы˸
е
т предельно допустиму˾
норму для атмосферного воздуха.

þ

ˌо˹ность ˽кспозиционной дозы мягкого рентгеновского излучения в
л˾ˡой точке на расстоянии ,5 м
от
видеомонитора

и корпуса
персонального компь˾тера

при л˾ˡых поло˦ениях регулировочных
устройств не дол˦на превы˸ать  мкˇв/ч ( мкР/ч).

þ

Пользователь дол˦ен иметь возмо˦ность вертикального и
горизонтального поворота видеомонитора с фиксацией
в заданном
поло˦ении для его фронтального наˡл˾дения.

þ

ˊорпус персонального компь˾тера дол˦ен ˡыть окра˸ен в спокойные
мягкие тона с диффузным рассеиванием света.

þ

ˊорпус, видеомонитор, клавиатура и другие составля˾˹ие
персонального компь˾тера дол˦ны иметь матову˾ пове
рхность с
ко˽ффициентом отра˦ения ,4
ķ

,6 и не дол˦ны иметь ˡлестя˹их
деталей, спосоˡных создавать ˡлики.

þ

˂идеомонитор дол˦ен оˡладать возмо˦ность˾ регулирования яркости и
контрастности.

þ

˄окументация на проектирование,
изготовление и ˽ксплуатаци˾
персона
льного компь˾тера

не дол˦на противоречить треˡованиям
настоя˹их санитарных правил.

˒р
еˡования к осве˹ени˾
:

þ

˂ поме˹ения с персональными компь˾терами искусственное осве˹ение
дол˦но производиться системой оˡ˹его равномерного осве˹ения.

þ

ˎсве˹ение не дол˦но
создавать ˡликов на ˽кранах видеомониторов и
дол˦на ˡыть не ˡолее 3 лк.

82


þ

ˎсве˹енность на поверхности стола в зоне разме˹ения раˡочего
документа дол˦на ˡыть 3
ķ

5 лк.

þ

˟ркость светя˹ихся поверхностей дол˦на составлять не ˡолее  кд/м
2
.

þ

Источники осве˹
ения не дол˦ны вызывать пряму˾ ˡлескость.

þ

Раˡочие поверхности не дол˦ны вызывать отра˦енну˾ ˡлескость.

þ

˟ркость ˡликов на ˽кране видеомониторов не дол˦на превы˸ать 4
кд/м
2
.

þ

˟ркость потолка не дол˦на превы˸ать  кд/м
2
.

þ

Показатель ослепленности для источни
ков оˡ˹его искусственного
осве˹ения в производственных поме˹ениях дол˦ен ˡыть не ˡолее .

þ

Светильники оˡ˹его излучения дол˦ны оˡладать показателем яркости не
ˡолее  кд/м
2
.

þ

Светильники местного осве˹ения дол˦ны иметь непросвечива˾˹ий
отра˦атель с за˹ит
ным углом не менее 4ĉ.

þ

Светильники дол˦ны оˡладать за˹итным углом не менее 4ĉ.

þ

ˍеравномерность распределения яркости в поле зрения пользователя
персонального компь˾тера дол˦на ˡыть ограничена.

þ

Соотно˸ение яркости ме˦ду раˡочими поверхностями не дол˦но
превы˸ать 3:
ķ

5:1.

þ

Соотно˸ение яркости ме˦ду раˡочими поверхностями и поверхностями
стен не дол˦но превы˸ать :.

þ

Рекомендуется применять л˾минесцентные лампы типа Лˁ и компактные
л˾минесцентные лампы в качестве источников света.

þ

˄опускается
использование ламп накаливания в качестве источников
местного осве˹ения.

þ

˄опускается использование галогенных ламп при устройстве
отра˦енного осве˹ения.

83


þ

Поме˹ения с персональными компь˾терами дол˦ны ˡыть осве˹ены
светильниками с параˡолическими ре˸етками,
укомплектованными
˽лектронным пускорегулиру˾˹ими аппаратами.

þ

ˍе допускается использование светильников ˡез рассеивателей и
˽краниру˾˹их ре˸еток.

þ

Рядом располо˦енные светильники или лампы многоламповых
светильников оˡ˹его назначения дол˦ны ˡыть вкл˾чен
ы

на

разные фазы
трехфазной сети.

þ

Линии светильников дол˦ны ˡыть разме˹ены локализовано над
раˡочими столами ˡли˦е к переднему кра˾, если места с персональными
компь˾терами располо˦ены по периметру.

þ

Светильники дол˦ны ˡыть разме˹ены спло˸ными или прерывистыми
линиями, если места персональными компь˾терами располо˦ены
линиями.

þ

ˎсветительные установки оˡ˹его назначения дол˦ны оˡладать
ко˽ффициентом запаса равным ,4.

þ

ˊо˽ффициент пульсации не дол˦ен превы˸ать 5%.

þ

ˍео
ˡходимо проводить чистку оконных стекол, рам и с
ветильников не
ре˦е двух раз в год.

þ

ˍеоˡходимо своевременно заменить перегорев˸ие лампы.

˒реˡования к уровн˾ ˸ума.

þ

˓ровень ˸ума в производственных поме˹ениях с персональными
компь˾терами не дол˦ен превы˸ать предельно допустимых значений,
которые
установлены санитарно
-
˽пидемиологическими нормативами

для
категории 3 и типа įвİ.

þ

ˎˡорудование, чей уровень ˸ума превы˸ает предельно допустимые
нормы дол˦ны ˡыть разме˹ены вне поме˹ений с персональными
компь˾терами.

84


˒реˡования к микроклимату:

þ

˂ поме˹ениях
с персональными компь˾терами параметры
микроклимата
дол˦ны удовлетворять санитарно
-
˽пидемиологическим нормативам
микроклимата для категории раˡот а и ˡ.

þ

ˍеоˡходимо е˦едневно производить вла˦ну˾ уˡорку и систематическое
проветривание после ка˦дого часа ра
ˡоты на персональном компь˾тере.

þ

˂ поме˹ениях с персональными компь˾терами у
ровни поло˦ительных и
отрицательных а˽роионов в воздухе дол˦ны соответствовать
действу˾˹им санитарно
-
˽пидемиологическим нормативам.

þ

˂ поме˹ения с персональными компь˾терами содер˦а
ние вредных
химических ве˹еств не дол˦но превы˸ать предельно допустимые
нормы, которые определены действу˾˹ими гигиеническими
нормативами.

˝ргономика
программного оˡеспечения
.

˂

разраˡотанном программном оˡеспечении имеется возмо˦ность
корректировать ко˽ффициенты ˊИ˕

фильтра и модули системы остаточных
классов, а так˦е
по
входным и
выходным данным алгоритмов
мо˦ет строится
амплитудно
-
частотная характеристика. Помимо ˽того, на осн
ове данного
программного оˡеспечения мо˦но разраˡотать вычислительну˾ систему для
цифровой оˡраˡотки сигналов. По˽тому, согласно
˃ˎС˒ Р ИСˎ 6385

ķ
2007

[26]

и
˃ˎС˒ Р ИСˎ 94
-
210
ĸ

2012

[27]
,

целесооˡразно дать рекомендации по

разраˡотке программной системы
и

реализации графического интерфейса для
данного Пˎ:

ˎˡ˹ие рекомендации к разраˡотке программного оˡеспечения:

þ

˔ункциональность и графический интерфейс разраˡатываемого
программного оˡеспечения

дол˦н
ы

ˡыть основан
ы

на точном
определ
ении предполагаемых поль
зовате
лей, задач и среды

использования.

85


þ

Пользователи дол˦ны ˡыть вовлечены в проектирование и разраˡотку

функциональности и графического интерфейса программного
оˡеспечения
.

þ

С
овер˸енствование проекта дол˦но ˡыть итеративным
.

þ

При реализации функциональности

и графического интерфейса
программного оˡеспечения дол˦ен

учитывать опыт пользователя
,
который пользовался похо˦ими программными продуктами.

þ

˂

группу
разраˡотчиков

дол˦ны ˡыть вкл˾чены специалис
ты с
навыками и знаниями в раз
личных оˡластях
. Их оˡязанности дол˦ны
ˡыть распределены в соответствии с их навыками. ˂ ка˦дой успе˸ной
команде разраˡотчиков дол˦ны ˡыть как минимум:
специалисты в
оˡ
ласти антропометрии и ˽ргономики
;

конечные пользователи; ˽ксперты
в предметной оˡласти;
специалисты по
маркетингу, ˡр˽ндингу,
прода˦ам, технической поддер˦ке и оˡслу˦ивани˾, здоровь˾ и
ˡезопасности;

разраˡотчи
ки пользовательского интерфейса;
специалисты
по составлени˾ технического описания

программного продукта;
специалисты по управлени˾

персоналом;
специал
исты по анализу
˽кономической деятельности
; специалисты по проектировани˾
программного и аппаратного оˡеспечения; программисты;
специалисты в
оˡласти человеческих ресурсов
.

Рекомендации к

разраˡотке и реализации

графическо
го

интерфейс
а
:

þ

Интерфейс дол˦ен оˡ
еспечивать пользователя адекватной информацией
для ˡыстрого оˡзора и детальной информацией о параметрах.

þ

˖вет интерфейса дол˦ен ˡыть приятен пользовател˾ и не дол˦ен резать
глаза.

þ

˃лавные ˽
лементы интерфейса дол˦ны

ˡыть

легкодоступны и
управляемы
.

86


þ

˝лементы

интерфейса, отоˡра˦а˾˹ие основну˾ информаци˾, дол˦ны
раˡотать так, чтоˡы пользователь имел возмо˦ность легко наˡл˾дать за
ними.

þ

˝лементы интерфейса, отвеча˾˹ие за ввод
-
вывод дол˦ны раˡотать так,
чтоˡы умень˸ить вероятность о˸иˡок пользователя.

þ

Интерфейс
дол˦ен предусматривать возмо˦ность о˸иˡки пользователя.

þ

˃рафический интерфейс дол˦ен ˡыть реализован в соответствии с
характеристиками пользовательского восприятия и задачи, выполняемой
пользователем.

þ

˃рафический интерфейс дол˦ен ˡыть реализован

таким оˡра
зом, чтоˡы
ˡыть совместимыми с име˾˹имися стереотипами
возмо˦ных
пользователей
, динамикой управляемых процессов и их
пространственной реализац
ией в производственной системе.

þ

˃рафический интерфейс дол˦ен ˡыть реализован

таким оˡразом, чтоˡы
ˡыть совместимым
и с характерными осоˡенностями
возмо˦ных
пользователей
, участву˾˹
их

в процессе управления и выполнения
задания. ˒ак˦е дол˦ны ˡыть приняты во внимание треˡования к
квалификации, аккуратно
сти, скорости и физической силе.

þ

При наличии средств управления, они

д
ол˦ны ˡыть располо˦ены
достаточно ˡлизко для корректного управления в том случае, когда
воздействие оператора на ˽ти средства происходит одновременно или
является последовательным и ˡыстрым. ˎднако они не дол˦ны ˡыть
сли˸ком ˡлизко из
-
за возникновения риск
а неосторо˦ного неверного
управля˾˹его воздействия.

Рекомендации к

разраˡотке и реализации

функциональности
программы:

þ

ˎсновные и наиˡолее
распростран̀нные

функции программы дол˦ны
выполняться максимально просто.

þ

ˍеоˡходимо опове˹ать пользовател
ей

о действиях программы.

87


þ

ˍеоˡходимо поме˹ать похо˦ие по смыслу функции рядом.

þ

Изли˸няя информация не дол˦на отвлекать пользователя.

þ

Пользователь дол˦ен видеть только ну˦ные ему данные и результаты.

þ

˄иалог программы и пользователя дол˦ен ˡыть прост и понятен

пользовател˾.

þ

Информация дол˦на выводиться с левого верхнего угла, переводя взгляд
пользователя в правый ни˦ний угол.

þ

ˍе следует использовать громкие раздра˦а˾˹ие звуки для привлечения
внимания пользователя.





















88


СПИСˎˊ ЛИ˒˅Рˀ˒˓Р˛

1.

ˎсновы
цифровой оˡраˡотки сигналов / ˀ.И. Солонина, ˄.ˀ.
˓лахович, С.ˌ. ˀрˡузов, ˅.ˁ. Соловьева. СПˡ.: ˁ˕˂
-
Петерˡург, 5.
768 с.

2.

˃ольденˡерг Л.ˌ., ˌат˾˸кин ˁ.˄., Поляк ˌ.ˍ. ˖ифровая оˡраˡотка
сигналов: Справочник.
ķ

ˌ.: Радио и связь 985 г. 3 с.

3.

Л˽м ˃., ˀнал
оговые и цифровые фильтры: Расчет и реализация, ˌ.:
ˌир, 98.
ķ

59 с.

4.

˂итязев ˂.˂. ˖ифровая частотная селекция сигналов
ķ

ˌ. Радио и
связь.
993 г.
ķ

323 c.

5.

ˀйфичер ˝., ˄˦ервис ˁ. ˖ифровая оˡраˡотка сигналов: практический
подход, 
-
е издание. : Пер. с а
нгл.
ķ

ˌ.: Издательский дом į˂ильямсİ,
2004.
ķ

992
c
.

6.

Сте˸енко ˂.ˁ. ПЛИС фирмы
ALTERA
: проектирование устройств
оˡраˡотки сигналов.
ķ

ˌ.: ˄ˎ˄˅ˊˀ, .
ķ

8 с.

7.

Параллельные вычисления
CUDA

//
NVIDIA

: сайт Ä˝лектронный
ресурсÆ.
URL
:
http
://
www
.
nvidia
.
ru
/
object
/
cuda
-
parallel
-
computing
-
ru
.
html

(дата оˡра˹ения 9.3.7)

8.

Параллельные вычисления на
GPU
. ˀрхитектура и программная
модель
CUDA

/ ˀ.˂. ˁоресков, ˀ.ˀ. ˕арламов, ˍ.˄. ˌарковский и др.
ˌ.: Издательство московского университета, . 336 с.

9.


CUDA C P
rogramming Guide, 20 March 2017 // NVIDIA Developer
Zone: website [
˝лектронный

ресурс
].

URL
:

http
://
docs
.
nvidia
.
com
/
cuda
/
cuda
-
c
-
programming
-
guide
,
(дата оˡра˹ения
20.04.2017)

10.


cuBLAS, 20 March 2017 // NVIDIA Developer: website [
˝лектронный

ресурс
]. URL
:

http
://
docs
.
nvidia
.
com
/
cuda
/
cublas
/
index
.
html
,
(дата
оˡра˹ения 4.4.7)

89


11.


cuSPARSE, 20 March 2017 // NVIDIA Developer: website [
˝лектронный

ресурс
]. URL
:

http
://
docs
.
nvidia
.
com
/
cuda
/
cusparse
/
index
.
html
,
(дата
оˡра˹ения 5.4.7)

12.


cuSOLVER, 20 March
2017 // NVIDIA Developer: website
[
˝лектронный

ресурс
].
URL
:

http
://
docs
.
nvidia
.
com
/
cuda
/
cusolver
/
index
.
html
,
(дата оˡра˹ения
25.04.2017)

13.


cuRAND, 20 March 2017 // NVIDIA Developer: website [
˝лектронный

ресурс
]. URL
:

http
://
docs
.
nvidia
.
com
/
cuda
/
curand
/
index
.
html
,
(дата
оˡра˹ения 6.4.7)

14.


cuFFT, 20 March 2017 // NVIDIA Developer: website [
˝лектронный

ресурс
]. URL
:

http
://
docs
.
nvidia
.
com
/
cuda
/
cufft
/
index
.
html
,
(дата
оˡра˹ения 6.4.7)

15.


NPP, 20 March 2017 // NVIDIA Developer: website [
˝лектронный

ресурс
]. URL
:

http
://
docs
.
nvidia
.
com
/
cuda
/
npp
/
index
.
html
,
(дата
оˡра˹ения 7.4.7)

16.


ˊестер ˓., Проектирование систем цифровой и сме˸анной оˡраˡотки
сигналов. :

Пер. с англ

ķ

ˌ.: ˒ехносфера, .
ķ

38 с.

17.


˂иноградов И.ˌ. ˎсновы теории чисел.
-

ˌ.:
ˍаука, 97. 68 с.

18.


ˀку˸ский И.˟., ˞дицкий ˄.ˌ. ˌа˸инная арифметика в остаточных
классах.
-

ˌ.: Сов. радио, 968. 44 с.

19.


И.

Л.

ˊантор, ˀ.

С.

Солодовников

˃иперкомплексные числа.

ĸ

ˌ.:

ˍаука, 973.

ĸ

44 с.

20.


˖ифровые ˡанки фильтров: анализ, синтез и применение в
мультимедиа системах: ˓чеˡ. метод. посоˡие / ˀ. ˀ. Петровский, ˌ.
Парфен˾к, ˀ. ˁорович и др. ˌинск: ˁ˃˓ИР, 6.
ķ

8 с.

21.


ˌоделирование и аппаратная реализация структуры полифазного
ˡанка фильтров в з
адачах мониторинга ˸ирокого частотного
диапазона / ˄. И. ˊаплун, ˄. ˌ. ˊлионский, ˀ. Л. ˎлейник и др. // Сˡ.
докл. ме˦дунар. конф. по мягким вычислениям (
SCM
'3), Санкт
-
90


Петерˡург, 3
ķ
5 мая 3 г.
C
Пˡ.: Изд
-
во СПˡ

˃˝˒˓ "Л˝˒И", 3.
С. 38
ķ
141.

22.


How to
Optimize Data Transfer in CUDA C/C++ //
NVIDIA Developer:
website [
˝лектронный

ресурс
].
URL
:

https
://
devblogs
.
nvidia
.
com
/
parallelforall
/
how
-
optimize
-
data
-
transfers
-
cuda
-
cc
/
,
(дата оˡра˹ения
1
.0
5
.2017)

23.


˒аˡлица поиска
//

˂икипедия: веˡсайт
[
˝лектронный
ресурс
]
URL
:
https
://
ru
.
wikipedia
.
org
/
wiki
/˒аˡлицаÈпоиска
,
(
дата оˡра˹ения
3
.0
5
.2017)

24.


Петровский, ˍ. ˀ. Лестничная схема умно˦ителя кватернионов на
основе 
DCORDIC

алгоритма / ˍ. ˀ. Петровский, ˌ. Парфен˾к //
˒руды 4
-
й ме˦дународной конференции į˖ифровая

оˡраˡотка
сигналов и е
е

применениеİ (
DSPA
ļ).
ĸ

ˌосква: .
ĸ

С. 4
ķ
406.

25.


СанПиˍ ../.4.34
-
3 į˃игиенические треˡования к
персональным ˽лектронно
-
вычислительным ма˸инам и организации
раˡотыİ. ˌ.: ˌинздрав России, 3.

26.


˃ˎС˒ Р ИСˎ 6385
-
2007
į˝ргономика. Применение ˽ргономических
принципов при проектировании производственных системİ. ˌ.:
Стандартинформ, 8.

27.


˃ˎС˒ Р ИСˎ 94
-
210
-
 į˝ргономика взаимодействия человек
ķ

системаİ. ˌ.: Стандартинформ, 3.







Приложенные файлы

  • pdf 7811195
    Размер файла: 1 MB Загрузок: 0

Добавить комментарий