Multithreads et concurrence
5 livres et 3 critiques, dernière mise à jour le 14 octobre 2022 , note moyenne : 4.5
Intel Threading Building Blocks
Outfitting C++ for Multi-Core Processor Parallelism
Résumé de l'éditeur
Multi-core chips from Intel and AMD offer a dramatic boost in speed and responsiveness, and plenty of opportunities for multiprocessing on ordinary desktop computers. But they also present a challenge: More than ever, multithreading is a requirement for good performance. This guide explains how to maximize the benefits of these processors through a portable C++ library that works on Windows, Linux, Macintosh, and Unix systems. With it, you'll learn how to use Intel Threading Building Blocks (TBB) effectively for parallel programming -- without having to be a threading expert.
Written by James Reinders, Chief Evangelist of Intel Software Products, and based on the experience of Intel's developers and customers, this book explains the key tasks in multithreading and how to accomplish them with TBB in a portable and robust manner. With plenty of examples and full reference material, the book lays out common patterns of uses, reveals the gotchas in TBB, and gives important guidelines for choosing among alternatives in order to get the best performance.
You'll learn how Intel Threading Building Blocks:
- Enables you to specify tasks instead of threads for better portability, easier programming, more understandable source code, and better performance and scalability in general
- Focuses on the goal of parallelizing computationally intensive work to deliver high-level solutions
- Is compatible with other threading packages, and doesn't force you to pick one package for your entire program
- Emphasizes scalable, data-parallel programming, which allows program performance to increase as you add processors
- Relies on generic programming, which enables you to write the best possible algorithms with the fewest constraints
Any C++ programmer who wants to write an application to run on a multi-core system will benefit from this book. TBB is also very approachable for a C programmer or a C++ programmer without much experience with templates. Best of all, you don't need experience with parallel programming or multi-core processors to use this book.
Édition : O'Reilly UK - 332 pages, 1re édition, 1er juillet 2007
ISBN10 : 0596514808 - ISBN13 : 9780596514808
- Why Threading Building Blocks?
- Thinking Parallel
- Basic Algorithms
- Advanced Algorithms
- Containers
- Scalable Memory Allocation
- Mutual Exclusion
- Timing
- Task Scheduler
- Keys to Success
- Examples
- History and Related Projects
Les explications sont claires, autant que cela puisse l'être. En revanche, sans exemple complet, c'est difficile à comprendre (les exemples complets ne sont donnés que dans l'avant-dernier chapitre).
Dans le côté négatif, il y a la qualité du code dans certains cas. Utiliser climits à la place de limits , on a vu mieux en C++. Il n'y a pas d'explication complète avec calcul du gain attendu lors de l'utilisation de la focntion parallel_scan , il m'a fallu plusieurs minutes pour comprendre. A part ces deux points, je ne trouve pas de points vraiment négatifs.
Bref, un livre indispensable pour qui veut utiliser cette bibliothèque.
Commenter Signaler un problème
Multi-core chips from Intel and AMD offer a dramatic boost in speed and responsiveness, and plenty of opportunities for multiprocessing on ordinary desktop computers. But they also present a challenge: More than ever, multithreading is a requirement for good performance. This guide explains how to maximize the benefits of these processors through a portable C++ library that works on Windows, Linux, Macintosh, and Unix systems. With it, you'll learn how to use Intel Threading Building Blocks (TBB) effectively for parallel programming -- without having to be a threading expert.
Written by James Reinders, Chief Evangelist of Intel Software Products, and based on the experience of Intel's developers and customers, this book explains the key tasks in multithreading and how to accomplish them with TBB in a portable and robust manner. With plenty of examples and full reference material, the book lays out common patterns of uses, reveals the gotchas in TBB, and gives important guidelines for choosing among alternatives in order to get the best performance.
You'll learn how Intel Threading Building Blocks:
- Enables you to specify tasks instead of threads for better portability, easier programming, more understandable source code, and better performance and scalability in general
- Focuses on the goal of parallelizing computationally intensive work to deliver high-level solutions
- Is compatible with other threading packages, and doesn't force you to pick one package for your entire program
- Emphasizes scalable, data-parallel programming, which allows program performance to increase as you add processors
- Relies on generic programming, which enables you to write the best possible algorithms with the fewest constraints
Any C++ programmer who wants to write an application to run on a multi-core system will benefit from this book. TBB is also very approachable for a C programmer or a C++ programmer without much experience with templates. Best of all, you don't need experience with parallel programming or multi-core processors to use this book.
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
The Art of Concurrency
A Thread Monkey's Guide to Writing Parallel Applications
Résumé de l'éditeur
Édition : O'Reilly - 285 pages, 1re édition, 1er juin 2009
ISBN10 : 0596521537 - ISBN13 : 9780596521530
- Chapter 1 : Want to Go Faster? Raise Your Hands if You Want to Go Faster!
- Some Questions You May Have
- Four Steps of a Threading Methodology
- Background of Parallel Algorithms
- Shared-Memory Programming Versus Distributed-Memory Programming
- This Book's Approach to Concurrent Programming
- Chapter 2 : Concurrent or Not Concurrent?
- Design Models for Concurrent Algorithms
- What's Not Parallel
- Chapter 3 : Proving Correctness and Measuring Performance
- Verification of Parallel Algorithms
- Example: The Critical Section Problem
- Performance Metrics (How Am I Doing?)
- Review of the Evolution for Supporting Parallelism in Hardware
- Chapter 4 : Eight Simple Rules for Designing Multithreaded Applications
- Rule 1: Identify Truly Independent Computations
- Rule 2: Implement Concurrency at the Highest Level Possible
- Rule 3: Plan Early for Scalability to Take Advantage of Increasing Numbers of Cores
- Rule 4: Make Use of Thread-Safe Libraries Wherever Possible
- Rule 5: Use the Right Threading Model
- Rule 6: Never Assume a Particular Order of Execution
- Rule 7: Use Thread-Local Storage Whenever Possible or Associate Locks to Specific Data
- Rule 8: Dare to Change the Algorithm for a Better Chance of Concurrency
- Summary
- Chapter 5 : Threading Libraries
- Implicit Threading
- Explicit Threading
- What Else Is Out There?
- Domain-Specific Libraries
- Chapter 6 : Parallel Sum and Prefix Scan
- Parallel Sum
- Prefix Scan
- Selection
- A Final Thought
- Chapter 7 : MapReduce
- Map As a Concurrent Operation
- Reduce As a Concurrent Operation
- Applying MapReduce
- MapReduce As Generic Concurrency
- Chapter 8 : Sorting
- Bubblesort
- Odd-Even Transposition Sort
- Shellsort
- Quicksort
- Radix Sort
- Chapter 9 : Searching
- Unsorted Sequence
- Binary Search
- Chapter 10 : Graph Algorithms
- Depth-First Search
- All-Pairs Shortest Path
- Minimum Spanning Tree
- Chapter 11 : Threading Tools
- Debuggers
- Performance Tools
- Anything Else Out There?
- Go Forth and Conquer
Basé principalement sur les applications multithreadées, le livre couvre pthread, les Windows threads, OpenMP et Intel Threading Building Blocks. On y parle aussi des applications multi-processus, lorsqu'il y a des indications spécifiques et différentes des applications multithreads.
Le livre commence après deux chapitres sur les actions à mener avant de parallélisé son application, ainsi que ce qui pourra être paralléliser et ce qui ne pourra jamais l'être. Avant les algorithmes usuels parallélisables, l'auteur utilise trois autres chapitres pour décrire sa méthodologie permettant d'atteindre notre objectif. L'assurance de la correction (i.e. vérifier si le comportement reste identique) est une tâche difficile, donc 8 règles sont proposées pour aider, et enfin les bibliothèques support (pthread, Windows thread, OpenMP et TBB) sont exposées.
La plus grande partie du livre est consacrée, comme je l'ai suggéré, à des algorithmes somme toute simples, mais qui peuvent être parallélisés : sommes et "scans", mapreduce, tri, recherche et algorithmes de graphes. Chaque fois, plusieurs algorithmes sont tout d'abord codés en sériel, puis parallélisés avec potentiellement plusieurs bibliothèques support. Enfin, à chaque fois l'efficacité, la simplicité, la potabilité et la scalabilité sont étudiés. Cela sert à prendre du recul sur l'opération effectuée.
Le dernier chapitre est une revue rapide des outils additionnels qu'on peut utiliser ( i.e. , non obligatoires). Il s'agit principalement d'outils Intel, surtout car Intel propose de nombreux outils parmi les meilleurs.
Même si l'auteur travaille pour Intel, les outils de celui-ci ne sont pas plus mis en avant que les autres. Le ton global du livre est adapté, pas trop sérieux, pas trop copain-copain, juste ce qu'il faut.
En résumé, un très bon livre pour qui veut paralléliser son application.
Free lunch is over,, it's time to go concurrent. The Art of Concurrency addresses the need for a workflow to develop concurrent/parallel applications.
Mainly based on multithreaded applications, the book covers pthreads, Windows threads, OpenMP or Intel Threading Building Blocks library. It also covers some part of multiprocess applications if there are differences with threaded ones.
The book starts with two chapers on what actions to take before parallelizing and what can and what cannot. Before the usual algorithms that can be parallelized, the author takes three chapters to explain how you may achieve your goal. Ensuring correctness is a difficult task, so the book gives 8 rules to help and then an explanation of several support libraries that can be used.
The biggest part of the book, as I've hinted, is dedicated to simple but usual algorithms that may be parallelized: sums and scans, mapreduce, sorts, searches, and graph algorithms. Each time, several different algorithms are first coded in a serial way and then parallelized with possibly different support libraries. Also each time, the efficiency, the simplicity, the portability and the scalability conclude the sub art: it helps standing back.
The last chapter is a small overview of the additional tools that you may use (but they are not mandatory). They are mainly Intel's tools, but it's mainly because Intel provides the developer with some of the best tools.
Although the author works for Intel, he doesn't expose Intel tools more than others. The book tone is adequate, not too much serious, not like a "For Dummies", so just enjoyable.
If you need advices to parallelize your applications and you don't want to buy Patterns for Parallel Programming , buy this one (well, buy it anyway).
Commenter Signaler un problème
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
C++ Concurrency in action
Pratical multithreading
Résumé de l'éditeur
Sans supposer que vous avez une expérience en la matière, « C++ Concurrency in Action » vous permet progressivement d'écrire des applications multithreads robustes et élégantes en C++11. Vous pourrez explorer le modèle de mémoire des threads, la nouvelle bibliothèque supportant le multithreading et le lancement basique de threads et des fonctionnalités de synchronisation.
Au cours de la lecture, vous apprendrez comment naviguer dans les points les plus délicats de la programmation concurrente.
Édition : Manning Publications - 352 pages, 1re édition, 8 mars 2012
ISBN10 : 1933988770 - ISBN13 : 9781933988771
- Hello, world of concurrency in C++!
- Managing threads
- Sharing data between threads
- Synchronizing concurrent operations
- The C++ memory model and operations on atomic types
- Designing lock-based concurrent data structures
- Designing lock-free concurrent data structures
- Designing concurrent code
- Advanced thread management
- Testing and debugging multithreaded applications
- Appendix A - Brief reference for some C++11 language features
- Appendix B - Brief comparison of concurrency libraries
- Appendix C - A message-passing framework and complete ATM example
- Appendix D - C++ Thread Library reference
C'est toujours difficile quand on a déjà une certaine connaissance du domaine de constater à quel point un ouvrage est accessible aux néophytes. L'exposé m'a semblé clair, cohérent et sans défaut majeur tant quand il traitait de choses que je connaissais déjà que quand il traitait de sujets que je savais ne pas maîtriser.
Le livre ne se contente pas d'expliquer comment utiliser ce que fournit le C++11, mais il traite aussi plus largement de la conception, du test et du débogage des applications multithreads. Celui du test et du débogage me semble être le plus complet que j'aie vu imprimé. Le traitement de la conception est lui un peu court, mais c'est un sujet qui mérite au moins un livre pour lui.
Malheureusement, la bibliographie est quasiment absente et se limite presque aux ouvrages cités. Et on n'y trouvera donc pas de ressources pour compléter le traitement de la conception ou de tout autre sujet que l'on désire approfondir. Autre chose importante dans un livre de référence, l'index. L'index est fortement hiérarchisé, ce qui fait que par exemple pour trouver l'explication de la relation « happens-before », il faut chercher à « M, memory model, acquire-release ordering, and happens-before » et il n'y a rien à « H, happens-before » qui renvoie à « memory model ».
L'exposé est trop rapide pour recommander le livre comme introduction à quelqu'un qui ne connaît rien du multithread, mais un néophyte motivé doit pouvoir s'en sortir avec. Si ce n'est peut-être pas la référence ultime sur le multithread en C++11, c'est principalement qu'une telle référence devra intégrer l'expérience d'une communauté plus large que celle dans laquelle ces fonctionnalités ont été conçues. En attendant que cette expérience existe, « C++ Concurrency in action » fera parfaitement l'affaire et met la barre haut pour celui qui désirera écrire cette référence ultime.
Commenter Signaler un problème
Sans supposer que vous avez une expérience en la matière, « C++ Concurrency in Action » vous permet progressivement d'écrire des applications multithreads robustes et élégantes en C++11. Vous pourrez explorer le modèle de mémoire des threads, la nouvelle bibliothèque supportant le multithreading et le lancement basique de threads et des fonctionnalités de synchronisation.
Au cours de la lecture, vous apprendrez comment naviguer dans les points les plus délicats de la programmation concurrente.
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
The Art of Multiprocessor Programming
Résumé de l'éditeur
Édition : Morgan Kaufmann - 536 pages, 2e édition, 5 juin 2012
ISBN10 : 0123973376 - ISBN13 : 9780123973375
Commenter Signaler un problème
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
An Introduction to Parallel Programming
Résumé de l'éditeur
Édition : Morgan Kaufmann - 392 pages, 2e édition, 21 janvier 2011
ISBN10 : 0123742609 - ISBN13 : 9780123742605
Commenter Signaler un problème
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?