Презентацию к лекции Вы можете скачать здесь.
Основные характеристики приложения, влияющие на его производительность
Под эффективностью вычислений подразумевается "не делать лишней работы", что достигается эффективным
Место и роль компилятора
Компилятор — транслятор, который осуществляет перевод всей исходной программы в эквивалентную ей результирующую программу на языке машинных команд или на языке ассемблера.
Основная задача оптимизирующего компилятора – получение кода максимально эффективного для используемого вычислительного комплекса.
С точки зрения разработчика программа должна быть:
Разработчику необходима
Компилятор должен удовлетворить эти требования.
В настоящее время от компилятора требуется получение эффективного и высоконадежного кода. С точки зрения разработчика программа должна быть легко читаемой и модифицируемой. Для реализации этого требования в больших проектах необходима модульность, основная функциональность выносится в отдельные утилиты, используется объектно-ориентированное программирование и т.д. Благодаря этому
Оптимизирующий компилятор
Это программный комплекс, работа которого варьируется в зависимости от требований к результирующему коду.
Возникают следующие проблемы:
Для достижения хороших результатов требуется тесное сотрудничество с разработчиком
Чтобы использовать умело средства компилятора, программист должен:
Компиляторы Intel
| С/C++ и Fortran для операционных систем Windows, Linux и Mac OS
Для Windows компилятор может быть интегрирован в Microsoft Visual Studio Главной целью корпорации является высокая производительность компиляторов и совместимость с Microsoft Visual Studio на Windows и с |
![]() |
Некоторые полезные опции компилятора
Очень часто, чтобы сделать приложение быстрее, надо просто выбрать правильный компилятор и установить ему правильные опции.
Дополнительные инструменты оптимизации приложений
![]() |
Существуют различные средства поиска неоптимальных участков кода в зависимости от типов решаемых задач и сред исполнения
Intel VTune™ Amplifier XE Performance Profiler
Intel VTune – многофункциональный инструмент, предназначенный для анализа производительности приложения. Он позволяет получить полную информацию о том, как на самом деле работает ваша программа. Бывает, что даже опытный разработчик не всегда может верно оценить, на что тратятся основные вычислительные ресурсы и какие вычисления являются "узким местом", ограничивающим производительность всего приложения.
Intel VTune™ Amplifier XE Performance Profiler
Помогает проанализировать особенности алгоритма и определить фрагменты приложения, где оно может использовать доступные ресурсы более рационально.
Позволяет найти и определить следующее:
Intel VTune особенно удобен тем, что для решения большинства своих задач он не требует пересборки программы. VTune – не статический анализатор, он собирает информацию о том, как работает интересующее приложение или вся система в реальных условиях, на реальных данных, "под нагрузкой". Желательно, что бы исследуемая программа была скомпилирована с сохранением отладочной информации. В этом случае можно будет "провалиться" вплоть до исходного кода и получить детальную характеристику каждой строчки исполняемого кода. Какая именно информация будет собрана и насколько она будет подробной, зависит от режима работы Intel VTune и от настроек. Далее мы познакомимся и с возможными режимами работами и с настройками. Отведённое нам время позволит это сделать лишь достаточно поверхностно, в виде ознакомления. Тем не менее основные моменты станут понятными, подробности вы всегда сможете узнать у самого VTune. VTune мощный и, вообще говоря, достаточно сложный инструмент. Точнее, с его помощью можно делать весьма сложные вещи, крайне трудно осуществимые без его помощи. Тем не менее, пользоваться им не сложно. Это инструмент с долгой историей, с набором дочерних и параллельных проектов, которые, в том числе, активно используются и внутри компании. Помимо документации VTune содержит отличный контекстный help, который поможет вам разобраться. Так же есть документация, как я уже сказал, также форумы поддержки и базы знаний Intel, ну и Google спешит на помощь?
Почему здесь выделена Java? Потому что с подобными языками есть проблема. А именно, исполняемого кода в явном виде не существует. Исполняемый код создаётся Just In
Шаги по использованию VTune
|
|
![]() |
Сборка приложения
Для получения более детальной информации посредством VTune рекомендуется компилировать приложения в режиме debug с генерацией символьной информации
Запуск анализа
Запуск из графического интерфейса осуществляется интуитивно понятно
Анализ
|
|
![]() |
|
|
![]() |
Стек вызовов
Можно просматривать не только функцию, но и стек вызова
Просмотр по вычислительным потокам
![]() |
![]() |
Исходный код
Сравнение результатов
Для определения выигрыша, вызванного оптимизациями удобно воспользоваться
Сравнение результатов
Оценка эффективности использования вычислительных ресурсов
Аналогичным образом можно произвести другие виды анализа, например, locks and waits
Осуществление анализа
После выполнения анализа вам также будет представлена краткая информация, но уже по другому аспекту
![]() |
![]() |
Осуществление анализа
Также имеется возможность просмотра более детальной информации по стеку вызова и объектам синхронизации
Анализ исходного кода
Сравнение результатов
Некоторые события
CPU_CLK_UNHALTED.CORE – количество тактов процессораINST_RETIRED.ANY – количество исполненных инструкцийBUS_TRANS_ANY.ALL_AGENTS – количество всех транзакций шиныL2_LINES_IN.SELF.DEMAND – количество промахов по L2 кэшу.BR_INST_RETIRED.MISPRED – неправильно предсказанные ветвленияЗдесь представлены названия некоторых счётчиков событий. Наиболее полезными для начала будут первые два – это такты процессора и количество исполненных инструкций. Ведь само по себе то, что ваша программа проводит 95% времени в одной функции и тратит на это миллионы тактов ещё ни о чём не говорит. Вот если за это время она успевает выполнить всего лишь тысячу инструкций, то где-то тут проблема. Соотношение CPU_CLK_UNHALTED / INST_RETIRED называется
Про то, что неправильное предсказание переходов ломает конвеер и логику Out-Of-
Время доступа к памяти
![]() |
![]() |
Небольшое отступление по поводу доступа к памяти. Эти графики показывают пропускную способность (
Что влияет на то, насколько плохо использует ресурсы компьютера программа?
Итак, что у нас есть – конкуренция за общие ресурсы, такие как вычислительные устройства процессора. Особо к узким местам я хочу отнести какие-то постоянные синхронизации, которые не позволяют загрузить все ядра на полную мощность, а также просто неиспользование всего предлагаемого функционала. Кстати, это может происходить при переносе вручную написанного "высокооптимизированного" ассемблерного кода на новую платформу. Ну или при использовании неподходящего компилятора.
Презентацию к лекции Вы можете скачать здесь.
Основные характеристики приложения, влияющие на его производительность
Под эффективностью вычислений подразумевается "не делать лишней работы", что достигается эффективным
Место и роль компилятора
Компилятор — транслятор, который осуществляет перевод всей исходной программы в эквивалентную ей результирующую программу на языке машинных команд или на языке ассемблера.
Основная задача оптимизирующего компилятора – получение кода максимально эффективного для используемого вычислительного комплекса.
С точки зрения разработчика программа должна быть:
Разработчику необходима
Компилятор должен удовлетворить эти требования.
В настоящее время от компилятора требуется получение эффективного и высоконадежного кода. С точки зрения разработчика программа должна быть легко читаемой и модифицируемой. Для реализации этого требования в больших проектах необходима модульность, основная функциональность выносится в отдельные утилиты, используется объектно-ориентированное программирование и т.д. Благодаря этому
Оптимизирующий компилятор
Это программный комплекс, работа которого варьируется в зависимости от требований к результирующему коду.
Возникают следующие проблемы:
Для достижения хороших результатов требуется тесное сотрудничество с разработчиком
Чтобы использовать умело средства компилятора, программист должен:
Компиляторы Intel
| С/C++ и Fortran для операционных систем Windows, Linux и Mac OS
Для Windows компилятор может быть интегрирован в Microsoft Visual Studio Главной целью корпорации является высокая производительность компиляторов и совместимость с Microsoft Visual Studio на Windows и с |
![]() |
Некоторые полезные опции компилятора
Очень часто, чтобы сделать приложение быстрее, надо просто выбрать правильный компилятор и установить ему правильные опции.
Дополнительные инструменты оптимизации приложений
![]() |
Существуют различные средства поиска неоптимальных участков кода в зависимости от типов решаемых задач и сред исполнения
Intel VTune™ Amplifier XE Performance Profiler
Intel VTune – многофункциональный инструмент, предназначенный для анализа производительности приложения. Он позволяет получить полную информацию о том, как на самом деле работает ваша программа. Бывает, что даже опытный разработчик не всегда может верно оценить, на что тратятся основные вычислительные ресурсы и какие вычисления являются "узким местом", ограничивающим производительность всего приложения.
Intel VTune™ Amplifier XE Performance Profiler
Помогает проанализировать особенности алгоритма и определить фрагменты приложения, где оно может использовать доступные ресурсы более рационально.
Позволяет найти и определить следующее:
Intel VTune особенно удобен тем, что для решения большинства своих задач он не требует пересборки программы. VTune – не статический анализатор, он собирает информацию о том, как работает интересующее приложение или вся система в реальных условиях, на реальных данных, "под нагрузкой". Желательно, что бы исследуемая программа была скомпилирована с сохранением отладочной информации. В этом случае можно будет "провалиться" вплоть до исходного кода и получить детальную характеристику каждой строчки исполняемого кода. Какая именно информация будет собрана и насколько она будет подробной, зависит от режима работы Intel VTune и от настроек. Далее мы познакомимся и с возможными режимами работами и с настройками. Отведённое нам время позволит это сделать лишь достаточно поверхностно, в виде ознакомления. Тем не менее основные моменты станут понятными, подробности вы всегда сможете узнать у самого VTune. VTune мощный и, вообще говоря, достаточно сложный инструмент. Точнее, с его помощью можно делать весьма сложные вещи, крайне трудно осуществимые без его помощи. Тем не менее, пользоваться им не сложно. Это инструмент с долгой историей, с набором дочерних и параллельных проектов, которые, в том числе, активно используются и внутри компании. Помимо документации VTune содержит отличный контекстный help, который поможет вам разобраться. Так же есть документация, как я уже сказал, также форумы поддержки и базы знаний Intel, ну и Google спешит на помощь?
Почему здесь выделена Java? Потому что с подобными языками есть проблема. А именно, исполняемого кода в явном виде не существует. Исполняемый код создаётся Just In
Шаги по использованию VTune
|
|
![]() |
Сборка приложения
Для получения более детальной информации посредством VTune рекомендуется компилировать приложения в режиме debug с генерацией символьной информации
Запуск анализа
Запуск из графического интерфейса осуществляется интуитивно понятно
Анализ
|
|
![]() |
|
|
![]() |
Стек вызовов
Можно просматривать не только функцию, но и стек вызова
Просмотр по вычислительным потокам
![]() |
![]() |
Исходный код
Сравнение результатов
Для определения выигрыша, вызванного оптимизациями удобно воспользоваться
Сравнение результатов
Оценка эффективности использования вычислительных ресурсов
Аналогичным образом можно произвести другие виды анализа, например, locks and waits
Осуществление анализа
После выполнения анализа вам также будет представлена краткая информация, но уже по другому аспекту
![]() |
![]() |
Осуществление анализа
Также имеется возможность просмотра более детальной информации по стеку вызова и объектам синхронизации
Анализ исходного кода
Сравнение результатов
Некоторые события
CPU_CLK_UNHALTED.CORE – количество тактов процессораINST_RETIRED.ANY – количество исполненных инструкцийBUS_TRANS_ANY.ALL_AGENTS – количество всех транзакций шиныL2_LINES_IN.SELF.DEMAND – количество промахов по L2 кэшу.BR_INST_RETIRED.MISPRED – неправильно предсказанные ветвленияЗдесь представлены названия некоторых счётчиков событий. Наиболее полезными для начала будут первые два – это такты процессора и количество исполненных инструкций. Ведь само по себе то, что ваша программа проводит 95% времени в одной функции и тратит на это миллионы тактов ещё ни о чём не говорит. Вот если за это время она успевает выполнить всего лишь тысячу инструкций, то где-то тут проблема. Соотношение CPU_CLK_UNHALTED / INST_RETIRED называется
Про то, что неправильное предсказание переходов ломает конвеер и логику Out-Of-
Время доступа к памяти
![]() |
![]() |
Небольшое отступление по поводу доступа к памяти. Эти графики показывают пропускную способность (
Что влияет на то, насколько плохо использует ресурсы компьютера программа?
Итак, что у нас есть – конкуренция за общие ресурсы, такие как вычислительные устройства процессора. Особо к узким местам я хочу отнести какие-то постоянные синхронизации, которые не позволяют загрузить все ядра на полную мощность, а также просто неиспользование всего предлагаемого функционала. Кстати, это может происходить при переносе вручную написанного "высокооптимизированного" ассемблерного кода на новую платформу. Ну или при использовании неподходящего компилятора.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.