Skip to content

Keuze technologie Multiregio shared memory variant

Anthony Hermans edited this page Mar 18, 2017 · 4 revisions

De voorgestelde mogelijkheden zijn:

  1. C++ threading
  2. Boost.Thread
  3. OpenMP
  4. 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.
    • 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: 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.
Clone this wiki locally