 | Уровень сложности: средний Джеймс Стид, директор по разработке программного обеспечения, Gedae, Inc. Уильям Лундгрен, главный научный консультант, Gedae, Inc. Керри Барнс, главный научный консультант, Gedae, Inc.
22.09.2009 В этом исследовании в сжатой форме рассматривается переносимость приложений, разработанных в Gedae. Анализируется работа, требующаяся для переноса приложения от моделирования на ПК к реальной работе на DSP-плате (система AdapDev от Mercury Computer System) и на многоядерном процессоре Cell Broadband Engine™ (Cell/B.E.). В статье показывается, как учитывались особенности архитектуры при портировании приложения на каждую из систем, и описываются действия, необходимые для переноса приложения, а также производительность приложения на каждой системе.
Введение
В статье демонстрируется степень портируемости приложения, разработанного с использованием технологии Gedae. Для примера берется приложение, работающее в режиме моделирования на ПК, преобразуется в работающее приложение для системы Mercury Computer System AdapDev, а затем преобразуется в работающее приложение для системы с Cell/B.E.
Подробно описывается работа, необходимая для выполнения каждого шага, при этом особое внимание уделяется анализу архитектуры, необходимому при портировании. Также даётся представление о необходимых действиях, требующихся для переноса приложения, и о производительности приложения на каждой системе.
Структура статьи:
- Представление базового приложения
- Демонстрация моделирования
- Освещение многопроцессорной и многоядерной реализаций
Описание приложения
В приложении, взятом в качестве примера, осуществляется слежение за моделью поезда, движущейся по круговому пути. Приложение на основании входных аудиоданных, получаемых от четырех микрофонов, размещенных вокруг пути, определяет местоположение поезда в звуковом поле. Определив местоположение, приложение поворачивает и наклоняет камеру так, чтобы она была нацелена на локомотив поезда. Иллюстрация этой системы приведена на рисунке 1.
Рисунок 1. Алгоритм слежения за поездом, идущим по пути, с четырьмя микрофонами в качестве датчиков
В основе алгоритма лежит радарная технология. Формирователь луча коррелирует сигналы от линейной решетки радарных датчиков, опознавая цель по лучу с высоким коэффициентом корреляции. В данном приложении решетка круговая, поэтому места с высокой интенсивностью коэффициента корреляции четырех каналов формируют пятно, как показано на рисунке 2.
Рисунок 2. Точки корреляции четырех аудиоканалов образуют пятно высокой интенсивности
После того как эта звуковая карта построена, алгоритм обнаружения опознает пик высокой интенсивности, соответствующий поезду. Вычисляются углы поворота и наклона для позиционирования камеры.
Поскольку приложение должно работать и в шумной среде, используются специальные подходы для уменьшения вибрации и обеспечения плавного слежения. Сигнал из входных каналов подвергается низкочастотной фильтрации, чтобы убрать из него частоты, выходящие за требуемую полосу. В алгоритме обнаружения опознаются и проверяются отдельные пики. Для слежения за скоростью и направлением поезда используется обратная связь, чтобы исключить ложные пики в корреляционных данных.
На рисунке 3 показывается, как приложение выглядит в Gedae.
Рисунок 3. Как приложение выглядит в Gedae
Обратите внимание, что одна и та же блок-схема была использована в реализациях для компьютерной модели, четырехпроцессорной DSP-платы и процессора Cell/B.E.
Описание моделирования
Приложение сначала было разработано для моделирования. Среда с поездом и камерами моделировалась, а четыре канала аудиоданных для микрофонной линейки считывались из файлов. Для отображения результатов моделирования выводилась трехмерная визуализация сцены с точки зрения камеры, как показано на рис. 4.
 |
Трассировочная таблица Gedae
Gedae с низкими издержками собирает трассировочную информацию в кольцевом буфере, который заводится для каждого процессора. Точная синхронизация часов между процессорами и наносекундное разрешение позволяют правильно определить причинно-следственные связи между процессорами, чтобы быстро решить проблемы блокировки процессоров.
Трассировочная таблица Gedae дает информацию, нужную для оптимизации производительности. Итоговая хронология для каждого процессора позволяет принять решения по распределению нагрузки, в то время как хронология для каждого примитива позволяет определить медленные примитивы или примитивы, для которых требуется увеличить детальность. Способность менять масштаб и прокручивать шкалу времени, а также сворачивать и перераспределять местоположение иерархических блоков в трассировочной таблице упрощает навигацию по трассировочной таблице для больших блок-схем. Хронология дает информацию, необходимую для выбора метода коммуникации, который наилучшим образом удовлетворяет требованиям конкретного приложения по пропускной способности и задержкам. После оптимизации производительности можно запустить блок-схему повторно и измерить улучшения.
|
|
Рисунок 4. Моделирование, включая визуализацию 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
Были собраны физические компоненты для камеры, шарнирной подвески, микрофонов и аудио-цифрового преобразователя (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. данное приложение было перенесено на 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 SPE | USB-устройство M-Audio Quattro, 4 микрофона | Поворотный модуль Directed Perception D46-17 | Изображение с USB-камеры Matrix Vision BlueFOX, показываемое с помощью видео для Gedae |
|---|
Детализация затрат времени на решение этих задач:
- Моделирование (4 недели на программирование, не дает изменения в производительности);
- DSP (6 часов на программирование, прирост до 3 Гц);
- PS3 (4 часа на программирование, прирост до 15 Гц);
На основании этого примера можно прийти к таким заключениям:
- Gedae помогает легко перенести приложение на новые аппаратные средства.
- Изменения в конкретной реализации производятся автоматически и с помощью простых графических интерфейсов, а не путем внесения изменений в программу.
- При минимальных усилиях можно достичь относительно высокого прироста производительности.
Ресурсы Научиться
- Оригинал статьи
Core partners, Part 3: Transforming Gedae-built portable apps(EN).
- Используйте RSS-канал для получения информации о новых статьях из этой серии. (Узнать больше об
RSS-каналах от developerWorks.)
- Скачайте технический обзор
"Переносимость Gedae: от моделирования до DSP и Cell/B.E.", на основании которого написана эта статья. (EN)
- Эта статья является частью неофициальной серии "Ядерное партнерство":
- Первая статья из этой серии
"Core partners,
Part 1: Build high-performance apps for multicore processors"
(developerWorks, май 2007 г.) посвящена платформе разработки RapidMind, предоставляющей простой механизм, позволяющий на основе единого программного кода разрабатывать переносимые высокопроизводительные приложения для многоядерных процессоров.
- Вторая статья из этой серии — "Using DDT to clean up Cell/B.E. app bugs"
(developerWorks, февраль 2008 г.) — рассказывает, как использовать инструмент Distributed Debugging Tool (DDT) фирмы Allinea Software для отладки законченных приложений для Cell/B.E., в том числе приложений с несколькими потоками в одном процессоре Cell/B.E. и с кластерами из процессоров Cell/B.E.
- Прочитайте статьи из серии, посвященной портированию, чтобы узнать, как эффективно портировать готовое финансовое приложение на платформу Cell/B.E.:(EN)
- "Processor porting strategies"
(developerWorks, август 2007 г.).
- "Original code analysis"
(август 2007 г.). (EN)
- "Initial performance results"
(сентябрь 2007 г.). (EN)
- "Mersenne-Twister random number generator"
(сентябрь 2007 г.). (EN)
- "Mixed-precision workloads"
(октябрь 2007 г.). (EN)
- "Tying it all together"
(октябрь 2007 г.). (EN)
- "Getting the most performance"
(ноябрь 2007 г.). (EN)
-
"Porting practices: Compute-intensive applications"
(developerWorks, июнь 2007 г.): как методики портирования могут помочь при переносе приложения с интенсивными вычислениями на архитектуру Cell/B.E. (EN)
-
"Minimize recoding impact, Part 1: How to make an SPE and existing code work together"
(developerWorks, сентябрь 2007 г.): интегрирование функциональности Cell/B.E. в существующие проекты. Статья
"Minimize
recoding impact, Part 2: Removing obstacles to speedy performance"
(октябрь 2007 г.) показывает, как исключить препятствия для повышения производительности при интегрировании функциональности Cell/B.E. в существующие проекты. (EN)
- Чтобы больше узнать о программировании на Cell/B.E., познакомьтесь со следующими сериями статей на developerWorks:
- Множество руководств, спецификаций и других материалов можно загрузить из раздела документации по Cell Broadband Engine
технической библиотеки IBM Semiconductor Solutions. (EN)
- Подпишитесь на
бюллетень developerWorks
и получайте еженедельно последние новости из мира разработчиков и информацию о событиях, связанных с Cell/B.E. Для получения новостей по Cell/B.E. отметьте пункт Power Architecture® при оформлении подписки. (EN)
- В ресурсе на основе блогов
Cell Broadband Engine/Power Architecture notebook
можно найти
новости,
обзор интересных вопросов и актуальных тем "Forum watch"
и заметки
"Infobomb"
— краткие, конкретные, нацеленные на решение конкретных задач введения в технологию, почерпнутые из документации Cell/B.E. (EN)
Получить продукты и технологии
Обсудить
Об авторах  | |  | Джеймс Стид (James Steed) — один из основателей и руководитель разработок компании Gedae. До прихода в Gedae Стид работал с Gedae в Lockheed Martin, где отвечал главным образом за разработку встраиваемой библиотеки функций, включая тестирование и создание базы данных и поисковой утилиты. Со времени основания Gedae Стид отвечает за разработку новой продукции. Его наиболее известным проектом является разработка нового языка RTL для Gedae. Стид имеет учёную степень в области компьютерных наук от Корнелльского университета и степень магистра компьютерных наук от университета штата Северная Каролина. |
 | |  | Уильям Лундгрен (William Lundgren) стал соучредителем Gedae, Inc., в 2001 году, и является её президентом и генеральным директором. Лундгрен начинал свою профессиональную карьеру в Corning Glass Works в качестве физика в отделе разработки новой продукции. Покинув Corning, майор Лундгрен работал в Технологическом институте ВВС США и Исследовательской лаборатории ВВС США, где разрабатывал новые технологии обработки речи и звука. Лундгрен перешел в RCA Advance Technology Laboratories (впоследствии Lockheed Martin), где проработал 16 лет, возглавляя разработку Gedae и являясь руководителем восьми различных проектов. Он имеет степень бакалавра по физике в Политехническом институте Ренселлаера и степени бакалавра и магистра в области электротехники в Технологическом институте ВВС США. Лундгрен является соискателем степени доктора в области электротехники в университете штата Пенсильвания. |
 | |  | Один из основателей Gedae, Inc., Керри Барнс работал ведущим инженером в подразделении Advance Technologies Laboratories компании Lockheed Martin. В ATL Барнс отвечал за программные и аппаратные средства систем обработки сигналов, проектирование однокристальных процессоров для БПФ, проектирование и реализацию прямого цифрового синтезатора частот, отображение алгоритмов на аппаратные средства для параллельных вычислений, реализацию модуляции и демодуляции OQPSK на Thinking Machine CM2, а также разработку различных программных средств и приложений. Барнс имеет учёную степень в области электротехники от Университета Лихай (Lehigh University) и степень магистра в области вычислительной техники и информатики от университета штата Пенсильвания. |
Выскажите мнение об этой странице
|  |