На сегодняшний день системы, построенные на основе многоядерной архитектуры, набирают все большую популярность. Эта книга поможет разработчикам программного обеспечения, используя многопоточность, создать высокопроизводительные приложения на основе многоядерной архитектуры Intel. Книга позволяет читателю на практике освоить основы параллельного программирования, программирование с использованием API, интерфейс OpenMP, решение наиболее распространенных задач параллельного программирования; отладку и тестирование многопоточных приложений; инструменты разработки приложений.
Название: Многоядерное программирование Автор: Эхтер Ш., Роберте Дж. Издательство: Питер Год: 2010 Страниц: 316 Формат: DJVU Размер: 18,6 МБ ISBN: 978-5-388-00091-0 Качество: Отличное Серия или Выпуск: Библиотека программиста
Содержание:
Об авторах Предисловие Целевая аудитория Об этой книге Продукты для разработки программного обеспечения компании Intel Благодарности От издателя перевода Глава 1. Введение в многоядерную архитектуру Мотивация параллельности в программах Платформы параллельных вычислений Параллельные вычисления в микропроцессорах Разница между многоядерной архитектурой и технологией гиперпоточности Многопоточность на одноядерных и многоядерных платформах Понятие производительности Закон Амдала Рост возвращается - закон Гусгавсона Основные моменты Глава 2. Обзор систем поточной обработки Определение программных потоков Системный взгляд на программные потоки Потоки вне операционной системы Потоки внутри операционной системы Потоки внутри аппаратной части Что происходит при создании потока Модели прикладного программирования и поточная обработка Виртуальная среда: виртуальные машины и платформы Виртуализация на стадии выполнения Виртуализация систем Основные моменты Глава 3. Фундаментальные концепции параллельного программирования Разработка с ориентацией на потоки Декомпозиция по заданиям Декомпозиция по данным Декомпозиция по информационным потокам Следствия различных форм декомпозиции Основные проблемы. Эталоны параллельного программирования Исходная проблема - стохастическое выравнивание Анализ алгоритма стохастического выравнивания Альтернативный подход - параллельное стохастическое выравнивание Другие альтернативы Основные моменты Глава 4. Поточная обработка и конструкции параллельного программирования Синхронизация Критические секции Мертвая блокировка Примитивы синхронизации Семафоры Блокировки Условные переменные Сообщения Концепции управления потоками Ограждение Барьер Зависящие от реализации свойства потоков Основные моменты Глава 5. API поточной обработки API поточной обработки для Microsoft Windows API поточной обработки - Win32/MFC API поточной обработки для Microsoft. NET Framework Создание потоков Управление потоками Пулы потоков Синхронизация потоков POSIX-потоки Создание потоков Управление потоками Синхронизация потоков Сигнализация Компиляция и компоновка Основные моменты Глава 6. OpenMP - переносимое решение для поточной обработки Проблемы поточной обработки цикла Зависимости циклов Условия гонок Управление общими и приватными данными Планирование и разбиение циклов. Эффективное использование редукций Минимизация издержек многопоточности Секции разделения работы Программирование с прицелом на производительность Конструкции barrier и nowait Чередование однопоточного и многопоточного выполнения Загрузка и выгрузка данных Защита обновлений общих переменных Расширение Intel Taskqueuing для OpenMP Библиотечные функции OpenMP Переменные среды в OpenMP Компиляция Отладка Производительность Основные моменты Глава 7. Решение распространенных проблем параллельного программирования Слишком много потоков Гонки, мертвые и живые блокировки Мертвая блокировка Высококонфликтные блокировки Инверсия приоритета Решения для высококонфликтных блокировок Неблокирующие алгоритмы Проблема ABA Попеременное считывание строки кэша Проблема восстановления памяти Рекомендации Безопасные в отношении потоков функции и библиотеки Проблемы памяти Ширина полосы пропускания Работа с кэшем Конфликты памяти Проблемы кэша Ложное разделение Согласованность памяти Современная архитектура IA-32 Архитектура Itanium Языки высокого уровня Предотвращение остановок конвейера на архитектуре IA-32 Организация данных для достижения высокой производительности Основные моменты Глава 8. Приемы многопоточной отладки Общие приемы отладки Разработка с учетом отладки Расширение вашего приложения - использование буферов трассировки Отладка многопоточных приложений в Windows Окно потоков Точки отслеживания Фильтры точек прерывания Присваивание имен потокам Сводим все вместе Многопоточная отладка с использованием GDB Уведомление о создании потоков Получение списка всех потоков приложения Установка специфичных для потока точек прерывания Переключение между потоками Применение команд к группе потоков Основные моменты Глава 9. Основы архитектуры одноядерных процессоров Основы архитектуры процессоров Сравнение суперскалярной архитектуры и архитектуры EPIC Основные моменты Глава 10. Поточная обработка на многоядерных процессорах производства Intel Поточная обработка с позиции аппаратуры Поточная обработка от Intel Технология гиперпоточности Разница между многопроцессорностью и гиперпоточностью Архитектура гиперпоточности Многоядерные процессоры Архитектурные подробности Сравнение многопроцессорных и многоядерных систем Многоядерность для архитектуры Itanium Взаимодействие нескольких процессоров Обмен информацией между процессорами и многопоточное программирование Потребление энергии Показатели потребления энергии Снижение потребления энергии Что последует за многоядерной процессорной архитектурой? Основные моменты Глава 11. Продукты Intel для разработки программного обеспечения Обзор Исследования Создание Отладка Настройка Контролер потоков Intel Thread Checker Как это работает Советы по применению Использование контролера потоков с OpenMP Компиляторы производства Intel OpenMP Спекулятивные предварительные вычисления в программе Оптимизация компилятора и кэша Отладчик Intel Debugger Библиотеки производства Intel Библиотека математического ядра Встроенные примитивы производительности Проблемы параллельных программ при использовании параллельных библиотек Что дальше Блоки построения многопоточности от Intel Анализатор производительности Intel VTune Поиск узких мест Использование диаграммы вызовов для поиска точки создания потока Проверка баланса нагрузки Профилировщик потоков Intel Thread Profiler MPI-программирование Поддержка MPI компанией Intel Программа Intel trace Analyzer and Collector Основные моменты Словарь терминов Список литературы Книги и статьи Интернет-ресурсы Алфавитный указатель