Без темы
<<  Комбинированный урок с мультимедийной поддержкой Комплексная безопасность МБДОУ «Детский сад № 145» г. Чебоксары  >>
Компиляторы Интел для высокопроизводительных вычислений
Компиляторы Интел для высокопроизводительных вычислений
Упрощенная модель процессора
Упрощенная модель процессора
Упрощенная модель процессора
Упрощенная модель процессора
Высокая производительность МП
Высокая производительность МП
Тактовая частота: Поскольку процессор состоит из разных микросхем, и
Тактовая частота: Поскольку процессор состоит из разных микросхем, и
Скорость выполнения инструкций и полнота базового набора инструкций:
Скорость выполнения инструкций и полнота базового набора инструкций:
Использование внутренней памяти, распределение регистров: Скорость
Использование внутренней памяти, распределение регистров: Скорость
Конвейер
Конвейер
Качество конвейеризации, уровень параллелизма инструкций
Качество конвейеризации, уровень параллелизма инструкций
Качество предсказания переходов: Инструкции могут быть зависимыми по
Качество предсказания переходов: Инструкции могут быть зависимыми по
Качество упреждающей выборки: Поскольку программы часто работают с
Качество упреждающей выборки: Поскольку программы часто работают с
Суперскалярность: Суперскалярный процессор – это процессор способный
Суперскалярность: Суперскалярный процессор – это процессор способный
Упрощенная модель процессора
Упрощенная модель процессора
Параллелизация и многоядерность: Многозадачность, многопоточность
Параллелизация и многоядерность: Многозадачность, многопоточность
Основные характеристики влияющие на производительность МП
Основные характеристики влияющие на производительность МП
Измерение производительности
Измерение производительности
Место и роль компилятора
Место и роль компилятора
Программа должна быть: Легко читаемой и модифицируемой Легко
Программа должна быть: Легко читаемой и модифицируемой Легко
Мы обсуждали факторы влияющие на производительность
Мы обсуждали факторы влияющие на производительность
Скорость выполнения инструкций и полнота базового набора инструкций
Скорость выполнения инструкций и полнота базового набора инструкций
Использование внутренней памяти, распределение регистров
Использование внутренней памяти, распределение регистров
Интеловские компиляторы
Интеловские компиляторы
Оптимизации:
Оптимизации:
2.) Цикловые оптимизации Вынесение инвариантов цикла (Loop invariant
2.) Цикловые оптимизации Вынесение инвариантов цикла (Loop invariant
Помимо этих оптимизаций существуют и другие, порой очень разнообразные
Помимо этих оптимизаций существуют и другие, порой очень разнообразные
3.) Векторизация Векторизация, в компьютерной науке, это процесс
3.) Векторизация Векторизация, в компьютерной науке, это процесс
4.)Автоматическая параллелизация Автоматическая параллелизация – это
4.)Автоматическая параллелизация Автоматическая параллелизация – это
5.)Оптимизация вызовов функций, межпроцедурный анализ
5.)Оптимизация вызовов функций, межпроцедурный анализ
Статический и динамический профилировщики
Статический и динамический профилировщики
Зависимость основных характеристик компиляции
Зависимость основных характеристик компиляции
Пошаговый алгоритм отладки/улучшения производительности программы
Пошаговый алгоритм отладки/улучшения производительности программы
Инструменты и методы используемые для оптимизации производительности
Инструменты и методы используемые для оптимизации производительности
Компиляторы Интел для высокопроизводительных вычислений
Компиляторы Интел для высокопроизводительных вычислений
Компиляторы Интел для высокопроизводительных вычислений
Компиляторы Интел для высокопроизводительных вычислений
6.) Добавление межпроцедурных оптимизаций –ipo 7.) Использование
6.) Добавление межпроцедурных оптимизаций –ipo 7.) Использование

Презентация на тему: «Компиляторы Интел для высокопроизводительных вычислений». Автор: aanufrie. Файл: «Компиляторы Интел для высокопроизводительных вычислений.ppt». Размер zip-архива: 390 КБ.

Компиляторы Интел для высокопроизводительных вычислений

содержание презентации «Компиляторы Интел для высокопроизводительных вычислений.ppt»
СлайдТекст
1 Компиляторы Интел для высокопроизводительных вычислений

Компиляторы Интел для высокопроизводительных вычислений

2009

2 Упрощенная модель процессора

Упрощенная модель процессора

Внешняя память

Оперативная память (RAM)

Шина ввода-вывода

Системная шина

Устройство взаимодействия с внешней памятью

Команды

Данные

Вычислительное устройство (ALU)

Управляющее устройство (CU)

Процессор

Регистры

3 Упрощенная модель процессора

Упрощенная модель процессора

Со времен изобретения микросхемы в мире было разработано большое число разных процессоров, но в любом процессоре можно выделить: устройство управления (Control Unit, CU) арифметико-логическое устройство (Arithmetic and Logic Unit,ALU) системные регистры Чтобы превратить все это в вычислительную систему необходимо как минимум добавить системную шину (Front Side Bus, FSB) память периферийные устройства Устройство управления (CU): проводит дешифрацию инструкций, поступающих из памяти компьютера. управляет ALU. осуществляет пересылку данных между регистрами ЦП, памятью, периферийными устройствами. и т.д. Арифметико-логическое устройство состоит из различных микросхем, позволяющих производить арифметические и логические операции над системными регистрами. Системные регистры – это определенный участок памяти внутри ЦП, используемый для промежуточного хранения информации, обрабатываемой процессором. Системная шина используется для пересылки данных между ЦП и памятью, а также между ЦП и периферийными устройствами. В современных компьютерах ЦП через шину связывается с системным контроллером ПК, а он уже управляет периферийными устройствами.

4 Высокая производительность МП

Высокая производительность МП

Высокая производительность МП –один из ключевых факторов в конкурентной борьбе производителей процессоров. Интуитивно понятно, что производительность процессора напрямую связана с количеством работы, вычислений, которые он может выполнить за единицу времени. Очень условно: Производительность = Кол-во инструкций / Время Мы будем беседовать о производительности на базе IA32 и IA32e архитектур. (IA32 with EM64T). Факторы влияющие на производительность процессора: Тактовая частота процессора Объем адресуемой памяти и скорость доступа к внешней памяти Скорость выполнения инструкций и полнота базового набора инструкций Использование внутренней памяти, распределение регистров Уровень конвейеризации Качество предсказания переходов Качество упреждающей выборки Суперскалярность Параллелизация и многоядерность

5 Тактовая частота: Поскольку процессор состоит из разных микросхем, и

Тактовая частота: Поскольку процессор состоит из разных микросхем, и

каждая работает разное время, то в процессоре существует таймер, который отвечает за синхронизацию работы микросхем, посылая периодический синхроимпульс. Его частота и называется тактовой частотой процессора. Объем адресуемой памяти и скорость доступа к памяти: 8086 мог одновременно работать всего с 4 сегментами по 64 КБ каждый и всего мог адресовать 1МБ памяти. 80286 – добавились новые системные регистры и новый режим работы с памятью в котором процессор мог адресовать 16МБ памяти. 80386 – первый 32-битный процессор, позволяет адресовать 4ГБ памяти технология EM64T (Extended Memory 64 Technology) – сняла и это ограничение.

6 Скорость выполнения инструкций и полнота базового набора инструкций:

Скорость выполнения инструкций и полнота базового набора инструкций:

(качество ALU ?) Производительность зависит от того, насколько качественно реализованы инструкции, насколько полно базовый набор инструкций покрывает все возможные задачи. CISC,RISC (complex, reduced instruction set computing) Современные Интел процессоры представляют собой гибрид CISC и RISC процессоров, перед исполнением преобразуют CISC инструкции в более простой набор RISC инструкций. В Pentium III новая технология SSE (Streaming SIMD Extensions), которая добавила в МП 8 128 битных регистра (XMM0-XMM7) и 70 новых инструкций в том числе для работы с вещественными числами. SSE2,SSE3,SSEE3,SSE4 – последующие расширения этой идеи.

7 Использование внутренней памяти, распределение регистров: Скорость

Использование внутренней памяти, распределение регистров: Скорость

доступа к внешней памяти значительно ниже скорости вычислений. Cоздание на процессоре кэш-памяти. Блоки оперативной памяти отображаются на быстрый кэш. «Попадание» и «промах» (cash miss). Различные виды кэш-памяти. полностью ассоциативная кэш-память (каждый блок может отображаться в любое место кэша) память с прямым отображением (каждый блок может отображаться в одно место) различные гибридные варианты (секторная память, память с множественно-ассоциативным доступом) Множественно-ассоциативный доступ – по младшим разрядам определяется строка кэша, где может отображаться данная память, но в этой строке может находиться несколько слов основной памяти, выбор из которых проводится на ассоциативной основе. Работа с регистрами: Технология EM64T – добавлены дополнительные системные регистры. Регистры – самая быстрая память процессора. Чем больше регистров, тем больше временных данных может быть размещено для вычислений в ALU.

8 Конвейер

Конвейер

instr. 6

Качество работы командного устройства (CU)

tick

Instruction fetch

Register fetch

Instruction decode

Execution

Data fetch

Write back

0

instr. 1

-

-

-

-

-

1

instr. 2

instr. 1

-

-

-

-

2

instr. 3

instr. 2

instr. 1

-

-

-

3

instr. 4

instr. 3

instr. 2

instr. 1

-

-

4

instr. 5

instr. 4

instr. 3

instr. 2

instr. 1

-

5

instr. 6

instr. 5

instr. 4

instr. 3

instr. 2

instr. 1

6

instr. 7

instr. 5

instr. 4

instr. 3

instr. 2

9 Качество конвейеризации, уровень параллелизма инструкций

Качество конвейеризации, уровень параллелизма инструкций

Конвейеризация предполагает, что последовательные инструкции будут перекрываться при выполнении. Выполнение типичной команды можно разделить на следующие этапы: выборка команды – IF; декодирование команды / выборка операндов из регистров - ID; выполнение операции / вычисление эффективного адреса памяти - EX; обращение к памяти - MEM; запоминание результата - WB. Конвейеризация улучшает пропускную способность процессора, но если инструкции зависят от результата предыдущих инструкций, то возникают задержки. Т.е. польза от конвейеризации определяется уровнем параллелизма инструкций.

10 Качество предсказания переходов: Инструкции могут быть зависимыми по

Качество предсказания переходов: Инструкции могут быть зависимыми по

данным и по управляющей логике программы. (Data dependence and control flow dependence). Эффективность конвейерных механизмов ограничивается различными условными переходами внутри программы. Механизм предсказания переходов (branch prediction). МП выбирает один из возможных направлений потока управления и продолжает выбирать инструкции и нагружать конвейеры МП работой. Ошибка предсказания (branch misprediction) вызывает большую задержку при выполнении программы, поскольку вызывают необходимость заново заполнить конвейеры МП. Существует также механизм предсказания цели ветвления (branch target prediction), который предсказывает безусловные переходы.

11 Качество упреждающей выборки: Поскольку программы часто работают с

Качество упреждающей выборки: Поскольку программы часто работают с

протяженными данными (структурами, массивами), то кэш оказывается неэффективным из-за большого количества промахов. Для преодоления этой проблемы был разработан механизм упреждающей выборки данных (data prefetching). МП, заметив тенденцию в обращении к памяти, пытается заранее закачать требуемую память в кэш. Помимо процессорного механизма упреждающей выборки есть программный механизм упреждающей выборки.

12 Суперскалярность: Суперскалярный процессор – это процессор способный

Суперскалярность: Суперскалярный процессор – это процессор способный

выполнять несколько операций за один такт. Несколько исполнительных устройств в ALU (execution unit) Основными компонентами суперскалярного процессора являются устройства для интерпретации команд, снабженные логикой, позволяющей определить, являются ли команды независимыми, и достаточное число исполняющих устройств. В исполняющих устройствах могут быть конвейеры. Первым суперскалярным процессором x86 архитектуры был Pentium. В нем исполнительный блок был реализован в виде двух параллельных конвейеров (U и V). U мог исполнять все инструкции, в то время как V – простейшие наиболее часто выполняемые инструкции. Выигрыш от суперскалярности также определяется уровнем параллелизма инструкций. Т.е. насколько последующая инструкция зависит от результатов выполнения предыдущей.

13 Упрощенная модель процессора

Упрощенная модель процессора

Внешняя память

Оперативная память (RAM)

Шина ввода-вывода

Устройство взаимодействия с внешней памятью

Система кэшей

Вычислительное устройство (ALU)

Управляющее устройство (CU)

Вычислительное устройство (ALU)

Регистры

Регистры

Упреждающая выборка

Конвейеризация, предсказание переходов

Суперскалярность

14 Параллелизация и многоядерность: Многозадачность, многопоточность

Параллелизация и многоядерность: Многозадачность, многопоточность

Одновременно выполняющиеся потоки конкурируют за ресурсы микропроцессора. Ммногоядерные МП (multi-core). Это процессор, который содержит несколько ядер (более или менее независимых процессоров) в одном пакете. Эти ядра содержат всю функциональность обычного процессора, но совместно используют системную шину и кэши. Также для увеличения производительности используются многопроцессорные решения. Современные системы имеют по паре двух, а то и четырехядерных МП.

15 Основные характеристики влияющие на производительность МП

Основные характеристики влияющие на производительность МП

Эффективность работы с кэш-памятью. Правильное предсказание переходов. Эффективность использования векторных инструкций. Эффективность параллелизации. Уровень параллелилизма.

16 Измерение производительности

Измерение производительности

Потребителям необходимы критерии определения производительности вычислительной системы. Репрезентативная выборка типичных задач. Универсальная схема тестирования Независимость от производителей МП Spec.org (Standart Performance Evaluated Corporation) – некоммерческая организация для подготовки, поддержки и сопровождения стандартного набора тестов для сравнения производительности различных вычислительных систем. Эта организация разрабатывает стандартные сюиты и публикует результаты измерений. CPU2006 – разработана для измерения производительности. Может быть использована для сравнения работы программ выполняемых на различных вычислительных системах. CINT2006 для целочисленных вычислений. CFP2006 для сравнения производительности работы с вещественными числами. OMP2001 – измеряет производительность тестов использующих OpenMP стандарт для параллельных вычислений с совместно используемой памятью (shared-memory parallel processing).

17 Место и роль компилятора

Место и роль компилятора

Компилятор — транслятор, который осуществляет перевод всей исходной программы в эквивалентную ей результирующую программу на языке машинных команд или на языке ассемблера. Играет ли компилятор какую-либо роль в борьбе за производительность МП? Компилятор используется во время тестирования и отладки функциональности новых МП. Только с помощью компилятора можно показать рост производительности МП связанный с новыми командами, увеличением количества регистров и т.п. Компилятор способен скрыть неудачи архитекторов.

18 Программа должна быть: Легко читаемой и модифицируемой Легко

Программа должна быть: Легко читаемой и модифицируемой Легко

отлаживаемой Быстро исполняемой Cовременный компилятор должен уметь: создавать исполняемый модуль под любую архитектуру варьировать уровни отладки и быстродействия. Чтобы использовать умело средства компилятора, программист должен как минимум: иметь представления о архитектуре, на которой будет использоваться его программа. ознакомиться с флагами компилятора. ознакомиться с основными техниками улучшения производительности, которые использует компилятор. ознакомиться с основными проблемами вызывающими замедление работы программы. знать примерные данные, с которыми будет работать программа. уметь пользоваться инструментами для анализа производительности программы.

19 Мы обсуждали факторы влияющие на производительность

Мы обсуждали факторы влияющие на производительность

В каких случаях компилятор способен помочь МП достичь наилучшей производительности? Тактовая частота процессора Объем адресуемой памяти и скорость доступа к внешней памяти Скорость выполнения инструкций и полнота базового набора инструкций Использование внутренней памяти, распределение регистров Уровень конвейеризации Качество предсказания переходов Качество упреждающей выборки Суперскалярность Параллелизация и многоядерность

20 Скорость выполнения инструкций и полнота базового набора инструкций

Скорость выполнения инструкций и полнота базового набора инструкций

В общем случае, одни и те же конструкции языка высокого уровня могут быть по разному реализованы в машинных кодах. Скалярные оптимизации Цикловые оптимизации Векторизация Межпроцедурный анализ … - все эти оптимизации призваны создать оптимальный набор машинных инструкций соответствующих коду программы.

21 Использование внутренней памяти, распределение регистров

Использование внутренней памяти, распределение регистров

Трансформация данных Оптимизации циклов (Перестановка циклов, объединение циклов // Loop interchange, loop fusion) Уровень конвейеризации За счет улучшения инструкционного параллелизма. Оптимизации циклов (Объединение циклов) Качество предсказания переходов Статический и динамический профилировщик Оптимизации циклов Межпроцедурный анализ, инлайнинг функций Качество упреждающей выборки Программная упреждающая выборка (Software prefetch) Суперскалярность Улучшение параллелизма инструкций Параллелизация и многоядерность Автоматическая параллелизация

22 Интеловские компиляторы

Интеловские компиляторы

Интел имеет С/C++ и Фортран для операционных платформ Windows, Linux и Mac OS. Для Windows INTEL компилятор сделан как настройка к Microsoft Visual Studio. Главной целью корпорации является высокая производительность компиляторов и совместимость с Microsoft Visual Studio на Windows платформе и gcc на Linux и Mac OS.

23 Оптимизации:

Оптимизации:

1.) Скалярные оптимизации Свертка констант, протяжка констант, протяжка копий (Constant folding, constant propagation, copy propagation) Удаление общих подвыражений (Common subexpression elimination) Удаление мертвого кода (Dead code elimination)

24 2.) Цикловые оптимизации Вынесение инвариантов цикла (Loop invariant

2.) Цикловые оптимизации Вынесение инвариантов цикла (Loop invariant

code motion) Вынесение условных переходов (Loop unswitching) Развертка цикла (Loop unrolling) Перестановка циклов (Loop interchange) Разбиение, объединение циклов (Loop distribution, loop fusion)

25 Помимо этих оптимизаций существуют и другие, порой очень разнообразные

Помимо этих оптимизаций существуют и другие, порой очень разнообразные

Strength reduction Scalar expansion Loop tiling Loop skewing Loop coalescing Loop collapsing и многие другие. Одна из основных проблем и задач компилятора – доказательство правомерности тех или иных оптимизаций и оценка их выгодности.

26 3.) Векторизация Векторизация, в компьютерной науке, это процесс

3.) Векторизация Векторизация, в компьютерной науке, это процесс

конвертации программы из скалярного вида, который выполняет операции с парой операндов в векторизованную программу в которой каждая инструкция выполняется с парой векторных операндов. DO I=1,100 A(I)=B(I) END DO Векторизация DO I=1,25 A(I:I+4)=B(I:I+4) END DO Влияние выравнивания (alignment) на производительность. Компилятор выполняет векторизацию, условную векторизацию.

27 4.)Автоматическая параллелизация Автоматическая параллелизация – это

4.)Автоматическая параллелизация Автоматическая параллелизация – это

процесс автоматического преобразования последовательного программного кода в многопоточный (multi-threaded) код для того чтобы использовать несколько вычислительных устройств одновременно. Актуально для современных многопроцессорных и многоядерных машин. OpenMP (Open Multi-Processing) – это программный интерфейс, который поддерживает многоплатформенное многопроцессорное программирование с общей памятью на C/C++ и Фортране на многих архитектурах.

28 5.)Оптимизация вызовов функций, межпроцедурный анализ

5.)Оптимизация вызовов функций, межпроцедурный анализ

Инлайнинг – эта оптимизация вставляет код функции вместо вызова функции. Частичный инлайнинг (partial inlining) – инлайнинг части вызываемой функции внутрь вызывающей. Протяжка аттрибутов функций. Протяжка аттрибутов переменных. Изменение области видимости переменных. LPT анализ Анализ потока данных Функции, используемые только в одной программе получают атрибут static. Удаление неиспользуемых глобальных переменных. Удаление мертвого кода. Протяжка информации о выравнивании аргументов. Быстрый анализ типов. (Rapid type analysis)

29 Статический и динамический профилировщики

Статический и динамический профилировщики

Подсчет «весовых» характеристик – вероятность перехода, вес базового блока. Используется при многих оптимизациях (трансформация данных). Статический профилировщик вычисляет характеристики анализируя исходный код программы. Динамический профилировщик работает в два прохода: создает инструментированную версию программы и прогоняет ее с неким репрезентативным набором данных, использует собранную динамическую информацию для оптимизации программы. Некоторые оптимизации работают только при наличии динамической информации (трансформация данных).

30 Зависимость основных характеристик компиляции

Зависимость основных характеристик компиляции

Производительность программы

Время компиляции

Размер кода

Отладка, надежность

31 Пошаговый алгоритм отладки/улучшения производительности программы

Пошаговый алгоритм отладки/улучшения производительности программы

1.) Проверка корректности (/Od, -O0) Версия 11.0 по умолчанию включает векторизатор. Для того чтобы выполнять программу на старых процессорах “-mia32” 2.) Отладка. -g или –debug [keyword] (all,full,minimal) 3.) Используйте стандартные опции оптимизации –O1, -O2, -O3 4.) Использование процессорно специфических опций -xSSE3, -xSSSE3, -xSSE4.2 Можно так-же использовать –xhost и в этом случае компилятор будет использовать наиболее продвинутые опции процессора на котором выполняется компиляция. 5.) Использование VTune Performance Analyzer. Нахождение горячих функций и мест, где тратиться наибольшее процессорное время.

32 Инструменты и методы используемые для оптимизации производительности

Инструменты и методы используемые для оптимизации производительности

программы.

Intel VTune Performance Analyzer – это инструмент предназначенный для анализа производительности программ. Он позволяет легко найти проблемные узкие места и проанализировать их. Для этого нужен только исполняемый файл. Желательно, чтобы он содержал информацию о строках кода.

33 Компиляторы Интел для высокопроизводительных вычислений
34 Компиляторы Интел для высокопроизводительных вычислений
35 6.) Добавление межпроцедурных оптимизаций –ipo 7.) Использование

6.) Добавление межпроцедурных оптимизаций –ipo 7.) Использование

динамического профилировщика. построение программы с опцией -prof-gen (программа с инструментированием) прогон с представительным набором данных (несколькими наборами) построение программы с опцией –prof-use 8.) использование автоматической параллелизации –parallel для автоматической распараллелизации циклов. 9.) использовать OPENMP директивы и опцию –openmp для генерации многопоточного кода

«Компиляторы Интел для высокопроизводительных вычислений»
http://900igr.net/prezentacija/obschestvoznanie/kompiljatory-intel-dlja-vysokoproizvoditelnykh-vychislenij-150660.html
cсылка на страницу
Урок

Обществознание

85 тем
Слайды
900igr.net > Презентации по обществознанию > Без темы > Компиляторы Интел для высокопроизводительных вычислений