IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  Open source | Linux  >

Инфраструктура библиотек ускоренных вычислений для Cell Broadband Engine: Часть 3. Программирование ALF для Cell BE

Software Development Kit for Multicore Acceleration (Инструментарий разработчика для ускоренных многоядерных вычислений)

developerWorks
На предыдущую страницуСтраница 8 из 10 На предыдущую страницу

Опции документа

Обсудить


Выскажите мнение об этом учебном пособии

Помогите нам улучшить содержание


Глава 19. Ограничения платформы Cell BE, накладываемые на реализацию ALF

В данном разделе описаны ограничения, действующие при программировании ALF для Cell BE.

Ограничения памяти акселератора-SPE

Локальная память акселератора-SPE имеет объем 256 Кбайт, в ней хранятся и код и данные. Механизмов виртуализации и защиты памяти не предусмотрено. На риз. 10 приведена типичная карта распределения памяти для программы SPU. Выше глобальной секции данных помещен системный стек. Стек растет от верхнего адреса к нижним до тех пор, пока не достигнет глобальной секции данных. Особенности компиляторов используемых языков программирования, а также средств компоновки не позволяют определить границы фактического использования стека в ходе разработки и загрузки приложения. Если стек требует больше памяти, чем было выделено, система не сгенерирует исключения по переполнению стека (если только это не было предусмотрено в момент сборки) — результаты работы программы будут не определены. Это может быть ошибка шины или выполнение недопустимой команды. При переполнении стека программа SPU выгружается, и основной процессор получает соответствующее сообщение.

ALF отводит для размещения буферов рабочих блоков участки памяти, расположенные непосредственно над стеком, как показано на рис. 11 на стр. 54. Это выполняется посредством перемещения указателя стека (или помещению в стек большого объема данных, что приводит к тому же результату). Чем больше буфер, тем лучше ALF может оптимизировать производительность задания благодаря использованию таких методов, как двойная буферизация. В то же время следует разрешить ALF выделять как можно больше памяти для системного стека. Если размер стека слишком мал, может случиться его переполнение, что приведет к искажению результатов вычислений или ошибке шины.


Рис. 10. Карта локальной памяти SPU для типичного приложения Cell BE
Рис. 10. Карта локальной памяти SPU для типичного приложения Cell BE

Рис. 11. Карта локальной памяти SPU для приложения ALF
Рис. 11. Карта локальной памяти SPU для приложения ALF


В начало


Ограничения списков пересылки данных

Информация о пересылке данных используется для описания пяти типов операций пересылки данных для одного рабочего блока (тип определяется параметром ALF_BUF_TYPE_T). Реализация ALF для Cell BE имеет следующие внутренние ограничения:

  1. Информация о пересылке данных для одного рабочего блока может включать до восьми списков пересылки данных для каждого типа пересылки, определенного ALF_BUF_TYPE_T. Ограничение для программиста состоит в том, что функцию alf_wb_dtl_begin для каждого типа ALF_BUF_TYPE_T для каждого рабочего блока можно вызывать не более 8 раз. В этом случае возвращается код ошибки ALF_ERR_NOBUFS. Из-за ограничений 2, 3 и 4 возможно, что предел числа вызовов может быть достигнут и ранее.
  2. Число элементов списка пересылки данных не может превышать 2048. Если это ограничение достигнуто, то очередной вызов функции добавления нового элемента alf_wb_dtl_entry_add автоматически создает новый список пересылки данных того же типа. При этом для списка по-прежнему действительно ограничение 1.
  3. Каждый элемент может описывать до 16 Кбайт данных, пересылаемых непрерывными блоками между основной памятью и памятью акселератора. Вызов alf_wb_dtl_entry_add автоматически разбивает элементы, соответствующие большему, чем 16 Кбайт, размеру, на несколько элементов. В данном случае по-прежнему действительны ограничения 1 и 2.
  4. Старшие 32 разряда эффективного адреса для всех элементов одного списка пересылки данных неизменны. Это означает, что если элемент списка указывает на данные, пересекающие границу в 4 Гбайт, он должен быть разделен и помещен в разные списки пересылки данных. Кроме того, следующие друг за другом элементы с различающимися старшими 32 разрядами адреса должны быть помещены в различные списки. Функция alf_wb_dtl_entry_add автоматически создает новый список пересылки данных в обоих вышеописанных случаях. При этом по-прежнему применимы ограничения 1, 2 и 3.
  5. Локальная область хранения, описываемая каждым элементом внутри одного и того же списка пересылки данных, должна быть непрерывна. Для адресации в локальном буфере при вызове создающей новый список функции alf_wb_dtl_begin можно использовать параметр смещения локального буфера «offset_to_accel_buf».
  6. Размер подлежащего передаче массива и младшие 32 разряда эффективного адреса для каждого элемента пересылки данных должны быть выровнены по 16 байтам. Функция alf_wb_dtl_entry_add НЕ обеспечивает автоматического выравнивания параметров. В случае если адрес не выровнен, возвращается ошибка ALF_ERR_INVAL. То же ограничение действительно для параметра offset_to_accel_buf функции alf_wb_dtl_begin.


В начало



На предыдущую страницуСтраница 8 из 10 На предыдущую страницу
    IBM в России Конфиденциальность Контакты