2012-12-29 12 views
7

Per la programmazione multi-thread, con le considerazioni di combinazioni con applicazione HPC (MPI), che uno è meglio, possiamo dire, in termini di funzionalità, Intel TBB (filetto building block) è paragonabile a pthread o no? Ho solo esperienza in open mp, ma ho sentito che sia TBB che Pthread offrono un controllo dei thread più preciso rispetto a open mp, ma TBB o TBB + OpenMP offrono funzionalità simili rispetto a pthread?pthread vs intel TBB e la loro relazione con OpenMP?

risposta

4

pthread è un wrapper sottile sopra l'infrastruttura del sistema operativo. Permette di creare un thread con una funzione principale di thread specificata e alcune primitive di sincronizzazione (mutex semafori, ecc.). Sotto Linux pthread è implementato in cima alla chiamata di sistema clone(2). L'equivilant sotto Windows è chiamato CreateThread. Tutti gli altri thread sono costruiti sopra questa base.

Intel TBB è di livello superiore, fornisce parallel_for e parallel_reduce e costrutti simili di livello superiore simili a OpenMP ma implementati come una libreria, non un'estensione di lingua.

OpenMPI è livello ancora più alto ancora con l'infrastruttura multi-macchina distribuita, ma è molto vecchio e un po 'goffo.

Il mio consiglio è di imparare la libreria pthread prima capire completamente, e poi guardare le biblioteche di livello più alto dopo.

+0

OpenMPI è una particolare implementazione dell'interfaccia Message Passing. –

2

TBB consente di scrivere codice portabile in cima alla funzionalità di threading nativo, in modo che rende il codice più portabile su diverse architetture del sistema operativo. Non penso che sia "più efficiente" di pthread.

Non ho utilizzato personalmente MP aperto, ma in passato ho lavorato con sviluppatori che utilizzavano open MP (come specialista tecnico sui processori che stavano usando), e sembra funzionare abbastanza bene per certe cose, ma altri sono più difficili da usare in open MP che scrivere il proprio codice. Dipende tutto da cosa stai facendo esattamente. Uno dei vantaggi offerti da openmp è che è sempre possibile ricompilare il codice senza l'opzione openmp e il codice funziona direttamente come ci si aspetta [ma non è distribuito, ovviamente].

Con un programma di threading approccio, si può avere molto più controllo su ciò che accade esattamente su ciò filo, sì. Ma significa anche molto più lavoro ...