-
Notifications
You must be signed in to change notification settings - Fork 0
Keuze technologie Multiregio shared memory variant
De voorgestelde mogelijkheden zijn:
- C++ threading
- Boost.Thread
- OpenMP
- TBB
Op basis van de ervaring van onze groep zijn er niet veel betere alternatieven beschikbaar. De eerste 2 zijn vrij gelijkaardig. Aangezien sommigen onder ons al ervaring hebben met C++ threading, is er niet echt een reden om voor Boost.Thread te kiezen.
Daarnaast is er nog een belangrijke factor: de Simulator zelf is ook geparalleliseerd. Hiervoor moet zowel OpenMP als TBB ondersteund worden. De gekozen oplossing moet dus compatibel zijn met beiden, en liefst zonder code te moeten schrijven afhankelijk van de gekozen library (i.e. macros). We vatten de compatibiliteit samen in een de volgende lijst. (Het eerste niveau staat voor de library voor Simulators onderling (i.e. MR), het tweede niveau staat voor de library gebruikt binnenin een Simulator).
-
std::thread
-
TBB: Mixen is meestal geen probleem, Intel probeert TBB up to date te houden met de nieuwste standaard. Indien mogelijk, prefereer
std::thread
.-
Mixing C++11 and TBB Threads: TBB doet zelfs moeite om de interface van
std::thread
na te bootsen, maar daar zijn toch wat foutjes mee. - TBB vs. C++11 concurrency: Bevestigt de conclusie hierboven. (Zie vooral de antwoorden van Intel werknemers).
-
Mixing C++11 and TBB Threads: TBB doet zelfs moeite om de interface van
-
OpenMP: Hier is de situatie lastiger. Er worden absoluut geen garanties gegeven. Sommigen raden aan om OpenMP te vervangen met TBB in een situatie als deze.
- OpenMP and C++11 multithreading: Helaas geen antwoord, maar biedt veel andere links.
- Can I safely use OpenMP with C++11: Samengevat: nee. OpenMP is voor HPC en niet voor algemeen threading gebruik. Veel mensen raden TBB aan.
-
TBB: Mixen is meestal geen probleem, Intel probeert TBB up to date te houden met de nieuwste standaard. Indien mogelijk, prefereer
- OpenMP: Gebruik van OpenMP lijkt ons niet aangeraden voor het regelen van Simulators onderling. De focus van OpenMP ligt op HPC, en controle krijgen over de communicatie tussen de processen is lastiger. Dit blijkt ook uit sommige links van hierboven.
-
TBB
- TBB: Vanzelfsprekend moet dit goed werken.
-
OpenMP: Zelfde problemen als
std::thread
en OpenMP.