 | Глава 18. Оптимизация приложений ALF
В данном разделе описаны пути оптимизации приложений ALF, в том числе:
- распределение данных для акселераторов;
- применение рабочих блоков многократного использования.
Распределение данных на акселераторах
Если условия функционирования приложения таковы, что ЦП должен управлять работой множества акселераторов, а схемы распределения данных достаточно сложны, как правило, более эффективным оказывается выполнять распределение данных и генерировать списки пересылки данных на акселераторах, а не на основном процессоре. Дополнительная информация об использовании этой возможности приведена в разделе «Распределение данных на акселераторах» на стр. 23.
Применение рабочих блоков многократного использования
Если на акселераторах выполняется большое количество экземпляров задания, а объем вычислений, требуемых при обработки каждого рабочего блока, невелик, среда исполнения ALF может оказаться перегруженной задачами перемещения рабочих блоков и связанных с ними данных между основной памятью и памятью акселераторов. В этом случае для повышения производительности приложения ALF можно применять рабочие блоки многократного использования в совокупности с распределением данных на акселераторах. Пример применения рабочих блоков многократного использования приведен в разделе «Пример реализации 2: Применение рабочих блоков многократного использования в сочетании с буферами контекста задания или параметра и контекста рабочих блоков» на стр. 132.
Что следует принимать во внимание при компоновке данных
Эффективное распределение и компоновка данных являются залогом высокой производительности приложения ALF. Ошибки в этих процессах могут сделать невозможным использование ALF или по крайней мере привести к снижению производительности. Распределение и компоновка данных сильно зависят от особенностей конструкции и реализации вычислительного ядра, поэтому обе задачи решаются в тесной связи друг с другом. При компоновке и распределении данных необходимо следующее:
- Выбирать корректный размер массивов данных для каждого рабочего блока. Часто локальная память акселератора ограничена. Если массивы данных не вмещаются в доступную память, может снизиться производительность. Например, если в приложении для платформы Cell BE размер входного буфера рабочего блока превышает 128 Кбайт, это может привести к невозможности использования двойной буферизации на сопроцессоре, что приведет к снижению производительности на 50%.
- Минимизировать число пересылок данных. Частые пересылки данных могут снизить производительность приложений, поэтому следует избавиться от ненужных операций пересылки.
- Упростить схемы пересылки данных. Хотя организация списков пересылки данных в ALF допускает высокую гибкость в сборе данных и компоновке результатов, лучше использовать как можно более простые схемы пересылки, например, последовательный доступ и пересылки больших массивов вместо маленьких.
- Избегать реорганизации данных, которая требует дополнительной работы. Лучше организовывать данные так, чтобы их можно было без преобразования использовать в алгоритме, чем писать дополнительный код, приводящий данные к нужному для использования формату.
- Учитывать ограничения в части выравнивания адресов на Cell BE.
 |
|  |