2012-12-29 4 views
7

Für Multi-Thread-Programmierung, mit den Überlegungen der Kombinationen mit HPC-Anwendung (MPI), welche besser ist, können wir sagen, in Bezug auf die Funktionalität, Intel TBB (Thread-Baustein) ist vergleichbar mit Pthread oder nicht? Ich habe nur Erfahrung in offenen mp, aber ich hörte sowohl TBB und Pthread bietet eine feinere Thread-Steuerung im Vergleich zu offenen mp, aber können TBB oder TBB + OpenMP bieten ähnliche Funktionen im Vergleich zu Pthread?Pthread vs Intel TBB und ihre Beziehung zu OpenMP?

Antwort

4

Pthread ist ein dünner Wrapper über die OS-Infrastruktur. Es ermöglicht Ihnen, einen Thread mit einer gegebenen Thread-Hauptfunktion und einigen Synchronisationsgrundelementen (Mutexes-Semaphoren usw.) zu erstellen. Unter Linux wird Pthread über den Systemaufruf clone(2) implementiert. Die Entsprechung unter Windows heißt CreateThread. Alle anderen Threading-Sachen sind auf dieser Basis aufgebaut.

Intel TBB ist eine höhere Ebene, es gibt parallel_for und parallel_reduce und ähnliche High Level-Konstrukte ähnlich OpenMP, aber als eine Bibliothek nicht eine Spracherweiterung implementiert.

OpenMPI ist noch höher Ebene mit Multi-Maschine verteilte Infrastruktur, aber es ist sehr altmodisch und ein wenig klobig.

Mein Rat wäre, zuerst die Pthread-Bibliothek zu lernen, bis Sie sie vollständig verstanden haben, und dann die höheren Bibliotheken zu betrachten.

+0

OpenMPI ist eine spezielle Implementierung der Message Passing Interface. –

2

Mit TBB können Sie portablen Code über die native Threading-Funktionalität schreiben, sodass der Code über verschiedene Betriebssystemarchitekturen leichter portierbar ist. Ich glaube nicht, dass es "effizienter" ist als Pthread.

Ich habe keine offenen MP persönlich benutzt, aber in der Vergangenheit habe ich mit Entwicklern gearbeitet, die offene MP benutzen (als technischer Spezialist für die Prozessoren, die sie benutzten), und es scheint für bestimmte Dinge ziemlich gut zu funktionieren, aber andere sind schwieriger in offenen mp zu verwenden als Ihren eigenen Code zu schreiben. Alles hängt davon ab, was genau Sie tun. Einer der Vorteile von openmp besteht natürlich darin, dass Sie den Code immer ohne die Option openmp neu kompilieren können, und der Code funktioniert einfach so, wie Sie es erwarten [aber nicht verteilt, natürlich].

Mit einem Programm Threading-Ansatz können Sie viel mehr Kontrolle darüber haben, was genau in welchem ​​Thread passiert, ja. Aber es bedeutet auch viel mehr Arbeit ...