ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ДИСКРЕТНЫЕ ПРЕОБРАЗОВАНИЯ НА ПРОЦЕССОРАХ NEUROMATRIX С ЯДРОМ NMC3
Сергей Викторович Мушкаев, ведущий инженер-программист Тел. +7(495)531-30-80 (225), e-mail: [email protected] ЗАО НТЦ «Модуль» http://www.module.ru
В данной статье рассматриваются вопросы оценки производительности векторных вычислений в процессорах NeuroMatrix на примере дискретного Фурье, Уолша-Адамара, косинусного и вейвлет преобразования. Разбирается принцип построение оптимальных алгоритмов. Демонстрируется эффективность векторных вычислений на DSP процессорах NeuroMatrix.
Ключевые слова: быстрое преобразование, Фурье, Уолша-Адамара, вейвлет, косинусное, NMC3, NeuroMatrix, NM6406, 1879ВМ5, К1879ХК1Я, К1879ХБ1Я, MB7707
Введение.
Платформа NeuroМatrix®
В задачах проектирования сложных аппаратно-программных систем, связанных с цифровой обработкой сигналов и изображений, важным аспектом является выбор аппаратной платформы. Решающим фактором, как правило, является скорость наиболее критичных функций. При этом не всегда весь требуемой набор функций присутствует в составе библиотек поддержки. На примере широко известных дискретных преобразований в данной статье рассматривается достаточно простой принцип расчета производительности любых векторизуемых алгоритмов для ядра NMC3.
Фирмой ЗАО НТЦ Модуль разработаны следующие процессоры с ядром NMC3 (NeuroMatrix Соге)[1]: NM6405, C.B. Мушкаев NM6406 (1879ВМ5), СБИС К1879ХК1Я и К1879ХБ1Я. Главным вычислительным узлом NMC3 ядра является матрично-векторный сопроцессор, осуществляющий арифметические и логические операции над 64-разрядными векторами данных произвольной разрядности. Элементарной 1-тактовой операцией для векторного сопроцессора может являться матричное преобразование входного 64-р слова. Это преобразование в зависимости от конфигурации разрядностей упакованных данных в векторе может включать от 1 до 2048 умножений с накоплением. Данный факт заставляет принципиально пересматривать стандартные быстрые алгоритмы для достижения максимальной производительности.
Основной отличительной особенностью архитектуры NMC3 от архитектуры предыдущего поколения NMC является ускоренная загрузка весов в матричный умножитель, наличие 4 банков внутренней памяти и 6 внутренних шин ядра, благодаря которым возможно осуществить до шести операций ввода-вывода данных за один такт. В пересмотре на задачу с БПФ, где базисной единицей будет уже не «бабочка 2х2», а ДПФ-8 , это означает, что поток входных данных сигнала (веса для векторного умножителя), поток комплексных коэффициентов (sin и cos), выходной поток и поток команд будут направляться по независимым шинам и при использовании разных банков памяти :LB0,LB1,GB0,GB1 (см. рОшибка! Источник ссылки не найден.) будут работать па-
Sin.Cos
Vector__
Cooprocessor результат ДПФ-8
7Х
SRAM 64К*64 I ВО
Вх. данные матрица коэф
SRAM 64Кх64 L81
\Z
SRAM 64Кх64 G60
RISC Core
Команды
SRAM 64КХЁ4 GBO
Рис. 1 Организации параллельных потоков команд и данных при вычислении ДПФ-8
раллельно. Т.к. данные на проходе обрабатываются векторным сопроцессором с темпом в один такт на одно 64-разрядное слово, то фактическое время вычислений будет определяться временем прохождения самого большого из этих потоков.
Быстрое преобразование Фурье-256
Так как базовой операцией сопроцессора является умножение вектора на матрицу, то базисной операцией в декомпозиции быстрого алгоритма БПФ может служить дискретное преобразование Фурье (ДПФ) с произвольным основанием (2,4,8,16...). Рассмотрим поиск оптимального основания для БПФ-256.
Так как суть ДПФ - комплексное умножение матрицы на вектор, то преобразование ДПФ-8 бьется на две стадии: умножение вектора входных данных X на матрицу коэффициентов W(Sin и cos) (см. рРис. 2) и последующую стадию сложения частичных произведений с учетом инверсии знака (см. рРис. 3). Более детально ознакомиться с алгоритмом БПФ-256 для NeuroMatrix можно в [2].
ного умножителя при разбиении матрицы умножителя при разбиении матрицы весо-весовых коэффициентов - 8х2 вых коэффициентов - 2х2
Оценим время работы ДПФ-8. Разрядность входных и выходных данных возьмем 32, разрядность коэффициентов W.re и W.im (sin и cos) - 8 бит. При таких разрядностях имеем разбиение матрицы векторного умножителя на 2 столбца (Re и Im) и 8 строк (см. рРис. 2). Для вычисления ДПФ-8 через матрицу необходимо пропустить две (мнимую и действительную часть) 8х8 байтовых матрицы W(sin, cos). Так как данные передаются по 64-разрядной шине, то на это потребуется 2х8 тактов. Также 8 тактов потребуется, чтобы просуммировать частичные произведения от предыдущего шага (рРис. 3) и еще 8 тактов - на сдвиг результатов вправо для нормализации результата, так как вычисления происходят в целочисленной арифметике с фиксированной точкой. Т.е. для ДПФ-8 требуется 16+8+8=32 такта. Для других оснований-N аналогичный расчет дает общую формулу: 4*N2/16+2*N/2+2*N/2 = N2/4+2N тактов, где 16,2,2 в знаменателях - коэффициенты параллельности (число одновременных умножений в матрице) при соответствующих разбиениях матрицы умножителя. В зависимости от выбранного основания для базисных ДПФ, в схеме БПФ будет содержаться различное число слоев. Подста-
новка различных оснований в формулу дает зависимость времени вычисления одного слоя БПФ-256 (см. Таблица 1).
Таблица 1
Зависимость времени вычисления одного слоя БПФ-256 из отдельных ДПФ
Основание T, тактов на K, кол-во DFT(N) Тактов на
DFT(N): N2/4+2N в слое для FFT(256) слой, T*K
DFT(2) 5 128 640
DFT'(2) 2 128 256'
DFT(4) 12 64 768
DFT(8) 32 32 1024
DFT(16) 96 16 1536
DFT(32) 320 8 2560
DFT(256) 16896 1 16896
DFT'(2)- вариант «бабочки» без умножения, выполненный только на сложениях и вычитаниях, где коэффициенты sin и cos = +1 и -1 .
Исходя из времени вычисления каждого слоя в Таблица 2 приведено время вычисления всего БПФ-256 для разных схем декомпозиции.
Таблица 2
Зависимость времени вычисления БПФ-256 от схемы декомпозиции
Схема FFT-256 Слоев Кол-во тактов Тактов без 1 слоя нормализации Тактов без 2 слоев нормализации
2-2-2-2-2-2-2-2 8 8*640=5120 -- -- Теор./практ.
4-4-4-4 4 4*768=3072 2816 2560
4-8-8 3 768+1024+1024=2816 2560 2048
2'-8-16 3 256+1024+1536=2816 2560 2304/2742 (+19%)
16-16 2 1536+1536=3072 2816 2560/3008 (+17%)
8-32 2 1024+2560=3584 3584 3328
256 1 16896 -- --
Как видно из Таблица 2 оптимальной является схема 2'-8-16. Практическая реализация на процессоре этих схем отличается чуть меньше чем на 20%, это связанно с дополнительными расходами на инициализацию регистров, работу циклов и особенностями работы конвейера команд.
Двумерное дискретное косинусное преобразование (ДКП)
Принцип вычисления двумерного ДКП 8х8 очень схож с ДПФ-8 и имеет такую же структуру разбиения [3]. Разница только в том, что при первом проходе ДКП-8 (по горизонтали) 32р. коэффициенты косинусов загружаются в рабочую матрицу умножителя, а входные байтовые данные изображения в виде упакованных 64-р. слов подаются на вход умножителя. На втором проходе ДКП-8, наоборот - 32-р. результаты преобразований загружаются в матрицу умножителя, а на вход умножителя подаются байтовые вектора косинусов. И для первого, и для второго прохода требуется 4 раза сменить рабочую матрицу коэффициентов и на вход каждой подать по 8 64-р. слов. Таким образом, двумерное ДКП 8х8 требует 2*4*8=64 такта. На практике эта цифра составляет 78 тактов (1.2 такта/пиксель), что также на 20% выше расчетного.
Wavelet преобразование
В настоящее время алгоритмы кодирования на основе вейвлет-преобразований (ВП) играют большую роль в области сжатия изображений. Рассмотрим реализацию фильтра биортогонального ВП Коэна-Добеши-Фово 5/3 на платформе NeuroMatrix.
Как известно, ВП преобразование заключается в фильтрации исходного изображения по вертикали и горизонтали высокочастотным и низкочастотным фильтром с последующим прореживанием через один.
С учетом матричной структуры умножителя коэффициенты фильтров расположатся лесенкой как показано на рисунках Рис. 4 и Рис. 5. Как видно из Рис. 4 для формирования 4 выходных отсчетов (как для высокочастотного, так и для низкочастотного фильтра) необходимо иметь две матрицы коэффициентов и соответственно две команды векторного умножения. Т.е. в среднем на обработку одного пикселя двумя фильтрами потребуется один такт. При вертикальной фильтрации полученные результаты загружаются в матрицу весовых коэффициентов умножителя, а коэффициенты фильтров в виде 4-разрядных чисел, упакованных в 64 разрядные слова подаются на умножающий вход (см. Рис. 5). На каждом такте генерируется 4 результирующих отсчета. Итоговая расчетная производительность одной ступени вейвлет преобразования составляет: 1+0.25= 1.25 такта на точку.
хо Х1 Х2 хз Х4 Х5 ХВ Х7 ХЗ Х9 Х10 Х11 Х12 Х13
■1 I ^ в 2 -1
-1 2 е 2 -1
-1 2 6 2 -1
LowPass Filter -1 2 6 2 I -1 I
ХЕ
HighPass Filter
XT
■1 I 2 S 2 -1
-1 2 e 2 ■1
-1 2 s 2 ■1
LowPass Filter -1 2 e 2 I -1 I
НighPass Filter
и
т
"ттт-
HighPass Filter
Горизонтальная фильтрация
Рис. 4. Лестничная структура весовых коэффициентов векторного умножителя при прохождении низкочастотного и высокочастотного фильтра в горизонтальном направлении
0 0 0 ■1 L3D L20 L10 LJ00
□ 0 0 2 L31 L21 L11 U01
0 0 -1 ■1 L32 122 L12 LJ02
□ 0 2 0 L33 L33 L13 LJ03
—
—1
2
-1
0 0 0 0 L315 L315 И15 Ш15
Ю
Вертикальная фильтрация
К
High- Low
Рис. 5 Лестничная структура весовых коэффициентов векторного умножителя при прохождении высокочастотного фильтра в вертикальном направлении
Преобразование Уолша-Адамара
Наряду с ДПФ в системах цифровой связи получило широкое распространение дискретное преобразование Уолша-Адамара (БИТ). В виду единичных коэффициентов БИТ: -1 и +1 его можно считать самым быстродействующим на платформе №игоМа1;пх. Высокая эффективность достигается за счет возможности работы с упакованными 2-разрядными данными. Так, если мы возьмем исходный вектор с 64-разрядными элементами длины п, то для вычисления преобразования БИТ(п) нам понадобится п2/п=п тактов, где п2 -общее кол-во операций умножения с накоплением, а п - коэффициент параллельности (при п<=32), полученный от разбиения матрицы на п строк. Схема быстрого преобразования БИТ(Ы) создается через такую же декомпозицию до базисных БИТ(п) в несколько слоев, как и в случае БПФ.
Кол-во дискретных преобразований БИТ(п) в одном слое быстрого БИТ(Ы) составляет Б=К/п.Время вычисления одного слоя составляет Б*п=(К/п)*п=К. Т.е. оно постоянно и не зависит от основания п (при п<=32). Однако, общее время вычисление БИТ(№) зависит от кол-ва слоев к и составляет к*К , где к=1о§32К.
Таким образом:
при N<32 требуется один слой, общее время составит N тактов.
при N<32*32=1024 требуется два слоя, общее время составит 2*N тактов.
при N<32*32*32= 32768 требуется три слоя, общее время составит 3*N тактов и т.д.
В итоге мы имеем гораздо меньшую вычислительную сложность - O(Nlog32N), по сравнению со стандартной быстрой схемой O(Nlog2N). Очевидно, что наибольшая эффективность достигается при длинах равных степеням 32-х.
Заключение
Реальные замеры времени на данных примерах демонстрируют, что развитая архитектура внутренних и внешних шин ядра NMC3 и наличие 4 внутренних банков памяти позволяет обеспечить вычисления в несколько параллельных потоков входных и выходных данных. Таким образом, исключается из расчета производительности временные задержи, связанные с пересылкой данных.
По сравнению с предыдущей архитектурой NMC в задачах БСТ8х8 и FFT новое ядро NMC3 показало прирост производительности от 20% до 40% в тактах.
На примере стандартных дискретных преобразований показана относительная простота теоретической оценки их производительности, которая в чистом виде соответствует числу операций с учетом фактора параллельности. Это дает возможность для оценки времени исполнения векторизуемых задач без их предварительного программирования. Поправочный коэффициент реального времени исполнения составляет не более 20% от расчетного значения.
Представленные в Таблица 3 данные по производительности подтверждают высокую эффективность архитектуры NeuroMatrix в задачах цифровой обработки сигналов, в целом, и в вычислениях дискретных преобразований, в частности.
Таблица 3
Расчетная и практическая производительность дискретных преобразований на процессорах с ядром NMC3 320МГц
Преобразование- Разрядность. Кол-во тактов Кол-во тактов Время, Тактов/точку
размер данных вх.-вых. данных (расчетное) (практическое) мкс (пиксель)
FFT-256 32-32 3100 2742 8,5-9,5* 11
FFT-512 32-32 5376 6500 20-21* 13
FFT-1024 32-32 15360 18400 54-57* 18
DHT-1024 64-64 2048 2252 7 2,2
4хБИТ-1024", 16-16 2048 2252 7 0,54
4x1024
DCT-8x8, 8-32 16384 20215 63 1,2
Кадр 128х128 (643fps длга*ж кадра)***
Wavelet,1 ступень 8-16 20480 26200 81 1,6
Кадр 128х128 (480fps для* SD кадра)***
*- разброс во временах обусловлен различными вариантами нормализации результатов [2]
** 4xDHT-1024 - означает одновременное вычисление четырех DHT над матрицей из 4 строк сигналов длиной 1024 *** данные по фреймрейту для SD кадра (720х576) являются пиковыми и получены путем пересчета из блоков 128х128, умещающихся во внутренней памяти. Реальная цифра будет зависеть от внешней памяти и работы контроллеров ПДП.
Литература
1. Семейство процессоров обработки сигналов с векторно-матричной архитектурой NEURO-MATRIX® / Черников В., Виксне П., Шелухин А. [и др.] // Электроные компоненты. 2006. № 6. С. 79-84.
2. Кашкаров В., Мушкаев С. Организация параллельных вычислений в алгоритмах БПФ на процессоре NM6403 // Цифровая обработка сигналов. 2001. № 1. С. 53-58.
3. Мушкаев С.В., Ландышев С.В. Применение процессора NM6403 (Л1879ВМ1) для сжатия изображений // Цифровая обработка сигналов. 2002. № 1. С. 12-18.
High-performance discrete transformations on NeuroMatrix processors with NMC3 core
Sergey Viktorovich Mushkaev, Leading software engineer Scientific and Technical Center «Modul»
The author discusses the performance evaluation of vector computing on NeuroMatrix processors . The examples of discrete Fourier, cosine, Walsh-Hadamard and wavelet transformations are analysed. The principle of optimal algorithms design is dwelled on. The effectiveness of vector calculations on NeuroMatrix processors is demonstrated.
Keywords: fast transformation, DCT, FFT, Wavelet, Walsh-Hadamard, NMC, NMC3, NeuroMatrix, NM6406, MB7707.
УДК 004.93
МЕТОДОЛОГИЯ АНАЛИЗА ГРАФИЧЕСКОЙ ИНФОРМАЦИИ В СИСТЕМАХ ПОДДЕРЖКИ ПРИНЯТИЯ РЕШЕНИЙ
Александр Валерьевич Кучуганов, канд.техн .наук, доц. кафедры «АСОИУ» Тел. (3412)58-89-10, e-mail: [email protected] Ижевский государственный технический университет имени М. Т. Калашникова
www.istu.ru
В работе описаны результаты исследования с целью повышения степени автоматизации, универсальности и эффективности систем обработки изображений двухмерных и трехмерных объектов на основе известных и гипотетических моделей механизмов зрения биологических систем.
Ключевые слова: Анализ изображений, биоинспирированные алгоритмы, вербализация изображений, дескрипционная логика, лингвистические переменные, нечеткий пространственно нагруженный граф, распознавание.
Работа выполнена при поддержке РФФИ (проекты № 11-07-00632-а, 11-07-00783-а), Госзаказ МОиН РФ №4043
Целью работы является автоматизация процессов анализа, формализации, поиска и сопоставления графической информации для поддержки принятия управленческих решений в исследовательской и проектной деятельности, что позволит обеспечить промышленность и население новым видом и качеством информационных услуг.
На основе современных достижений когнитивистики и методов извлечения знаний из изображений (Image Mining) разработана методология, содержащая комплекс взаимосвязанных моделей и методов, а также технология на ее основе, позволяющая повысить универсальность, самоадаптацию и автоматизацию систем анализа изображений.
Сформулированы общие принципы организации обработки графической информации, придерживаться которых особенно нужно при комплексировании систем обработки графической информации с целью обеспечения структурированности компонентов системы, упрощения взаимодействия между ними и достижения необходимой степени достоверности и качества результатов:
1. Многоуровневая обработка - распределение функциональности по уровням, каждый из которых специализируется на решении своего круга родственных задач.
2. Иерархия конструктивная и гетерархия по управлению - обеспечение взаимосвязи между уровнями анализа для уточнения информации, поступающей с младших уровней.
Кучуганов