РЕКЛАМА
ИНФОРМАЦИЯ
ПОЛЕЗНЫЕ ССЫЛКИ
Московский Форум Intel для разработчиков 2006

Готовимся к осенним гонкам DARPA Grand Challenge 2005: редакция THG посетила две команды

Rambler's Top100 Рейтинг@Mail.ru

БИЗНЕС

Московский IDF 2006: разработка многопоточных приложений, гонка DARPA и Wireless USB
Краткое содержание статьи: Второй репортаж с московского Форума Intel для разработчиков посвящён разработке многопоточных приложений, технологии Wireless USB и автомобильным гонкам DARPA Grand Challenge. Напомним, что последний московский форум Intel для разработчиков собрал ещё большее количество посетителей. Это первый Форум Intel для разработчиков, проходивший в Москве весной, а также первый форум длительностью три дня.

Московский IDF 2006: разработка многопоточных приложений, гонка DARPA и Wireless USB


Редакция THG,  19 мая 2006
Страница: Назад  1 2 Далее


Введение

В первом репортаже с московского Форума Intel для разработчиков мы рассказали подробности доклада Патрика Гелсингера, а также представили интересные новинки компании Kraftway. Второй репортаж посвящён разработке многопоточных приложений, технологии Wireless USB и автомобильным гонкам DARPA Grand Challenge.

Напомним, что последний московский форум Intel для разработчиков собрал ещё большее количество посетителей. Это первый Форум Intel для разработчиков, проходивший в Москве весной, а также первый форум длительностью три дня.

Разработка многопоточных приложений

Зачем нужна многопоточность?

Для многих из нас двуядерные процессоры давно перестали быть чем-то недосягаемым. Каждый из производителей, как Intel, так и AMD, предлагают сейчас довольно широкий ассортимент процессоров для рынков серверов и настольных систем. Двуядерными CPU с недавнего времени комплектуются даже ноутбуки. Не мудрено, ведь будущее, как нас уверяют производители, именно за многоядерными технологиями. Сейчас два ядра, потом (уже в конце 2006 года) четыре... Но что мы получаем от этой многоядерности? Конечно, два ядра заметно ускоряют работу системы, ведь на каждом из ядер может обрабатываться отдельная задача.

Но как быть с задачами, особо требовательными к вычислительной способности процессора (кодирование видео, например)? Ведь прирост производительности будет не велик, если они будут обрабатываться одним ядром. А как сделать так, чтобы задача обрабатывалась всеми ядрами? Именно распараллеливание задачи на отдельные потоки может дать значительный прирост производительности. Сейчас, когда многоядерность набирает обороты, задача обеспечения многопоточности актуальна для всех разработчиков программного обеспечения. Важно не только создавать новые многопоточные приложения, но и оптимизировать под многоядерные процессоры старое программное обеспечение. В этом могут помочь специальные программные продукты, о которых и пойдёт речь в данной статье.

Использование преимуществ программного параллелизма на многоядерных платформах Intel

Именно так звучала тема доклада ведущего инженера Intel подразделения Intel Software and Solutions Group Вэй Ли (Wei Li). Надо отдать должное Intel: выпустив вспомогательное программное обеспечение для оптимизации приложений под свою новую микропроцессорную архитектуру Intel Core, она значительно облегчила жизнь разработчикам программных продуктов. Очень продуманное решение - помогать разработчикам выжать максимум из своих процессоров, не так ли?

Использование преимуществ программного параллелизма на многоядерных платформах Intel

В данном случае Intel предстаёт перед нами не только в качестве производителя "железа", но и в качестве разработчика качественных программных продуктов. Инженеры подразделения Intel Software and Solutions Group не только разрабатывают платформенное ПО - отдельное внимание уделяется вспомогательному ПО для разработчиков.

Использование преимуществ программного параллелизма на многоядерных платформах Intel

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

Использование преимуществ программного параллелизма на многоядерных платформах Intel

Все эти средства Intel объединила в одном пакете программ.

Архитектурный анализ ПО: Intel VTune Analyzers

Целью данного этапа является поиск участков программы, требующих наибольшей вычислительной мощности. Здесь анализируется архитектура программного продукта. Для этого можно воспользоваться специальным инструментом-анализатором производительности Intel VTune, входящим в пакет Intel. С его помощью анализируется функциональная структура приложения, количество обращений к каждой функции, время их выполнения. На основе полученных данных с помощью утилиты Call Graph, входящей в данный инструмент, строится граф обращений к функциям.

Граф

В верхней части скриншота видна таблица с вызываемыми функциями, относительным временем их выполнения и количеством обращений к ним. Ниже приведён граф вызовов функций и выделена одна из ветвей, которая требует наибольших вычислительных затрат.

После определения того, что следует распараллелить, можно перейти к следующему этапу.

Организация потоков: компиляторы Intel

Отыскав нужный участок кода программы, нужно определить вычислительные потоки. Для этого существует технология OpenMP, разработанная ещё в далёком 1997 году. Работа приложения, использующего OpenMP, начинается с основного потока, являющегося единственным. В приложении могут содержаться параллельные регионы, входя в которые, основной поток создает группы потоков. В конце параллельного региона группы потоков останавливаются, а выполнение основного потока продолжается. Важным моментом здесь является синхронизация отдельных потоков.

OpenMP прост в использовании. В него входят два базовых типа конструкций: директивы pragma и функции исполняющей среды OpenMP. Директивы pragma, указывают компилятору на реализацию параллельного выполнения блоков кода. Все эти директивы начинаются с #pragma omp. Функции OpenMP служат для изменения и получения параметров среды. Кроме того, OpenMP включает API-функции для поддержки некоторых типов синхронизации.

Для реализации параллельного выполнения блоков приложения нужно просто добавить в код директивы pragma и, если нужно, воспользоваться функциями библиотеки OpenMP.

OpenMP

Компиляторы Intel C++ Compiler и Intel Visual Fortran Compiler снабжены поддержкой технологии OpenMP, следовательно, с их помощью можно организовать потоки для каждого ядра процессора. Кроме того, компиляторы наилучшим образом оптимизируют ваше приложение для архитектуры процессоров Intel

Отладка: Intel Thread Checker

Отдельный поток на каждое ядро - это полдела. Ещё на этапе организации потоков программист должен учесть так называемые "гонки данных" и блокировки. Допустим, один из потоков в процессе вычислений должен рассчитать значение некоторой переменной, а затем эта переменная должна быть использована во втором потоке, вычисляемом на другом ядре. А теперь представьте, что второе ядро уже запросило переменную, а первое не успело рассчитать верное значение. Такая ошибка может привести к некорректной работе приложения. Подобные случаи очень сложно отслеживать и исключать в процессе разработки приложения. Конечно, можно каким-либо образом свести к минимуму использование общих ресурсов, но избавиться от этого полностью попросту невозможно. Синхронизация вычислений на отдельных ядрах является важным моментом.

Но и на этот случай у Intel кое-что припасено - Intel Thread Checker, инструмент отладки.

При помощи этого инструмента очень легко проанализировать и исправить код написанного многопоточного приложения.

Thread Checker последовательно анализирует код, написанного приложения и помечает те места в программе, где возможно возникновение гонок или взаимоблокировок.

Thread

Таким образом, программист выделил потоки на каждое ядро, исправил все возможные конфликтные ситуации. Что же теперь?

Оптимизация производительности: Intel Thread Profiler

Следующим шагом будет оптимизация производительности приложения. Выделяя потоки, а затем исправляя возможные конфликты, мы можем получить далеко не лучшее приложение, производительность которого, возможно, будет далека от ожидаемой. Причина этого может быть в том, что отдельные потоки из-за взаимной синхронизации вынуждены ожидать другие. Из-за этого простоя общая производительность может значительно упасть, да и аппаратная часть простаивает без работы. Возможно, некоторые распараллеленные и отлаженные участки кода вовсе не следовало разбивать на потоки, ведь время выполнения этого же кода в один поток соизмеримо. И тут Intel облегчает жизнь разработчику. В пакет входит инструмент Intel Thread Profiler. С его помощью программист может отследить те участки уже распараллеленного и отлаженного кода, которые пагубно сказываются на производительности всего приложения, которые приводят к наибольшим издержкам.

Thread

Thread Profiler определяет в стеке вызова функций те синхронизирующие примитивы, которые далеко не лучшим образом сказываются на производительности. Обнаружив эти примитивы, разработчик может внести соответствующие изменения в код дабы увеличить производительность приложения.

Заключение по разработке многопоточных приложений

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

Intel предоставила отличный пакет программ в помощь разработчикам, который способен подтолкнуть особо консервативных к переходу на многопоточность. Использовать инструменты очень легко, и процесс разработки ПО с их помощью заметно упрощается. Такая политика Intel, на наш взгляд, положительно скажется не только на её репутации, но и на популярности её процессоров.
Страница: Назад  1 2 Далее


СОДЕРЖАНИЕ

Обсуждение в Клубе Экспертов THG Обсуждение в Клубе Экспертов THG


Свежие статьи
RSS
Logitech G910 Orion Spectrum: обзор и тест игровой клавиатуры Обзор Google Home Mini: первый соперник Amazon Echo Dot 7 альтернатив Apple AirPods: беспроводные наушники-вкладыши Canon EOS 200D: компактная зеркалка с отличным качеством съёмки Fossil Q Marshal: смарт-часы с упором на внешность
Обзор Logitech G910 Orion Spectrum Обзор Google Home Mini 7 альтернатив Apple AirPods Обзор зеркальной фотокамеры Canon EOS 200D Обзор смарт-часов Fossil Q Marshal
РЕКЛАМА
РЕКОМЕНДУЕМ ПРОЧЕСТЬ!

История мейнфреймов: от Harvard Mark I до System z10 EC
Верите вы или нет, но были времена, когда компьютеры занимали целые комнаты. Сегодня вы работаете за небольшим персональным компьютером, но когда-то о таком можно было только мечтать. Предлагаем окунуться в историю и познакомиться с самыми знаковыми мейнфреймами за последние десятилетия.

Пятнадцать процессоров Intel x86, вошедших в историю
Компания Intel выпустила за годы существования немало процессоров x86, начиная с эпохи расцвета ПК, но не все из них оставили незабываемый след в истории. В нашей первой статье цикла мы рассмотрим пятнадцать наиболее любопытных и памятных процессоров Intel, от 8086 до Core 2 Duo.

ССЫЛКИ
Реклама от YouDo
Дизайн панельной квартиры П-46 на http://remont.youdo.com/interior/apartments/panelhouse/type/p46/.
Ремонт котлов Mora https://youdo.com/lp-remont-kotlov-Mora/.