Ядерное партнерство : Часть 3.Преобразование портируемых приложений, собранных с помощью Gedae

Процесс переноса приложения от моделирования к DSP-процессорам и платформе Cell/B.E.

В этом исследовании в сжатой форме рассматривается переносимость приложений, разработанных в Gedae. Анализируется работа, требующаяся для переноса приложения от моделирования на ПК к реальной работе на DSP-плате (система AdapDev от Mercury Computer System) и на многоядерном процессоре Cell Broadband Engine™ (Cell/B.E.). В статье показывается, как учитывались особенности архитектуры при портировании приложения на каждую из систем, и описываются действия, необходимые для переноса приложения, а также производительность приложения на каждой системе.

Джеймс Стид, директор по разработке программного обеспечения, Gedae, Inc.

Джеймс Стид (James Steed) — один из основателей и руководитель разработок компании Gedae. До прихода в Gedae Стид работал с Gedae в Lockheed Martin, где отвечал главным образом за разработку встраиваемой библиотеки функций, включая тестирование и создание базы данных и поисковой утилиты. Со времени основания Gedae Стид отвечает за разработку новой продукции. Его наиболее известным проектом является разработка нового языка RTL для Gedae. Стид имеет учёную степень в области компьютерных наук от Корнелльского университета и степень магистра компьютерных наук от университета штата Северная Каролина.



Уильям Лундгрен, главный научный консультант, Gedae, Inc.

Уильям Лундгрен (William Lundgren) стал соучредителем Gedae, Inc., в 2001 году, и является её президентом и генеральным директором. Лундгрен начинал свою профессиональную карьеру в Corning Glass Works в качестве физика в отделе разработки новой продукции. Покинув Corning, майор Лундгрен работал в Технологическом институте ВВС США и Исследовательской лаборатории ВВС США, где разрабатывал новые технологии обработки речи и звука. Лундгрен перешел в RCA Advance Technology Laboratories (впоследствии Lockheed Martin), где проработал 16 лет, возглавляя разработку Gedae и являясь руководителем восьми различных проектов. Он имеет степень бакалавра по физике в Политехническом институте Ренселлаера и степени бакалавра и магистра в области электротехники в Технологическом институте ВВС США. Лундгрен является соискателем степени доктора в области электротехники в университете штата Пенсильвания.



Керри Барнс, главный научный консультант, Gedae, Inc.

Один из основателей Gedae, Inc., Керри Барнс работал ведущим инженером в подразделении Advance Technologies Laboratories компании Lockheed Martin. В ATL Барнс отвечал за программные и аппаратные средства систем обработки сигналов, проектирование однокристальных процессоров для БПФ, проектирование и реализацию прямого цифрового синтезатора частот, отображение алгоритмов на аппаратные средства для параллельных вычислений, реализацию модуляции и демодуляции OQPSK на Thinking Machine CM2, а также разработку различных программных средств и приложений. Барнс имеет учёную степень в области электротехники от Университета Лихай (Lehigh University) и степень магистра в области вычислительной техники и информатики от университета штата Пенсильвания.



22.09.2009

Введение

В статье демонстрируется степень портируемости приложения, разработанного с использованием технологии Gedae. Для примера берется приложение, работающее в режиме моделирования на ПК, преобразуется в работающее приложение для системы Mercury Computer System AdapDev, а затем преобразуется в работающее приложение для системы с Cell/B.E.

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

Структура статьи:

  • Представление базового приложения
  • Демонстрация моделирования
  • Освещение многопроцессорной и многоядерной реализаций

Описание приложения

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

Рисунок 1. Алгоритм слежения за поездом, идущим по пути, с четырьмя микрофонами в качестве датчиков
Алгоритм слежения за поездом, идущим по пути, с четырьмя микрофонами в качестве датчиков

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

Рисунок 2. Точки корреляции четырех аудиоканалов образуют пятно высокой интенсивности
Точки корреляции четырех аудиоканалов образуют пятно высокой интенсивности

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

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

На рисунке 3 показывается, как приложение выглядит в Gedae.

Рисунок 3. Как приложение выглядит в Gedae
Как приложение выглядит в Gedae

Обратите внимание, что одна и та же блок-схема была использована в реализациях для компьютерной модели, четырехпроцессорной DSP-платы и процессора Cell/B.E.


Описание моделирования

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

Трассировочная таблица Gedae

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

Трассировочная таблица Gedae дает информацию, нужную для оптимизации производительности. Итоговая хронология для каждого процессора позволяет принять решения по распределению нагрузки, в то время как хронология для каждого примитива позволяет определить медленные примитивы или примитивы, для которых требуется увеличить детальность. Способность менять масштаб и прокручивать шкалу времени, а также сворачивать и перераспределять местоположение иерархических блоков в трассировочной таблице упрощает навигацию по трассировочной таблице для больших блок-схем. Хронология дает информацию, необходимую для выбора метода коммуникации, который наилучшим образом удовлетворяет требованиям конкретного приложения по пропускной способности и задержкам. После оптимизации производительности можно запустить блок-схему повторно и измерить улучшения.

Рисунок 4. Моделирование, включая визуализацию 3-мерной модели среды
Моделирование, включая визуализацию 3-мерной модели среды

На основе Gedae-моделирования для приложения-примера были проведены эксперименты с многопроцессорным вариантом приложения, чтобы подготовиться к его переносу на аппаратные средства, обрабатывающее данные в реальном времени. Один раз написанная программа Gedae-приложения не требует изменений в коде для того, чтобы разделить и распределить ее на несколько процессоров. Для приложения-примера было использовано несколько распределений по виртуальным процессорам в различных конфигурациях. Результаты были проанализированы в трассировочной таблице Gedae.


Реализация для многопроцессорного DSP

Чтобы перейти в приложении-примере к использованию реальных данных, приложение было портировано на систему Mercury Computer System AdapDev. Система MCS AdapDev предоставляет хост-компьютер с Intel® Pentium и две четырехпроцессорные DSP-платы, где каждый DSP представляет собой 500-МГц процессор AltiVec (см. рисунок 5).

  • Компьютер для разработки с Pentium III: 1.26 ГГц; 1 ГБ SDRAM
  • Четырехъядерный PowerPC® 500 МГц (MCP7410): набор команд AltiVec; кэш L2 2 МБ; 256 МБ SDRAM; контроллер DMA
  • Коммутационная архитектура RACE++
Рисунок 5. Система Mercury Computer System AdapDev
Система Mercury Computer System AdapDev

Были собраны физические компоненты для камеры, шарнирной подвески, микрофонов и аудио-цифрового преобразователя (audio digital converter, ADC). В приложение были внесены изменения для удаления искусственного источника звука и визуализации сцены, которые были замещены интерфейсами для ADC (через PCI), шарнирной подвески (через последовательный порт) и камеры (через USB).

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

Разбиение и передача

Одной из наиболее сильных сторон Gedae является простота разбиения и распределения приложения для работы на нескольких процессорных элементах (не говоря уже о переразбиении и перераспределении). Когда приложение представлено в виде блок-схемы, схема легко разбивается на разделы, а затем каждый из этих разделов распределяется по аппаратным средствам. Это разделение блок-схемы предоставляет компилятору Gedae нужную информацию, на основе которой строится и подгоняется к заданному распределению план потоков приложения.

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

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

В Gedae могут использоваться многие методы передачи: от DMA до разделяемой памяти и протоколов, привязанных к конкретному процессору, а также с помощью таблицы передачи. Методы передачи для каждого соединения выбираются легко. Они полностью параметризованы, что дает возможность точно задать размеры буферов и другие параметры, поэтому может быть использована наиболее эффективная передача.

Рисунок 6. Схема разбиения и распределения
Схема разбиения и распределения

Обратите внимание, что это приложение было распределено по нескольким DSP-процессорам без изменения программы.

Коммуникационные протоколы могут быть настроены с помощью таблицы передачи путем выбора передач с прямым доступом по расписанию (эквивалентно DMA) и удаления блокирования передач между компьютером и DSP.

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


Обзор многоядерного варианта

Читатель, вероятно, уже знаком с архитектурой Cell/B.E., поэтому вот лишь небольшое напоминание:

  • Процессорный элемент PPE (Power Processing Element)
  • Восемь синергических процессорных элементов SPE (Synergistic Processing Element): набор команд VMX SIMD; механизм DMA; 256 КБ локальной памяти (LS)
  • Системная память
  • Шина соединения элементов (Element interconnect bus, EIB): более 200 ГБ/сек
Рисунок 7. Архитектура Cell/B.E.
Архитектура Cell/B.E.

Для иллюстрации поддержки платформы Cell/B.E. данное приложение было перенесено на Sony Playstation 3 (PS3). Процессор Cell/B.E. на Sony PS3 предоставляет двухпоточное ядро PPE, а также 6 действующих SPE. Процессоры SPE — это очень эффективные векторные процессоры, но с жёсткими ограничениями памяти, всего с 256 КБ локальной памяти и без кэша. Программирование системы с Cell/B.E. вручную требует тщательного управления и планирования памяти и перемещения данных между процессорами SPE.

Gedae самостоятельно справляется с задачами управления памяти и перемещения данных. Автоматизированная реализация этих задач упрощает разработку для системы с Cell/B.E. После изменения приложения таким образом, чтобы можно было использовать ADC через USB (в PS3 нет разъема PCI), это приложение может быть легко перенесено. Процесс его оптимизации для многоядерной архитектуры должен занять около двух часов.

Для оптимизации приложения та его часть, которая относится к обработке сигналов и требует много вычислений, разбивается для шести SPE. При этом учитывается объем памяти, занимаемый программой и данными, и с помощью диалога планирования параметров анализируется размер потоков, которые будут созданы для каждого раздела. Для уменьшения размера занимаемой памяти используются возможности автоматизированного разбиения циклов, что позволяет обрабатывать набор векторов аудиосигналов независимо на каждом SPE, а не одновременно. Кроме того, выясняется, что примитив, выполняющий суммирование матрицы по столбцам, превышает предельный размер памяти потока. Это исправляется заменой примитива на другой, интегрирующий последовательность строчных векторов.

Трассировочная таблица Gedae используется для анализа производительности. Во время этого процесса может выясниться, что какой-либо примитив работает медленно, и его можно перепрограммировать так, чтобы использовался единичный шаг. В зависимости от загрузки процессоров можно также изменить распределение работы. Через два часа окончательной оптимизации четыре процессора SPE используются для выполнения большей части первичной обработки (один SPE на аудиоканал), включая полосовую фильтрацию частотного спектра. Два других SPE используются для комбинирования данных при расчете корреляции для формирования пятна. PPE реализует алгоритм обнаружения и взаимодействия с устройствами ввода/вывода. В такой реализации приложение может обрабатывать на системе с Cell/B.E. 15 кадров в секунду, что обеспечивает гораздо более плавное отслеживание поезда.


Заключение

В начале этой статьи было рассмотрено приложение, требующее большого объёма вычислений и портированное на следующие системы:

СистемаПроцессорыДатчикиВыводИнтерфейс пользователя
Моделирование на ПК1Файл с данными 4-х записанных каналовТочечная диаграммаВизуализированная сцена
Многопроцессорная DSP-плата (MCS AdapDev)4*500МГц PowerPC AltiVec
1 Pentium
Плата ICS 610 ADC PCI, 4 микрофонаПоворотный модуль Directed Perception D46-17Изображение с USB-камеры Matrix Vision BlueFOX, показываемое с помощью видео для Gedae
Многоядерная система (PS3-Cell/B.E.)1 PPE, 6 SPEUSB-устройство M-Audio Quattro, 4 микрофонаПоворотный модуль Directed Perception D46-17Изображение с USB-камеры Matrix Vision BlueFOX, показываемое с помощью видео для Gedae

Детализация затрат времени на решение этих задач:

  • Моделирование (4 недели на программирование, не дает изменения в производительности);
  • DSP (6 часов на программирование, прирост до 3 Гц);
  • PS3 (4 часа на программирование, прирост до 15 Гц);

На основании этого примера можно прийти к таким заключениям:

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

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=430019
ArticleTitle=Ядерное партнерство : Часть 3.Преобразование портируемых приложений, собранных с помощью Gedae
publish-date=09222009