2012-12-29 25 views
7

W przypadku programowania wielowątkowego, z uwzględnieniem kombinacji z aplikacją HPC (MPI), która z nich jest lepsza, można powiedzieć, że pod względem funkcjonalności, Intel TBB (blokowanie wątków) jest porównywalne z pthread czy nie? Mam tylko doświadczenie w open mp, ale słyszałem, że zarówno TBB, jak i Pthread oferują dokładniejszą kontrolę wątków w porównaniu do open mp, ale czy TBB lub TBB + OpenMP oferują podobną funkcjonalność w porównaniu z pthread?pthread kontra intel TBB i ich związek z OpenMP?

Odpowiedz

4

pthread to cienki wrapper nad infrastrukturą OS. Pozwala ci utworzyć wątek z daną główną funkcją wątku, oraz niektóre prymitywy synchronizacji (muteksy semafory itp.). W systemie Linux pthread jest implementowany na szczycie wywołania systemowego clone(2). Odpowiednik pod Windows nazywa się CreateThread. Wszystkie pozostałe wątki są budowane na tej bazie.

Intel TBB jest wyższym poziomem, daje parallel_for i parallel_reduce i podobne konstrukcje wyższego poziomu podobne do OpenMP, ale zaimplementowane jako biblioteka, a nie rozszerzenie językowe.

OpenMPI jest jeszcze wyższy poziom z infrastrukturą rozproszoną wielu maszyn, ale jest bardzo staroświecki i trochę niezgrabny.

Moja rada to najpierw nauka biblioteki pthread, aż całkowicie ją zrozumiesz, a potem zajrzyj do bibliotek wyższych poziomów.

+0

OpenMPI to szczególna implementacja interfejsu przekazywania komunikatów. –

2

TBB umożliwia pisanie przenośnego kodu na natywnej funkcjonalności wątków, dzięki czemu kod jest bardziej przenośny w różnych architekturach systemu operacyjnego. Nie sądzę, że jest "bardziej efektywny" niż pthread.

Nie korzystałem z otwartego MP osobiście, ale w przeszłości pracowałem z programistami używającymi otwartego MP (jako specjalisty ds. Technicznych na procesorach, z których korzystali), i wydaje się, że działa dość dobrze dla pewnych rzeczy, ale inne są trudniejsze do użycia w otwartym mp niż pisanie własnego kodu. Wszystko zależy od tego, co dokładnie robisz. Jedną z zalet OpenMP oczywiście jest to, że zawsze można przekompilować kod bez opcji openmp, a kod działa bezpośrednio tak, jak tego oczekujesz [ale nie rozdziela się, oczywiście].

Dzięki podejściu do wątków programowych możesz mieć większą kontrolę nad tym, co dzieje się w danym wątku, tak. Ale to także oznacza dużo więcej pracy ...