A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Aktuální verze | 5.2 (9. listopadu 2021) |
---|---|
Operační systém | multiplatformní software |
Vyvíjeno v | C++ a C |
Web | www |
Některá data mohou pocházet z datové položky. |
OpenMP je soustava direktiv pro překladač a knihovních procedur pro paralelní programování. Jedná se o standard pro programování počítačů se sdílenou pamětí. OpenMP usnadňuje vytváření vícevláknových programů v programovacích jazycích Fortran, C a C++.
První OpenMP standard pro FORTRAN 1.0 byl publikován v roce 1997. Rok poté byl uvolněn standard pro C/C++. Standard verze 2.0 byl uvolněn pro FORTRAN v roce 2000 a pro C/C++ v roce 2002, verze 3.0 v roce 2008, verze 4.0 v roce 2013, verze 4.5 v roce 2015, verze 5.0 pro C/C++ a FORTRAN potom v roce 2018. Aktuální je verze 5.1 pro C/C++ a FORTRAN, která byla uvolněna 13. listopadu 2020.[1]
Programovací model OpenMP
Hlavní vlákno (master thread) vytváří podle potřeby skupinu podvláken. Paralelizace programu se pak provádí postupně s ohledem na výkon aplikace, tj. sekvenční program je postupně (podle možností) paralelizován.
OpenMP schéma řešení
Programování v OpenMP
OpenMP se spouští pomocí tzv. direktiv. K vytvoření skupiny vláken použijeme direktivu pragma:
#pragma omp parallel
{
... // každé vlákno vykonává příkazy tohoto bloku
}
K rozdělení práce cyklu mezi vlákna použijeme:
#pragma omp parallel for
for (i=0; i<N; i++) {
... // každé vlákno vykoná část iterací
}
Klauzule modifikují direktivy:
- Private(list) – pro určené proměnné se vytváří jejich kopie v každém vláknu
- Reduction(op:list) – kombinuje (podle určené operace) lokálně spočítané hodnoty do privátní hodnoty uvedené v seznamu
Program hello.f90 v jazyce Fortran 90
program hello
use omp_lib
implicit none
integer: nthr, myth
!$omp parallel private(myth)
!$omp single
nthr=omp_get_num_threads() ! OpenMP funkce (interface omp_lib, určí počet vláken a jeho index)
!$omp end single
myth=omp_get_thread_num()
write(6,*) 'Hello from',myth, & ! myth je lokální ve vlákně private, nthr je globální v procesu share
& 'of',nthr
!$omp end parallel
end program hello
Tučně vyznačený kód provádějí všechna vlákna. Program zkompilujeme a použijeme přitom přepínač -openmp, který aktivuje OpenMP direktivy generující kód vláken:
ifort -openmp -o hello hello.f90
Zkompilovaný program spustíme. Všimněte si, že jednotlivé výstupy jsou v náhodném pořadí, protože pořadí není pro vlákna definováno:
export OMP_NUM_THREADS=4 // Definujeme počet použitých vláken v prostředí OpenMP ./hello Hello from 0 of 4 Hello from 2 of 4 Hello from 3 of 4 Hello from 1 of 4
Kompilace pro sériový běh vyžaduje knihovnu openmp_stubs:
ifort -openmp_stubs -o hello hello.f90 -lpthread
Odkazy
Reference
- ↑ TIM.LEWIS. Specifications . . Dostupné v archivu pořízeném dne 2021-03-02. (anglicky)
Externí odkazy
- Obrázky, zvuky či videa k tématu OpenMP na Wikimedia Commons
- OpenMP OpenMP na anglické Wikipedii
- The official site for OpenMP Archivováno 20. 7. 2008 na Wayback Machine.
- cOMPunity Community of OpenMP Users, Researchers, Tool Developers and Providers
- TotalView A debugger for OpenMP programs
- Intel® Threading Tools - Intel®Thread Checker, Intel® Thread Profiler
- Dynamic Performance Monitor for OpenMP Archivováno 16. 3. 2008 na Wayback Machine.
- Parawiki page for OpenMP
- PC Cluster Consortium
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antropológia
Aplikované vedy
Bibliometria
Dejiny vedy
Encyklopédie
Filozofia vedy
Forenzné vedy
Humanitné vedy
Knižničná veda
Kryogenika
Kryptológia
Kulturológia
Literárna veda
Medzidisciplinárne oblasti
Metódy kvantitatívnej analýzy
Metavedy
Metodika
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk