В статье рассматриваются вопросы гибкости программировании для Cell Broadband Engine, совместно разработанной компаниями IBM, Sony и Toshiba. Это горячо обсуждаемая тема в сообществе программистов-многоядерщиков. Предполагается, что читатель уже располагает базовыми знаниями об архитектуре Cell/B.E. и о возможностях её производительности. Если же это ваша первая встреча с Cell/B.E., то, прежде чем продолжить чтение, рекомендуется обратиться к следующим статьям:
- "Introduction to the Cell Broadband Engine" (IBM, октябрь 2005 г.)
- "Programming high-performance applications on the Cell/B.E. processor, Part 1: Intro to Linux® on PlayStation 3" (developerWorks, январь 2007 г.).
- "Programming high-performance applications on the Cell/B.E. processor, Part 2: Program PlayStation 3 SPEs" (developerWorks, февраль 2007 г.).
- "Programming high-performance applications on the Cell/B.E. processor, Part 3: Meet the SPU" (developerWorks, февраль 2007 г.).
- "Programming high-performance applications on the Cell/B.E. processor, Part 4: Program the SPU for performance" (developerWorks, март 2007 г.).
- "A Programming Example: Large FFT on the CBE" (IBM, октябрь 2005 г.).
В нашей статье:
- Обсуждается применение существующих навыков программирования к процессору Cell/B.E.
- Предлагается три подхода к программированию на платформе Cell/B.E.
- Представляется имеющийся инструментарий, программное и аппаратное обеспечение
Использование существующих навыков
При разработке для Cell/B.E. можно использовать существующие навыки разработки, включая навыки программирования, навыки ИТ-администрирования и существующие навыки параллельного программирования. Кроме того, аппаратные средства на базе Cell/B.E. могут быть включены в существующую инфраструктуру, что облегчает администрирование решений на базе Cell/B.E. На рис. 1 показаны различные кросс-отраслевые системы на Cell/B.E., в которых работает одно и то же программное обеспечение для SPE.
Рис. 1. Кросс-отраслевые системы на Cell/B.E. с одинаковым программным обеспечением для SPE
Как можно видеть на Рис. 1, существует целый спектр платформ с Cell/B.E., полностью поддерживающих программы для Cell/B.E. Одна и та же SPE-программа работает в самом широком диапазоне от потребительских продуктов до коммерческих, корпоративных и высокопроизводительных вычислительных систем. Кроме того, такие системы поставляются многими производителями отрасли, что также демонстрирует кросс-отраслевую поддержу технологии Cell/B.E.
Для Cell/B.E. можно писать на таких стандартных языках программирования, как C, C++, FORTRAN и Java ™ , и использовать такие стандартные компиляторы и отладчики, как набор утилит GNU (GNU toolchain) и компиляторы IBM XL C/C++/FORTRAN. Поддерживаются и популярные средства разработки и IDE, включая популярные редакторы (vi, emacs), Eclipse IDE, а также средства разработки от партнеров: Gedae и RapidMind.
Cell/B.E. стандартно поддерживается такими операционными системами Linux, как Red Hat, Fedora и Yellow Dog Linux от Terra Soft Solutions, а также операционными системами реального времени от таких партнеров, как Wind River и Mentor Graphics.
И, наконец, можно использовать распространённые библиотеки и среды, в том числе IBM DaCS, ALF, DAV, FFT, BLAS, LAPACK, MASS, библиотеки для обработки изображений и генератор псевдослучайных чисел методом Монте-Карло. В конце статьи можно найти полный перечень инструментария, программного и аппаратного обеспечения, совместимого с Cell/B.E.
О методах программирования и о том, как они используются
Теперь второй пункт: какие есть методы программирования на Cell/B.E. и как их лучше использовать?
Как показано на рис. 2, подходы к программированию для Cell/B.E. отличаются гибкостью; их можно разделить на следующие три категории:
- Программирование во внутренних кодах
- Программирование со вспомогательными средствами
- Программирование с использованием средств разработки
Рис. 2. Поиск баланса между трудозатратами и управляемостью
Относительно этих методов нужно заметить следующее: по мере движения от программирования на внутренних кодах через программирование со вспомогательными средствами к методу с использованием средств разработки мы охватываем новые спектры возможностей. На одном полюсе, при использовании внутренних кодов, мы более детально управляем ресурсами Cell/B.E., но выполняем гораздо больший объём работы. На другом полюсе ресурсы контролируются хуже, но и трудозатраты гораздо меньше.
Эти три разных подхода не являются взаимоисключающими. По мере их использования становится ясно, что их функциональность перекрывается. В следующих разделах описываются преимущества каждого подхода, их ограничения и ситуации, в которых каждый из подходов более удобен. Производительность, которая может быть достигнута в каждом из подходов, зависит от уровня индивидуального мастерства программиста. В последнем разделе статьи перечисляется список инструментов от IBM, сторонних поставщиков и разработчиков открытого ПО, доступных для каждого метода.
Программирование во внутренних кодах
Подход с программированием во внутренних кодах подразумевает непосредственную работу с аппаратными ресурсами, встроенными средствами и перемещением данных и позволяет точно управлять работой приложения. Такая гибкость недоступна в других средствах разработки программ и многоядерных системах. Гибкость архитектуры Cell/B.E. дает разработчикам возможность решать, как распределять и использовать в своем приложении такие ресурсы, как, например, память.
Преимущества
У подхода с программированием во внутренних кодах имеются следующие преимущества:
- Обычно удается получить наивысшую, максимально оптимизированную производительность.
- Внутренние ресурсы используются наиболее оптимальным образом.
Ограничения
Для подхода с программированием во внутренних кодах есть и ограничивающие факторы, например:
- При использовании этого подхода большую часть работы по программированию вам придётся выполнять самостоятельно.
- Может потребоваться какое-то время для обучения, поскольку нужно изучить внутренние ресурсы, которые предстоит использовать.
Условия применения
Когда и где используется метод программирования во внутренних кодах?
- Встраиваемые приложения
- Системы в операциях реального времени
- Когда производительность является наиболее важным критерием и нет возможности достичь целей с помощью других подходов
- Любая ситуация, в которой на первом месте стоят ресурсы, производительность, пространство или стоимость
Программирование с использованием вспомогательных средств
Не все программисты хотят работать с аппаратными ресурсами напрямую, поэтому существует подход программирования, в котором используются библиотеки и среды программирования на Cell/B.E.
Преимущества
Использование вспомогательных средств дает следующие преимущества:
- Сокращение времени разработки по сравнению с работой во внутренних кодах
- Сохраняющаяся возможность использовать некоторые внутренние ресурсы
Ограничения
Метод с использованием вспомогательных средств имеет и некоторые ограничения, в том числе:
- Выигрыш в производительности обычно меньше, чем в подходе с использованием внутренних ресурсов
- Свои ограничения накладывают выбранные средства и библиотеки
Условия применения
Когда обычно используется подход с применением вспомогательных средств?
- Для подавляющего большинства приложений практически в любых ситуациях
- Это типичный подход к программированию, привычный для многих
Программирование с использованием средств разработки
Как подход самого верхнего уровня, подход с использованием средств разработки дает наибольшее абстрагирование от аппаратных ресурсов. Этот подход предусматривает работу с инструментами и средами разработки.
Преимущества
Подход с использованием средств разработки дает следующие преимущества:
- Значительно уменьшаются затраты времени на разработку
- Легче достигается независимость от платформы, поскольку многие инструменты уже содержат эту возможность
Ограничения
Подход с использованием средств разработки имеет и некоторые ограничения, в том числе:
- Выигрыш в производительности может быть еще меньше, чем в случае других подходов
- Средства CASE предопределяют возможности отладки и выбор поддерживаемых платформ
Условия применения
Когда обычно используется подход с применением средств разработки?
- Для приложений, которые должны быть одновременно развернуты на нескольких платформах и аппаратных архитектурах
- Если разработчик больше привык работать с инструментами верхнего уровня, чем непосредственно с аппаратными ресурсами
Выбор программного обеспечения и инструментов для поддержки подходов
На рис. 3 изображены различные программные и аппаратные средства, а также инструменты, имеющиеся для Cell/B.E. для всех трех методов программирования.
Рис. 3. Программное обеспечение и инструменты для Cell/B.E.
(Самую свежую версию этой схемы можно найти в формате PDF в разделе Загрузки этой статьи.)
Предложения от IBM отмечены жирным шрифтом. Предложения от сторонних поставщиков обозначены полужирным курсивом. Предложения от сообщества свободного ПО обозначены обычным текстом. В самых нижних разделах схемы показаны аппаратные средства и операционные системы. Аппаратные средства Cell/B.E.—это зрелые, хорошо разработанные средства в разнообразных конструктивных исполнениях. Многие операционные системы, на которых отлично работает Cell/B.E., являются зрелыми, стабильными, хорошо освоенными платформами.
Над самыми нижними разделами схемы показаны имеющиеся программные средства и инструменты для программирования во внутренних кодах, затем для программирования со вспомогательными средствами, и затем сред разработки или прикладных решений (область в левой части схемы). Эта последовательность повторяется в столбцах Средства разработки и Анализ производительности. Средства в нижней части этих столбцов больше ориентированы на использование внутренних кодов, и дальше они продвигаются через область со вспомогательными средствами к средам и решениям для разработки.
Еще одно важное замечание по этой схеме: не только IBM поддерживает экосистему Cell/B.E., существует также мощное и разнообразное (и растущее!) сообщество поддержки Cell Broadband Engine Architecture™; это сообщество состоит из сторонних и open source-разработчиков, как на коммерческой, так и на общественной основе.
В этой статье мы рассмотрели, как применить существующие навыки программирования для разработки для Cell/B.E., обсудили три подхода к программированию, и представили различные инструменты, имеющиеся для Cell/B.E. Итак, как теперь начать программировать для Cell/B.E.? Вот краткий список шагов:
Как начать программировать для Cell/B.E.
- Посетите центр ресурсов для Cell Broadband Engine на сайте IBM developerWorks и загрузите новейшую версию инструментария IBM SDK for Multicore Acceleration.
- Установите IBM SDK for Multicore Acceleration
- на компьютер с Linux — с помощью Руководства по установке SDK 3.0 .
- на компьютер с Windows® с помощью инструкций VMWare от Georgia Tech.
- Начните программировать для Cell/B.E. с помощью учебника по Cell/B.E. IDE и IBM Full System Simulator.
- Ознакомьтесь с форумом по Cell/B.E. на сайте developerWorks и задавайте там вопросы. Этот форум активно работает, это самый быстрый способ получить квалифицированные ответы.
- Приобретите подходящие аппаратные средства, содержащие Cell/B.E. Можно обратиться в IBM по поводу Cell Broadband Engine. Можно даже начать разработку на Sony Playstation 3.
Выражаем благодарность команде IBM/Cell/B.E., которая помогала в составлении этой статьи и ее проверке.
| Описание | Имя | Размер | Метод загрузки |
|---|---|---|---|
| PDF version of the tools chart, easier to read | sdktools091809.pdf | 94KB | HTTP |
Информация о методах загрузки Загрузить Adobe® Reader®
Научиться
- Оригинал статьи
Programmability, Part 1: Exploring different approaches to programming for Cell/B.E. platforms (EN).
- Используйте
RSS-канал для получения информации о новых статьях из этой серии. (Узнать больше об
RSS-каналах от developerWorks.)
- Посетите вики по обучению и подготовке для работы с Cell Broadband Engine (EN)..
- Узнайте больше о программировании для Cell/B.E. из серии статей от developerWorks:
- "Программирование высокопроизводительных приложений на процессоре Cell BE " (EN)
- "PS3 fab-to-lab" (EN)
- "The little broadband engine that could" (EN)
- В разделе документации по Cell Broadband Engine
технической библиотеки IBM Semiconductor Solutions Technical Library имеется множество руководств, спецификаций и т.д., которые можно загрузить. (EN)
- Подпишитесь на бюллетень developerWorks
и получайте еженедельно последние новости из мира разработчиков и информацию о событиях, связанных с Cell/B.E. Для получения новостей по Cell/B.E. отметьте пункт
Power Architecture
® при оформлении подписки. (EN)
Получить продукты и технологии
- Получите копию
IBM SDK for Multicore Acceleration 3.0
или просмотрите библиотеку документации по Cell/B.E.. (EN)
- Найдите статьи, форумы, файлы для загрузки и другие ресурсы по Cell/B.E. на сайте IBM developerWorks
центр ресурсов по Cell Broadband Engine
—исчерпывающий источник по всем вопросам, относящимся к Cell/B.E. (EN)
- Свяжитесь с IBM по поводу
заказных решений на основе Cell/B.E. или другого процессора.
-
Изучите дополнительные передовые инструменты для Cell/B.E на
IBM alphaWorks. (EN)
Обсудить
- Примите участие в обсуждении материала на форуме.
- Просмотрите
—форум по архитектуре Cell Broadband Engine, на котором можно получить ответы на технические вопросы по этому процессору. Самые интересные проблемы и ответы из форумов периодически собираются и освещаются в блоге
"Forum watch". (EN)
- В блоге Cell Broadband Engine/Power Architecture можно найти
новости, загрузки, учебные ресурсы и уведомления о событиях, относящиеся к Cell/B.E. и другим технологиям Power Architecture. Также посетите популярный блог "
Forum
watch"—(обзор вопросов и ответов), технологические новости FixIt и краткие введения в технологию
Infobomb
. (EN)
Анита Бейтман (Anita Bateman) — старший ИТ-архитектор в корпорации IBM. Она занимается разработкой и архитектурой программного обеспечения с 1998 года и является сертифицированным архитектором IBM и в The Open Group. Анита зарегистрировала и опубликовала несколько патентов. У нее степень магистра компьютерных наук от Техасского университета в Остине и степень бакалавра компьютерных наук от Hope College в Холланде, штат Мичиган. В настоящее время Анита — архитектор решений для Cell Broadband Engine и работает с партнерами и клиентами над внедрением многоядерной технологии IBM и улучшением программируемости Cell/B.E.