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

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

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

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

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

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

Обсудить


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

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


Глава 9. Использование рабочих блоков и порядок вызовов функций для экземпляра задания, обрабатываемого на акселераторе

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

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

  1. Инициализация экземпляра задания (выполняется средой исполнения ALF)
  2. Если задание имеет контекст, то вызов функции alf_accel_task_context_setup. Среда исполнения вызывает данную функцию после того как в акселератор были загружены первоначальные данные контекста задания, но до начала обработки рабочих блоков.
  3. Для каждого рабочего блока (k):
    1. Если имеются контексты, ожидающие объединения, то переход к шагу 4.
    2. Для каждой итерации рабочего блока многократного использования i < N (общее число итераций)
      1. alf_accel_input_list_prepare(WB(k), i, N): функция вызывается только если задание требует распределения данных для акселератора.
      2. alf_accel_comp_kernel(WB(k), i, N): вычислительное ядро вызывается всегда.
      3. alf_accel_output_list_prepare(WB(k), i, N): функция вызывается только если задание требует распределения данных для акселератора.
  4. Если контекст другого невыгруженного экземпляра задания должен быть объединен с текущим экземпляром, вызывается функция alf_accel_task_context_merge.
    1. Если есть рабочие блоки, ожидающие обработки, то переход к шагу 3.
  5. Запись контекста задания.
  6. Выгрузка образа или ожидание следующего принятия к исполнению.
    1. Если создан новый экземпляр задания, переход к шагу 2.

Порядок вызова трех функций на шаге 3 определяется следующими правилами:

  • Для любого рабочего блока однократного использования WB(k) гарантируется следующий порядок вызова функций:
    1. alf_accel_input_list_prepare(WB(k))
    2. alf_accel_comp_kernel(WB(k))
    3. alf_accel_output_list_prepare(WB(k))
  • Для двух рабочих блоков однократного использования, назначенных одному экземпляру задания в порядке WB(k) и WB(k+1), ALF гарантирует исполнение лишь следующих правил вызова:
    • alf_accel_input_list_prepare(WB(k)) вызывается до alf_accel_input_list_prepare(WB(k+1))
    • alf_accel_comp_kernel(WB(k)) вызывается до alf_accel_comp_kernel(WB(k+1))
    • alf_accel_output_list_prepare(WB(k)) вызывается до alf_accel_output_list_prepare(WB(k+1))
  • Рабочий блок многократного использования WB(k, N) рассматривается как N рабочих блоков однократного использования, назначенных одному экземпляру задания в порядке увеличения индекса итерации WB(k, 0), WB(k, 1), ..., WB(k, N–1). Единственная разница заключается в том, что все эти рабочие блоки используют один и тот же буфер параметров и контекста. В остальном порядок вызова функций определяется двумя вышеприведенными правилами. См. главу 10, «Изменение буфера параметров и контекста для рабочих блоков многократного использования», стр. 33.


В начало



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