Ограничения алгоритмов параллельных вычислений в цифровой обработке сигналов

УДК 004.31

А. С. Сидоренко

ОГРАНИЧЕНИЯ АЛГОРИТМОВ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИИ В ЦИФРОВОЙ ОБРАБОТКЕ СИГНАЛОВ

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

Задачи по разработке современной радиотехнической аппаратуры постоянно ставят вопросы об увеличении вычислительной мощности устройств, на которых реализуются алгоритмы цифровой обработки сигналов (ЦОС). Так как важное место среди алгоритмов ЦОС занимают расчеты быстрого преобразования Фурье (БПФ), то возникает необходимость в распараллеливании вычисления БПФ на несколько процессорных ядер. Существующие сигнальные процессоры имеют конечную производительность. Одним из методов дальнейшего повышения вычислительной мощности является параллельное выполнение расчетов, но увеличение количества ядер не приводит к линейному росту производительности всей системы. Процессоры, связанные между собой через стандартные интерфейсы обмена, не дают бесконечного увеличения скорости передачи данных. Кроме того, начинают проявляться накладные расходы на синхронизацию вычислителей, на организацию обмена данными между ними и т. д. Распараллеливание можно выполнить разными способами, но важно следить за тем, чтобы структура вычислителя соответствовала решению необходимой задачи. Информационные потоки между разными процессорами должны быть распределены наиболее оптимально с точки зрения минимизации передаваемых данных.

Данная задача не является новой. Одна из возможных схем распараллеливания вычислений БПФ с использованием транспьютероподобных сигнальных процессоров представлена в работе [1, с. 48 - 50], но в этой работе не приведена оценка времени, затрачиваемого на обмен данными между процессорами.

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

1. Если имеется п процессорных ядер, причем п-1 ядер выполняют вычисления за промежутки времени меньшие чем Т;, а хотя бы одному ядру требуется время Т;, то общее время работы всей параллельной системы будет равно Т;. Поэтому важно следить за тем, чтобы ни одно ядро не было загружено больше остальных. Обратная ситуация, когда один вычислитель выполняет операций меньше других, вполне допустима, так как приводит к простою только одного ядра, а не всех.

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

Таким образом, необходимо максимально равномерно распределить вычисления между ядрами. Так как БПФ есть лишь линейная комбинация одинаковых операций, называемых «бабочками», то просто необходимо эти «бабочки» разделить поровну (насколько это возможно) между процессорами.

В качестве примера рассмотрим 16-точечное БПФ по основанию 2 с прореживанием по времени (рисунок 1). Для случая с прореживанием по частоте все рассуждения будут анало-гичны.

№ 3(3) 2010

Рисунок 1 - Алгоритм вычисления 16-точечного БПФ с прореживанием по времени с основанием 2

Как видно из рисунка 2, б, в, для четырех ядер возможно несколько структур с одинаковой производительностью. Ситуация осложняется, когда число ядер не кратно числу «бабочек», т. е. если делить 16-точечное БПФ не на четыре процессора, а, скажем, на три (рисунок 2, а). В этом случае возможна следующая загрузка системы: два ядра обсчитывают по 11 «бабочек» и одно ядро считает только 10 «бабочек». Однако, исходя из замечания 1, общая производительность системы будет такой, как будто каждое ядро вычисляет по 11 «бабочек», т. е. ядро номер 3 будет простаивать.

При этом легко посчитать производительность ядра в «бабочках». Иногда этот показатель даже приводят в описаниях на тот или иной сигнальный процессор. Следовательно, требуемое количество ядер для реализации БПФ с учетом замечания 1 можно рассчитать по формуле:

Ыь.

N..

где N0 - количество тактов процессора, затрачиваемых на расчет одной «бабочки»; Nb - общее количество бабочек в БПФ-алгоритме;

Np - допустимое время на вычисление БПФ, выраженное в тактах процессора. Число N может принимать разные значения для различных оснований БПФ [5, с. 400], например, для основания 2 формула (1) примет вид:

=

NN

1082 N..

где N. - количество точек, над которыми выполняется БПФ.

а б

Рисунок 2 - Варианты распараллеливания вычисления БПФ на несколько процессоров

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

Пусть выполняется 16-точечное БПФ по основанию 2 (см. рисунок 1) с точностью вычисления Я = 32 бита. Расчет одного узла «бабочки» с прореживанием по времени для входных чисел АиВи выходных X, У состоит из следующих операций [2, с. 400, 401]:

X = А +

¥ = А - ШкмБ,

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

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

Быстрое преобразование Фурье по основанию 2 не является единственным. Существуют алгоритмы вычисления и по другим основаниям. Известно, что алгоритм БПФ по основанию 4 в вычислительном плане является более эффективным, чем алгоритм по основанию 2. При увеличении размера входного массива количество умножений для основания 2 хорошо аппроксимируется формулой [3, с. 36, 37]:

N

log2 N,

а для основания 4 - формулой:

3N 8

(log2 N - 2).

Легко заметить, что для последнего случая требуется меньшее количество умножений. Рассмотрим случай для основания 2 как более простой. При этом вполне можно будет оценить соотношение между временем, необходимым для вычислений и для обмена трафиком. Предположим, что N = 3. Это примерная оценка, так как даже для одного типа процессоров, количество тактов в большей степени зависит от конкретного алгоритма вычисления. Следовательно, если разместить каждую стадию БПФ на одном процессоре, то потребуется обсчитать 8 «бабочек», что займет 24 такта процессорного времени. При использовании 8-битного (Кцпк = 8) линкового порта процессора для передачи (приема) данных для одного узла требуется N.. тактов:

N., =

4 R

R

link

Стоит заметить, что цикл передачи для одного процессора будет являться циклом приема для следующего. Это пояснено на рисунке 3.

2

Операция вычисления процессора п

Цикл передачи процессора п

Цикл приема процессора п+1

Операция вычисления

процессора п+1

Рисунок 3 - Соответствие циклов приема (передачи) процессоров

Для каждой «бабочки» необходимо передать 128 бит данных (т. е. два комплексных 32-битных числа, состоящих из реальной и мнимой частей). Таким образом, для передачи двух точек для одной «бабочки» требуется 16 тактов, т. е. весь массив из восьми точек одним лин-ковым портом можно будет передать не быстрее чем за 128 тактов, что примерно в пять раз больше, чем требуется для вычислений.

Таким образом, существует минимальное количество уровней БПФ, которые имеет смысл размещать на одном ядре, чтобы избежать временных расходов на обмен трафиком. Рассчитаем эту величину.

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

92 ИЗВЕСТИ* Тра нссиба "г**3 3

веиерных вычислении ограничивает передачу данных от входа до выхода всей системы в целом. Сколько уровней БПФ имеет смысл размещать на одном ядре?

Итак, процессорное время, расходуемое на обмен трафиком между уровнями, на основе формулы (7) определяется так:

= 4RN, = RNL,

8 K 2K

где R - используемая разрядность вычислений;

К - количество задействованных линковых портов. А время, непосредственно требуемое для вычислений, определяется формулой:

Tc = NbNcM,

где M - количество уровней БПФ, вычисляемых одним ядром. Таким образом, для исключения расхода времени на обмен трафиком, должно выполняться условие:

Tc ± Tc.

Теперь можно определить количество уровней БПФ, выполняемых на одном ядре, при котором распараллеливание не будет требовать дополнительного расхода времени на обмен данными:

R

M >-.

2 KNc

Так как Nc - параметр, характеризующий вычислительную мощность процессора, a R характеризует точность вычислений и не может быть легко изменен, то наиболее простым механизмом повышения эффективности параллельных вычислений является увеличение К. Хотя тут тоже возникают сложности, связанные с ограниченным числом линковых портов на процессорах.

Стоит заметить, что в данном случае возрастают требования к используемому объему памяти. Так как операции приема (передачи) выполняются одновременно с вычислениями, то для этих данных необходимы собственные буферы. Поэтому общее число памяти, необходимое для хранения данных, увеличивается на 4NR битов.

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

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

1. Нагулин, H. Е. Алгоритм параллельного вычисления быстрого преобразования Фурье для транспьютероподобных сигнальных процессоров [Текст]/ H. Е. Нагулин, С. Н. Нагулин // Цифровая обработка сигналов. - 2008. - № 7.

2. Еоулд, Б. Теория и применение цифровой обработки сигналов: Пер. с англ. / Б. Еоулд, Л. Рабинер. - М.: Мир, 1978.

3. Richard, V. N. OFDM for wireless multimédia communications / V. N. Richard, Pr. Ramjee asad. - London: Artech House, 2000.