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

developerWorks Россия  >  Linux  >

Утилиты Cell/B.E. SDK 3.0: Часть 1. Использование средств измерения производительности

Изучаем практический пример использования средств измерения производительности, входящих в состав SDK 3.0

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

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

Обсудить


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

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


Сбор и обработка данных профилирования

Теперь, когда имеется правильно настроенное дерево проекта и успешно скомпилированная программа, все готово к сбору и обработке данных профилирования.

Шаг 1. Cбор данных при помощи CPC

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

cpc --cpus all --time 5s --events C

для измерения количества тактов и инструкций ветвления двух аппаратных потоков для всех процессов на всех процессорах в течение 5 секунд. Вы должны немедленно увидеть статистику счетчиков.

Теперь, когда мы убедились в том, что CPC работает правильно, соберем данные счетчиков для программы FFT16M. В следующем примере в первом наборе событий регистрируются соответствующие инструкции PPC, во втором наборе событий регистрируются ошибки загрузки кэша L1, выдача записывается в формате XML (пригодном для Сounter Analyzer) в файл fft_cpc.pmf.

cd ~/FFT16M
cpc --events C,2100,2119 --cpus all ---xml fft_cpc.pmf ./ppu/fft 40 1

После сбора данных счетчиков вы должны получить файл ~/FFT16M/fft_cpc.pmf.

Команда CPC также может возвращать статистику о том, сколько событий произошло за каждый такт в течение заданного отрезка времени. Вы можете использовать параметр CPC --interval. Ниже приведен пример использования CPC, в котором собирается статистика по заданным событиям в течение отрезка времени длиной в 1000000 тактов.

Branch_Commit_t0, Branch_Commit_t1, Branch_Flush_t0, Dispatch_Blocked_t0, IERAT_Miss_t0, 
IL1_Miss_Cycles_t0, Instr_Flushed_t0  и  PPC_Commit_t0  :

$ cpc -e 2100,2101,2106,2109 -e 2103,2104,2111,2119 -c all --sampling-buffer-size 15
--interval 100000000 -X fft_cpc2.pmf -t 10 fft 40 printflag
                

В результате создается файл ~/FFT16M/fft_cpc2.pmf.

Шаг 2. Использование утилиты Counter Analyzer

You can now see the generated counter information with the Counter Analyzer tool in VPA. To do that:

  1. Запустите VPA и выберите меню Tools > Counter Analyzer.
  2. Выберите File > Open File.
  3. Перейдите к файлу fft_cpc.pmf и выберите его.

Результат будет похож на изображение на рисунке 1. Будет показана собранная информация счетчиков.


Рисунок 1. Собранные данные в утилите Counter Analyzer
Рисунок 1. Собранные данные в утилите Counter Analyzer

Шаг 3. Сбор данных при помощи OProfile

Чтобы собрать данные профилирования PPU и SPU для приложения FFT16M (пригодные для Profile Analyzer), выполните следующие действия:

  1. Инициализируйте среду OProfile для SPU и запустите рабочую нагрузку fft для сбора средних значений событий тактов.

Листинг 5. Инициализация и запуск OProfile для профилирования SPU
                    
# От имени суперпользователя root
opcontrol --deinit
opcontrol --init
opcontrol --reset
opcontrol --separate=all --event=SPU_CYCLES:100000
opcontrol --start
# От имени обычного пользователя
fft 20 1
# От имени суперпользователя root
opcontrol --stop
opcontrol --dump
                

  1. Введите команду opreport -X -g -l -d -o fft.spu.opm для создания отчета.
  2. Повторите эти шаги для PPU, используя следующий аналогичный код:

Листинг 6. Инициализация и запуск OProfile для профилирования PPU
                    
# От имени суперпользователя root
opcontrol --deinit
opcontrol --init
opcontrol --reset
opcontrol --separate=all --event=CYCLES:100000
opcontrol --start
# От имени обычного пользователя
fft 20 1
# От имени суперпользователя root
opcontrol --stop
opcontrol --dump
                      

  1. Введите команду opreport -X -g -l -d -o fft.ppu.opm для создания отчета.

Шаг 4. Использование утилиты Profile Analyzer

Теперь загрузим собранную информацию профилирования в VPA. Для этого выполним следующие шаги:

  1. Запустите VPA и выберите меню Tools > Profile Analyzer.
  2. Выберите File > Open File.
  3. Перейдите к файлу fft.spu.opm и выберите его.

Вы должны увидеть нечто похожее на рисунок 2.


Рисунок 2. Данные файла fft.spu.opm в Profile Analyzer
Рисунок 2. Данные файла fft.spu.opm в Profile Analyzer

Чтобы просмотреть подробную информацию, выберите значения fft_spu в разделе Modules (Модули) в центре экрана на рисунке 2 и дважды щелкните по значению main справа от раздела Symbol/Functions (Значения/Функции). В результате должна открыться вкладка Disassembly view (Подробный вид), изображенная внизу справа на рисунке 3.


Рисунок 3. Подробный вид (Disassembly view)
Рисунок 3.  Подробный вид (Disassembly view)

После двойного щелчка по значению программа запрашивает соответствующий исходный код. При его наличии можно переключиться на вкладку Source Code (Исходный код) внизу экрана.

Можно повторить те же действия для анализа результатов профилирования PPU из файла fft_ppu.opm.

Шаг 5. Сбор информации профилирования при помощи FDPR-Pro

Утилита FDPR-Pro, помимо своей основной функции оптимизации, позволяет вам диагностировать производительность приложения на основе его исходного кода (при совместном использовании с Code Analyzer).

Вначале необходимо собрать данные профилирования при помощи инструментария FDPR-Pro:

  1. Удалите старую информацию профилирования и создайте временный рабочий каталог для FDPR-Pro при помощи команды cd ~/FFT16M/ppu ; rm -f *.mprof *.nprof ; mkdir sputmp.
  2. Выполните оснащение исполняемого файла fft при помощи команды fdprpro fft -cell -spedir sputmp -a instr.

Листинг 7. Оснащение исполняемого файла fft
                    
FDPR-Pro Version 5.4.0.16 for Linux (CELL)
fdprpro ./fft -cell -spedir sputmp -a instr
> spe_extraction -> ./fft ...
...
> processing_spe_file -> sputmp/fft_spu ...
...
> reading_exe ...
> adjusting_exe ...
...
> analyzing ...
> building_program_infrastructure ...
@Warning: Relocations based on section .data -- section may not be
reordered
> building_profiling_cfg ...
> spe_encapsulation -> sputmp/out ...
>> processing_spe -> sputmp/out/fft_spu ...
> instrumentation ...
>> throw_&_catch_fixer ...
>> adding_universal_stubs ...
>> running_markers_and_instrumenters ...
>> linker_stub_fixer ...
>> dynamic_entries_table_sections_bus_fixer ...
>> writing_profile_template -> fft.nprof ...
> symbol_fixer ...
> updating_executable ...
> writing_executable -> fft.instr ...
bye.

  1. Запустите созданный профиль оснащения ./fft.instr 20 1.
  2. Должно получиться два соответствующих файла:
    • ~/FFT16M/ppu/fft.nprof # информация профилирования PPU;
    • ~/FFT16M/ppu/fft_spu.mprof # информация профилирования SPU.

Шаг 6. Обработка данных профилирования при помощи Code Analyzer

Утилита Code Analyzer импортирует информацию из FDPR-Pro и создает для нее наглядное представление. Для этого необходимо выполнить следующие шаги:

  1. Откройте VPA и выберите меню Tools > Code Analyzer.
  2. Выберите меню Tools > Code Analyzer > Analyze Executable и перейдите к исходному исполняемому файлу fft. После этого в центре экрана должны открыться две вкладки редактора: одна для PPU, а другая для SPU, как показано на рисунке 4.

Рисунок 4. Редакторы PPU и SPU в Code Analyzer
Рисунок 4. Редакторы PPU и SPU в Code Analyzer
  1. Чтобы добавить информацию профилирования PPU, выберите в редакторе вкладку PPU, откройте меню File > Code Analyzer > Add Profile Info и укажите файл fft.nprof.

Рисунок 5. Добавление информации профилирования
Рисунок 5. Добавление информации профилирования
  1. Чтобы добавить данные PPU, повторите те же действия: выберите вкладку SPU редактора, откройте меню File > Code Analyzer > Add Profile Info и укажите файл fft_spu.mprof.

Сразу же после загрузки информации профилирования в обеих вкладках редактора инструкции будут выделены цветом. Наиболее часто выполняющиеся инструкции будут отмечены красным цветом, как показано на рисунке 6.


Рисунок 6. Code Analyzer отображает частоту выполнения
Рисунок 6. Code Analyzer отображает частоту выполнения

Вместо инструкций можно подключить исходный код. Для этого выберите значения в Program Tree, щелкните правой кнопкой мыши, выберите Open Source Code (Открыть исходный код) и укажите соответствующий исходный код. В результате в центре экрана должна появиться вкладка Source Code (Исходный код), в которой можно просматривать частоту выполнения для отдельных строк исходного кода, как показано на рисунке 7.


Рисунок 7. Вкладка Source Code в Code Analyzer
Рисунок 7. Вкладка Source Code в Code Analyzer

Чтобы рассчитать границы групп диспетчеризации fft для PPE и SPU, выберите соответствующую вкладку и нажмите кнопку Collect display information about dispatch groups (Собрать отображаемую информацию о группах диспетчеризации). Для сбора комментариев об узких местах производительности можно одновременно выбрать кнопку Collect hazard info (Собрать предупреждения), расположенную справа над вкладкой с соответствующим исходным кодом, как показано на рисунке 8.


Рисунок 8. Кнопки "Collect..." в Code Analyzer
Рисунок 8. Кнопки 'Collect...' в Code Analyzer

Чтобы показать заполнение конвейеров для каждой группы диспетчеризации, выберите вкладку Dispatch Info (Информация о диспетчеризации)в правом нижнем углу (во вкладке Instruction Properties (Свойства инструкции)) и нажмите кнопку Link with table (Связать с таблицей), как показано на рисунке 9.


Рисунок 9. Вкладка Dispatch Info с включенным параметром "Link with Table"
Рисунок 9. Вкладка Dispatch Info с включенным параметром 'Link with Table'

Вкладка Latency Info (Информация о задержках) в правом нижнем углу отображает задержки для всех выбранных инструкций, как показано на рисунке 10.


Рисунок 10. Вкладка Latency info
Рисунок 10. Вкладка Latency info

Code Analyzer также может использовать информацию таймеров SPU на уровне конвейера для вывода подробной информации о заполнении конвейеров Cell/B.E на каждом этапе. Для этого выберите вкладку редактора SPU для fft, перейдите к необходимому значению в Program Tree, щелкните правой кнопкой мыши и выберите меню Show SPU-Timing (Показать SPU-Timing), как показано на рисунке 11.


Рисунок 11. Отображение информации SPU Timing
Рисунок 11. Отображение информации SPU Timing

На рисунке 12 показано содержимое вкладки с информацией о конвейерах Cell/B.E.


Рисунок 12. Содержимое вкладки с информацией о конвейерах Cell/B.E.
Рисунок 12. Содержимое вкладки с информацией о конвейерах Cell/B.E.


В начало



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