Инструменты компании Интел для разработки программного обеспечения. Дмитрий Тараканов Инженер по программному обеспечению ISDEF 2004, 17 сентября 2004
Производительность Производительность –Главное назначение всех инструментов от Интел –Разработчики инструментов работают в непосредственном контакте с разработчиками архитектур процессоров Совместимость Совместимость –Инструменты Интел совместимы с ведущими IDE –Легко интегрируются в процесс разработки Intel® Software Development Products * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Доступность Доступность –Windows* и Linux* –Все Интеловские платформы (оптимизация под каждую платформу) –Ранняя доступность (до выпуска процессора) Поддержка Поддержка –Premier Customer Support мирового уровня Обучение Обучение – Intel® Software College –Все инструменты и платформы – Множество WEB-ресурсов Intel® Software Development Products * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Intel ® Software Development Products Intel® Compilers Лучший способ добиться высокой производительности приложений на архитектурах Интел Intel® VTune Performance Analyzers Быстрый анализ узких мест производительности и способы их разрешения Intel® Performance Libraries Высокооптимизированные библиотеки функций широкого спектра применения – производительность и портируемость Intel® Threading Tools Ускоряют и облегчают разработку многопоточных приложений Intel® Software College Эксперты поделятся знаниями Интеловских архитектур и инструментов Intel Software Development Tools for Intel® Personal Internet Client Architecture, Pentium® M, Pentium® 4, Intel® Xeon and Itanium® 2 Processors * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
VTune Performance Analyzer Библиотеки Анализаторы производ-сти Threading Tools Компиляторы Math Kernel Library Integrated Performance Primitives Thread Checker/ Profiler C++ C++ Intel Personal Internet Client Architecture for Mobile Devices Windows* Linux* Intel Software Development Products Fortran NA Intel Software Development Products From Supercomputers to Cell Phones, Intel Software Development Products Enable Application Development Across Intel Processors NA Not available Поддержка в NA * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Source Code CompileExecute Output Link Intel® Software Development Products поддерживают весь цикл разработки VTune Performance Analyzer Tools, Threading Tools VTune Performance Analyzer Tools, Threading Tools Intel® Performance Libraries: MKL, IPP, GPP Intel ® C/C++ Compiler Intel ® C/C++ Compiler Intel ® Fortran Compiler Intel ® Fortran Compiler Intel® Solution Services
Семейство компиляторов Интел Семейство компиляторов Интел Лучший способ добиться высокой производительности приложений на архитектурах Интел LanguageArchitectureOS/Platform Name / Name since 8.0 release C/C++IA32Windows*icl Linux* icc ecc Itanium®Windows*ecl Linux*ecc Xscale Microsoft eMbedded Visual C++ ccxscce Platform Builder for Win CE.NET* ccxscce C IA32 and Itanium® Windows / EFI Byte Code (EBC) Virtual Machine iec FortranIA32Windows* ifl ifort Linux* Ifc ifort Itanium®Windows* Efl ifort Linux* efc ifort * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Факторы повышения производительности Автовекторизация для архитектуры NetBurst Автовекторизация для архитектуры NetBurst Программная конвейеризация под архитектуру Itanium ® Программная конвейеризация под архитектуру Itanium ® Параллелизация, основанная на OpenMP*, для многопроцессорных систем и систем с Hyper-Threading Параллелизация, основанная на OpenMP*, для многопроцессорных систем и систем с Hyper-Threading Автопараллелизация Автопараллелизация Предварительная выборка данных Предварительная выборка данных Межпроцедурная оптимизация (IPO) Межпроцедурная оптимизация (IPO) Оптимизация по профилированию (PGO) Оптимизация по профилированию (PGO) Диспетчеризация ЦП во время исполнения Диспетчеризация ЦП во время исполнения Генерация процессор-специфичного кода Единый исходный код для всего семейства процессоров Интел Генерация процессор-специфичного кода Единый исходный код для всего семейства процессоров Интел * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Встроенные средства SIMD-расширений встроенные средства SIMD-расширений работают с упакованными данными до 128 байт в длину, что обеспечивает возможность параллельной обработки элементов данных встроенные средства SIMD-расширений работают с упакованными данными до 128 байт в длину, что обеспечивает возможность параллельной обработки элементов данных позволяют использовать Си функции вместо кодирования на языке ассемблера позволяют использовать Си функции вместо кодирования на языке ассемблера обеспечивают доступ к основным возможностям, нереализуемым с применением обычных методик кодирования обеспечивают доступ к основным возможностям, нереализуемым с применением обычных методик кодирования большинство команд в рамках технологии MMX, SSE и SSE2 имеют соответствующие встроенные функции на языке Си большинство команд в рамках технологии MMX, SSE и SSE2 имеют соответствующие встроенные функции на языке Си
Автовекторизация Автоматически применяет SIMD команды в наборах команд SSE2, SSE и MMX Автоматически применяет SIMD команды в наборах команд SSE2, SSE и MMX Определяет операции программы, которые можно выполнять параллельно, после чего конвертирует последовательную программу для обработки 2, 4, 8 или 16 элементов за одну операцию в зависимости от типа данных Определяет операции программы, которые можно выполнять параллельно, после чего конвертирует последовательную программу для обработки 2, 4, 8 или 16 элементов за одну операцию в зависимости от типа данных Все стандартные математические функции в Си имеют SIMD реализации Все стандартные математические функции в Си имеют SIMD реализации Достаточно указать ключ в командной строке Достаточно указать ключ в командной строке
Программная конвейеризация Программная конвейеризация предназначена для перекрытия итераций циклов Программная конвейеризация предназначена для перекрытия итераций циклов Использует мощную поддержку программной конвейеризации, обеспечиваемую архитектурой Itanium ® Использует мощную поддержку программной конвейеризации, обеспечиваемую архитектурой Itanium ® –циклический сдвиг регистров –специальные команды ветвления для циклов –большой массив регистров Компилятор работает автоматически без необходимости указания каких-либо ключей в командной строке Компилятор работает автоматически без необходимости указания каких-либо ключей в командной строке
Распространяет оптимизацию на все файлы Компилировать и оптимизировать file1.c file2.c file3.c file4.c Без IPO Компилировать и оптимизировать file1.c file4.cfile2.c file3.c С IPO Межпроцедурная оптимизация
Оптимизация по профилированию Оптимальна для кода с часто выполняемыми ветвлениями, которые трудно предсказать во время компиляции Оптимальна для кода с часто выполняемыми ветвлениями, которые трудно предсказать во время компиляции Оптимизирует принятие компилятором решений о подстановке функций Оптимизирует принятие компилятором решений о подстановке функций Включает следующие стадии Включает следующие стадии –Инструментальная компиляция и связывание –Запуск полученного файла для создания файлов динамической информации (.dyn) –Компиляция с использованием.dyn файла.
Поддержка многопоточной разработки в компиляторах Intel ® Поддержка OpenMP* в компиляторах Intel ® Поддержка OpenMP* в компиляторах Intel ® –Предоставляет стандартный набор библиотечных функций для упрощения управления программой в режиме параллельного исполнения –Обеспечивает расширение библиотеки OpenMP* для работы с памятью в многопоточном режиме Автопараллелизатор компилятора Intel ® Автопараллелизатор компилятора Intel ® – Обнаруживает циклы, которые могут безопасно выполняться в параллели, и автоматически генерирует многопоточный код для подобных циклов – Освобождает пользователя от необходимости заниматься низкоуровневыми задачами по декомпозиции итераций, совместному использованию данных, планированию и синхронизации потоков – Обеспечивает повышение производительности для многопроцессорных систем Работает не только на многопроцессорных машинах, но и на однопроцессорных Pentium® 4 c технологией Hyper- Threading Работает не только на многопроцессорных машинах, но и на однопроцессорных Pentium® 4 c технологией Hyper- Threading * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
VTune Performance Analyzer VTune Performance Analyzer Быстрый анализ узких мест производительности и способы их разрешения Помогает определить и локализовать Помогает определить и локализовать проблемы производительности ПО проблемы производительности ПО посредством: посредством: –Сбора широкого спектра показателей производительности с ОС на которой выполняется Ваше приложение –Обработки и отображения данных в различных видах, начиная с system-wide и заканчивая исходным кодом и процессорными инструкциями –Идентификации потенциальных проблем производительности и предложения вариантов их разрешения Поддерживает все современные процессоры Intel®, включая Itanium® 2, Pentium® 4, Pentium® M и XScale Поддерживает все современные процессоры Intel®, включая Itanium® 2, Pentium® 4, Pentium® M и XScale
VTune Performance Analyzer Поддерживает Поддерживает –Платформы: –Семейство Intel® IA-32 –Семейство Itanium® –XScale ® –Операционные системы: –Microsoft Windows* –Linux* (Red Hat, SuSe и др.) –MRTE –Java (BEA, IBM, Microsoft, Sun) –.NET Поддерживает локальный и удалённый сбор данных Поддерживает локальный и удалённый сбор данных –Агент и коллекторы данных на удалённой машине –Microsoft Windows* –Linux* –MTRE –Управление процессом, анализ и отображение результатов на host-машине Поддерживает интерфейс командной строки Поддерживает интерфейс командной строки Интегрируется в Visual Studio 7 Интегрируется в Visual Studio 7 * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Обзор функциональности Sampling Sampling –time-based –event-based –Overtime view Call graph Call graph –Граф вызовов с подробной информацией о временных затратах –Критический путь исполнения Counter monitor Counter monitor –Системные счётчики производительности Статический анализ исполняемых модулей Статический анализ исполняемых модулей Intel® Tuning Assistant Intel® Tuning Assistant –Комментарии по проблемам, подсказки по модификации кода Обработка данных Обработка данных –«Мастера» для конфигурирования коллекторов –Сравнение и слияние результатов –Упаковка и перенос проектов на другую машину Getting Started tutorial Getting Started tutorial
VTune and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. Sampling Process View Данные по всей системе
VTune and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. Sampling Source View Показатели производительности по линиям исходного кода
VTune Call-Graph View Граф вызовов функций, критический путь исполнения
VTune для Linux* – две возможности Локальный и удалённый сбор данных VTune CLI2.0 – устанавливается локально на Linux машине VTune CLI2.0 – устанавливается локально на Linux машине –Интерфейс командной строки –Следующая версия будет графической –Будет доступна в этом году VTune 7.1 Windows VTune 7.1 Windows –Коллектора на Linux машине для удалённого сбора данных –Просмотр данных на Windows host-машине –GUI * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Поддерживает Поддерживает –Платформы: –Семейство Intel® IA-32 –Семейство Itanium® –Операционные системы: –Linux* (Red Hat, SuSe и др.) –MRTE –Java (BEA, IBM, Sun) на IA-32 Интерфейс командной строки Интерфейс командной строки Результаты совместимы с Windows-версией. Результаты совместимы с Windows-версией. –Могут быть упакованы и просмотрены с помощью Windows-версии анализатора Поддерживает до 64 процессоров Поддерживает до 64 процессоров Обеспечивается высоким уровнем клиентского сервиса Обеспечивается высоким уровнем клиентского сервиса VTune Performance Analyzer 2.0 for Linux* * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Обзор функциональности Sampling Sampling –event-based Call graph Call graph Source view Source view Обработка данных Обработка данных –Упаковка и перенос проектов на другую машину Man страницы и HTML руководство Man страницы и HTML руководство
VTune CLI2.0 - sampling view
VTune CLI2.0 - source view
Intel® Threading Tool Kit Инструменты отладки и мониторинга многопоточных приложений Инструменты отладки и мониторинга многопоточных приложений –Thread Checker: проверяет корректность многопоточных приложений –Thread Profiler: анализирует производительность в аспекте организации потоков Устанавливаются на VTune ( 7.0 или 7.1 ) Устанавливаются на VTune ( 7.0 или 7.1 ) Поддерживают Поддерживают –Платформы: –Семейство Intel® IA-32 –Для Itanium в процессе разработки –Операционные системы: –Microsoft Windows* –Для Linux в процессе разработки Поддерживают потоковые модели: Поддерживают потоковые модели: –OpenMP* –Windows* Threading API * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Intel® Thread Checker 2.0 Различные режимы анализа Инструментирование исполняемых файлов Инструментирование исполняемых файлов –Сбор данных осуществляется внутри оболочки VTune –Требует наличия только исполняемых файлов программы; VTune управляет всем процессом –Позволяет анализировать (системные) библиотеки даже при отсутствии исходного кода –Не требует специальной (пере)компиляции или (пере)сборки Инструментирование на этапе компиляции Инструментирование на этапе компиляции –Компилировать с icl /Qtcheck –Более качественная информация по местонахождению в исходном коде переменных, выражений и т.д. –Производительность (сопоставление компиляции и инструментирования, анализ)
Intel® Thread Checker Список ошибок Настраиваемый Связь с исходным кодом Представление исходного кода Контекст ошибки Место ошибки Отслеживание стека вызовов функции
Intel® Thread Profiler 2.0 Для OpenMP* Собирает и отображает данные по производительности в аспекте организации потоков Собирает и отображает данные по производительности в аспекте организации потоков –Упрощает процесс отладки распараллеливания –Представляет данные по каждому потоку и региону распараллеливания –Затраты на синхронизацию, накладные расходы системы –Дисбаланс по нагрузке –Сравнение результатов разных запусков –Аппроксимация масштабируемости приложения * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Intel® Thread Profiler 2.0 Для потоков Windows* Отображает данные: Отображает данные: –Критические пути исполнения программы –Распределение временных затрат по критическому пути на: –Исполнение –Синхронизацию –Ожидание –Блокирование –Аналогичные данные по потокам программы и уровню паралеллизма –Ассоциации потоковых событий со строками исходного кода * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Intel® Thread Profiler 2.0 Для OpenMP* * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Intel® Thread Profiler 2.0 Для потоков Windows* * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Intel® Thread Profiler 2.0 Для потоков Windows* * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
Intel® Performance Libraries Intel® Performance Libraries Высокооптимизированные библиотеки функций широкого спектра применения – производительность и портируемость MKL – Intel® Math Kernel Library –Linear Algebra: LAPACK plus BLAS (Levels 1, 2, 3) –Discrete Fourier Transforms (DFT) –Vector Statistical Library functions (VSL) –Vector transcendental math functions (VML) IPP – Intel® Integrated Performance Primitives –signal, image, graphic, multimedia and numeric processing functions Доступны для Linux* and Windows* Доступны для Linux* and Windows* Индивидуально оптимизированы под Индивидуально оптимизированы под –Pentium® III, Pentium® 4 –Itanium® –IPP также под StrongARM*, Xscale Во время исполнения загружается код, оптимальный для Во время исполнения загружается код, оптимальный для данного процессора данного процессора Избавляют разработчиков от написания процессор- Избавляют разработчиков от написания процессор- специфичного кода специфичного кода GPP - Intel® Graphics Performance Primitives Доступны для PDA/Xscale с PPC 2002 Доступны для PDA/Xscale с PPC 2002 –Поддержка других ОС в процессе разработки VTune and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries.
Ресурсы На On-line курсы и документация On-line курсы и документация Руководства по архитектуре процессоров Руководства по архитектуре процессоров Открытые коды Открытые коды Новые релизы / патчи Новые релизы / патчи Объявления, новости Объявления, новости Intel Press предлагает множество полезных книг
Итоги Intel® Software Developer Tools: широчайшие возможности для создания высокоэффективных приложений любой сложности Intel® Software Developer Tools: широчайшие возможности для создания высокоэффективных приложений любой сложности Главные факторы: производительность, ещё раз производительность, плюс совместимость Главные факторы: производительность, ещё раз производительность, плюс совместимость Доступность на Linux*/Windows* -- C++/Fortran -- IA32/Itanium/XScale Доступность на Linux*/Windows* -- C++/Fortran -- IA32/Itanium/XScale Постоянное расширение сферы охвата ( HPC, Linux* ) Постоянное расширение сферы охвата ( HPC, Linux* ) Профессиональный сервис мирового уровня Профессиональный сервис мирового уровня * Другие наименования и товарные знаки являются собственностью своих законных владельцев.
DEMO
Спасибо за внимание!