Параллельное программирование на C++ с помощью библиотеки TBB
Здесь можно купить книгу "Параллельное программирование на C++ с помощью библиотеки TBB " в печатном или электронном виде. Также, Вы можете прочесть аннотацию, цитаты и содержание, ознакомиться и оставить отзывы (комментарии) об этой книге.
Место издания: Москва
ISBN: 978-5-97060-864-7
Страниц: 675
Артикул: 95220
Возрастная маркировка: 16+
Краткая аннотация книги "Параллельное программирование на C++ с помощью библиотеки TBB"
Эта книга представляет собой современное руководство для всех пишущих на C++ программистов, которые хотят научиться работать с библиотекой Threading Building Blocks (TBB). Написанная экспертами по TBB и параллельному программированию, она вобрала в себя их многолетний коллективный опыт разработки и преподавания параллельного программирования с помощью TBB. Излагаемый материал представлен в доступной форме. В книге имеются многочисленные примеры и рекомендации, которые помогут вам в полной мере овладеть TBB и задействовать всю мощь параллельных систем. Книга начинается с описания базовых параллельных алгоритмов и средств распараллеливания, имеющихся в стандартной библиотеке шаблонов C......Вы узнаете об основах управления памятью, работе со структурами данных и решении типичных проблем синхронизации. Затем эти идеи применяются к более сложным системам, на примере которых объясняются компромиссы во имя производительности, общеупотребительные паттерны параллельного программирования, управление потоками и накладные расходы, а также применение TBB к программированию гетерогенных систем и систем на кристалле.
Содержание книги "Параллельное программирование на C++ с помощью библиотеки TBB "
От издательства
Об авторах
Благодарности
Предисловие
Что такое TBB
Структура книги и предисловия
Мыслите параллельно
Мотивы, стоящие за библиотекой TBB
Введение в параллельное программирование
Локальность и месть кешей
Введение в векторизацию (SIMD)
Введение в средства C++ (в объеме, необходимом для работы с TBB)
Резюме
Дополнительная информация
ЧАСТЬ I
Глава 1. Приступаем: «Hello, TBB!»
Почему именно Threading Building Blocks?
Библиотека Threading Building Blocks (TBB)
Да начнем же уже!
Более полный пример
Резюме
Глава 2. Обобщенные параллельные алгоритмы
Функциональный параллелизм на уровне задач
Циклы: parallel_for, parallel_reduce и parallel_scan
Варить до готовности: parallel_do и parallel_pipeline
Резюме
Дополнительная информация
Глава 3. Потоковые графы
Зачем использовать графы для выражения параллелизма?
Основы интерфейса потоковых графов в TBB
Более сложный пример потокового графа данных
Частный случай – графы зависимостей
Дополнительные сведения о потоковых графах в TBB
Резюме
Глава 4. TBB и параллельные алгоритмы стандартной библиотеки шаблонов C
Какое отношение библиотека STL имеет к этой книге?
Аналогия для осмысления политик выполнения в Parallel STL
Простой пример – алгоритм std::for_each
Какие алгоритмы предоставляет реализация Parallel STL?
Нестандартные итераторы открывают дополнительные способы использования
Некоторые наиболее полезные алгоритмы
Политики выполнения в деталях
Какую политику выполнения использовать?
Другие способы ввести SIMD-параллелизм
Резюме
Дополнительная информация
Глава 5. Синхронизация – почему ее нужно избегать и как это сделать
Сквозной пример: гистограмма изображения
Небезопасная параллельная реализация
Первая безопасная параллельная реализация: крупнозернистая блокировка
Вторая безопасная параллельная реализация: мелкозернистая блокировка
Третья потокобезопасная параллельная реализация: атомарные переменные
Улучшенная параллельная реализация: приватизация и редукция
Самая простая параллельная реализация: шаблон редукции
Подведем итоги
Резюме
Дополнительная информация
Глава 6. Структуры данных для конкурентного программирования
Основы важнейших структур данных
Конкурентные контейнеры
Резюме
Глава 7. Масштабируемое выделение памяти
Выделение памяти в современном C
Масштабируемое выделение памяти: что
Масштабируемое выделение памяти: почему
Альтернативы масштабируемому выделению памяти: какие
К вопросу о компиляции
Самый популярный способ использования (библиотека прокси для C/C++): как
Функции C: масштабируемые распределители памяти для C
Классы C
scalable_allocator
tbb_allocator
zero_allocator
cached_aligned_allocator
Избирательная подмена new и delete
Настройка производительности: некоторые рычаги управления
Резюме
Глава 8. TBB и параллельные паттерны
Параллельные паттерны и параллельные алгоритмы
Паттерны определяют классификацию алгоритмов, проектных решений и т.д
Паттерны, которые работают
Параллелизм данных одерживает победу
Паттерн Вложенность
Паттерн Отображение
Паттерн Куча работ
Паттерны редукции (Редукция и Сканирование)
Паттерн Разветвление–соединение
Паттерн Разделяй и властвуй
Паттерн Ветви и границы
Паттерн Конвейер
Паттерн Событийно-управляемая координация (реактивные потоки)
Резюме
Дополнительная информация
ЧАСТЬ II
Глава 9. Столпы компонуемости
Что такое компонуемость?
Благодаря каким особенностям библиотека TBB является компонуемой
Соберем все вместе
Забегая вперед
Резюме
Дополнительная информация
Глава 10. Использование задач для создания собственных алгоритмов
Сквозной пример: вычисление последовательности
Высокоуровневый подход: parallel_invoke
Высший среди низших: task_group
Низкоуровневый интерфейс: часть первая – блокировка задач
Низкоуровневый интерфейс задач: часть вторая – продолжение задачи
Низкоуровневый интерфейс задач: часть третья – рециклинг задач
Контрольный список для интерфейса задач
И еще одно: FIFO-задачи (типа запустил и забыл)
Применение низкоуровневых средств на практике
Резюме
Дополнительная информация
Глава 11. Управление количеством потоков
Краткий обзор архитектуры планировщика TBB
Интерфейсы для управления количеством задач
Рекомендации по заданию количества потоков
Когда НЕ следует управлять количеством потоков
Что не так?
Резюме
Глава 12. Применение изоляции работы для обеспечения корректности и повышения производительности
Изоляция работ для обеспечения корректности
Использование арен задач для изоляции: обоюдоострый меч
Резюме
Дополнительная литература
Глава 13. Привязка потока к ядру и задачи к потоку
Создание привязки потока к ядру
Создание привязки задачи к потоку
Когда и как следует использовать средства привязки в TBB?
Резюме
Дополнительная информация
Глава 14. Приоритеты задач
Поддержка невытесняющих приоритетов в классе задач TBB
Задание статических и динамических приоритетов
Два простых примера
Реализация приоритетов без поддержки со стороны задач TBB
Резюме
Дополнительная информация
Глава 15. Отмена и обработка исключений
Как отменить коллективную работу
Отмена задач в деталях
Обработка исключений в TBB
Написание собственных классов исключений TBB
Соберем все вместе: компонуемость, отмена и обработка исключений
Резюме
Дополнительная информация
Глава 16. Настройка TBB-алгоритмов: зернистость, локальность, параллелизм и детерминированность
Зернистость задач: какой размер достаточен?
Выбор диапазонов и разбивателей для циклов
Настройка конвейеров в TBB: количество фильтров, режимы и маркеры
В глубоких водах
Резюме
Дополнительная информация
Глава 17. Потоковые графы: дополнительные сведения
Оптимизация зернистости, локальности и степени параллелизма
Рекомендации по работе с потоковыми графами: что полезно, а что вредно
Введение в Intel Advisor: Flow Graph Analyzer
Резюме
Дополнительная информация
Глава 18. Дополнение потоковых графов асинхронными узлами
Пример из асинхронного мира
Зачем и когда использовать async_node?
Более реалистичный пример
Резюме
Дополнительная информация
Глава 19. Накачанные потоковые графы: узлы OpenCL
Пример «Hello OpenCL_Node»
Где исполняется наше ядро?
Возвращаясь к более реалистичному примеру из главы 18
Дьявол кроется в деталях
Еще о выборе устройства
Предупреждение по поводу порядка
Резюме
Дополнительная информация
Глава 20. TBB в системах с архитектурой NUMA
Определение топологии платформы
Привлекаем hwloc и TBB к совместной работе
Более сложные альтернативы
Резюме
Дополнительная информация
Приложение А. История и предшественники
Десятилетие «от птенца к орлу»
Источники идей TBB
Приложение В. TBB в кратком изложении
Отладка и условный код
Макросы ознакомительных средств
Диапазоны
Разбиватели
Алгоритмы
Потоковый граф
Выделение памяти
Контейнеры
Поточно-локальная память (TLS)
Хронометраж
Группы задач: использование планировщика с заимствованием задач
Планировщик задач: точный контроль над планировщиком с заимствованием
задач
Настройки плавающей точки
Исключения
Потоки
Parallel STL
Глоссарий
Предметный указатель
Все отзывы о книге Параллельное программирование на C++ с помощью библиотеки TBB
С книгой "Параллельное программирование на C++ с помощью библиотеки TBB" читают
Внимание!
При обнаружении неточностей или ошибок в описании книги "Параллельное программирование на C++ с помощью библиотеки TBB (автор Майкл Восс, Рафаэль Асенхо, Джеймс Рейндерс)", просим Вас отправить сообщение на почту help@directmedia.ru. Благодарим!
и мы свяжемся с вами в течение 15 минут
за оставленную заявку