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
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.
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 ...
- 1. Licenza Intel TBB
- 2. OpenCV TBB IPP Funzioni OpenMP
- 3. Intel TBB: pool di grafici
- 4. Intel TBB per Android e iOS
- 5. Come funziona scalable_allocator di Intel TBB?
- 6. Doppio atomico/float in Intel TBB
- 7. PThread vs boost :: thread?
- 8. Come si installa Intel TBB su OS X?
- 9. thread vs. pthread in perl
- 10. Sqlalchemy, relazione vs relazione
- 11. Pthreads vs. OpenMP
- 12. Filettatura OpenMP e MKL
- 13. Intel OpenCL vs. Khronos OpenCL
- 14. Multithreading vs multiprocessing
- 15. Attività OpenMP con e senza parallelo
- 16. OpenMP e programma ibrido MPI
- 17. autoconf con -pthread
- 18. MPI vs openMP per una memoria condivisa
- 19. Sublime Code Intel vs All Autocomplete?
- 20. Manca ___emutls_get_address con gcc-4.7 e openMP
- 21. OpenMP e core/thread
- 22. Riduzione con OpenMP
- 23. clang, openMP e CMake
- 24. Kendo UI Mobile vs Sencha Touch vs Intel App Framework
- 25. Pthread e condizioni di attesa
- 26. Qual è la differenza e la relazione tra mpirun, mpiexec e mpiexec.hydra?
- 27. Come posso creare OpenCV con TBB?
- 28. C++ OpenMP con shared_pointer
- 29. OpenMP e affinità CPU
- 30. C# HPC - MPI e OpenMP
OpenMPI è una particolare implementazione dell'interfaccia Message Passing. –