← Tornar a l'auditoria
OpenMP
Versió de 2013 a viki.cat
·
Versió actual a ca.wikipedia
·
Historial
4.793bytes el 2013
4.742bytes avui
825paraules retirades
390paraules afegides
Wikitext en cru: part de les diferències són canvis de plantilles i de format,
no de contingut. Torna al text llegible.
<!--
[[Fitxer:Openmp.png|right|180px|thumb|Logo{{Infotaula d'OpenMP]]
-->programari}}
'''OpenMP''' (Open Multip-Processing) és una [[interfície de programació d'aplicacions]] (API) que suportaadmet programació [[multiprocés]][[Multiprocés|multiprocessament]] ambde [[memòria compartida]] multi-plataformamultiplataforma en [[C (llenguatge[[Llenguatge deC|C]], programació)|C]]/[[C++]][[C++]] i [[Fortran]] a moltes[[Fortran]],<ref arquitectures,name="OSConcepts2">{{Ref-llibre|cognom=Gagne|nom=Abraham incloentSilberschatz, lesPeter plataformesBaer [[Unix]]Galvin, iGreg|títol=Operating [[Microsoftsystem Windows]].concepts|editorial=Wiley|lloc=Hoboken, ConsisteixN.J.|isbn=978-1-118-06333-0|pàgines=181–182|edició=9th|data=2012-12-17}}</ref> en un conjuntmoltes deplataformes, [[directives[[Arquitectura dedel compilador]],conjunt rutinesd'instruccions|arquitectures de biblioteques, i [[variables d'entorn]] que afecten al comportament en temps d'execució.
Definit conjuntament per un grup dels principals fabricants deconjunt [[maquinari]]d'instruccions]] i [[programari]], OpenMP és un[[Sistema modeloperatiu|sistemes portableoperatius]], iinclòs escalable[[Solaris que(sistema dónaoperatiu)|Solaris]], als[[AIX]], [[programadors]][[FreeBSD]], una[[HP-UX]], interfície[[Linux]], simple[[macOS]] i flexible per a desenvolupar aplicacions paral·leles per a plataformes que van des de l'escriptori fins als [[supercomputador]]s.
Una aplicació construida amb el model híbrid de [[programació paral·lela]][[Microsoft potWindows|Windows]]. executar-seConsisteix en un [[raïm d'ordinadors]] fent servir OpenMP i [[Message Passing Interface]] (MPI).
==Introducció==
<!--
[[Fitxer:Fork_join.svg|right|450px|thumb|Una il·lustracióconjunt de [[multithreading]] ondirectives eldel threadcompilador, mestre[[Biblioteca esinformàtica|rutines bifurcade enbiblioteca]] uni nombre[[Variable ded'entorn|variables threadsd'entorn]] que executen blocs de codiinflueixen en paral·lel]]
-->
OpenMP és una implementació de [[multithreading]], un mètode de paral·lelització pel qual el "thread" (fil, en anglès) mestre (una sèrie d'instruccions executades consecutivament) es "bifurca"comportament en un nombre determinat de "threads" esclaus itemps lad'execució.<ref>[http://openmp.org/wp/2008/10/openmp-tutorial-at-supercomputing-2008/ tascaOpenMP esTutorial divideixat entreSupercomputing ells.2008]</ref><ref>[http://openmp.org/wp/2009/04/download-book-examples-and-discuss/ ElsUsing threadsOpenMP llavors– s'executenPortable concurrentment,Shared ambMemory l'[[entornParallel d'execució]]Programming ubicant– elsDownload threadsBook aExamples diferentsand processadors.Discuss]</ref>
La secció de codi que esOpenMP volestà quegestionat s'executipel en[[consorci]] paral·leltecnològic és[[Organització marcadasense corresponentment,ànim ambde unalucre|sense [[directivaànim de preprocessador]]lucre]] que''OpenMP faràArchitecture queReview elsBoard'' threads(o es''OpenMP forminARB''), abansdefinit queconjuntament laper seccióuna siguiàmplia executada.gamma Cadade threadproveïdors téde unmaquinari "id"i (identificador)programari associatinformàtics quelíders, potcom ser[[ARM obtingutHoldings|Arm]], fent[[AMD]], servir[[IBM]], una[[Intel]], [[Funció[[Cray (informàtica)|funció]]Inc.|Cray]], (anomenada[[Hewlett-Packard|HP]], <code>omp_get_thread_num()</code>[[Fujitsu]], a[[Nvidia]], C/C++[[NEC iCorporation|NEC]], <code>OMP_GET_THREAD_NUM()</code>[[Red aHat]], Fortran).[[Texas L'idInstruments]] dei thread[[Oracle ésCorporation]].<ref unname="Board"><cite enter,class="citation iweb elcs1"><span threadclass="cx-segment" mestredata-segmentid="439">[https://web.archive.org/web/20130809153922/http://openmp.org/wp/about-openmp/ té"About unathe idOpenMP deARB "0".and"]. Després</span><span declass="cx-segment" l'execuciódata-segmentid="440">OpenMP.org. del</span><span codiclass="cx-segment" paral·lelitzat,data-segmentid="441">2013-07-11. els</span><span threadsclass="cx-segment" s'"uneixen"data-segmentid="442">Archived defrom nou[http://openmp.org/wp/about-openmp/ althe threadoriginal] mestre,on que2013-08-09<span continuaclass="reference-accessdate">. endavant</span></span><span finsclass="cx-segment" aldata-segmentid="443"><span finalclass="reference-accessdate">Retrieved del<span programa.class="nowrap">2013-08-14</span></span>.</span></cite></ref>
PerOpenMP defecte,utilitza cadaun threadmodel executa[[Portabilitat|portàtil]] lai secióescalable deque codiofereix paral·lelitzadaals independentment.[[programador]]s Esuna podeninterfície fersenzilla serviri "construccionsflexible deper comparticiódesenvolupar deaplicacions treball"paral·leles per a dividir una tasca entre els threads de formaplataformes que cada thread executi lavan partdes de codi que té assignada. Fent servir OpenMP d'aquesta forma es pot aconseguir tant el [[paral·lelismel'[[Ordinador de tasques]]taula|ordinador comd'escriptori]] elestàndard [[paral·lelismefins deal dades]].[[Supercomputador|superordinador]].
L'entorn d'execucióUna assignaaplicació elsconstruïda threadsamb ael processadorsmodel depenenthíbrid de l'ús,[[Computació laparal·lela|programació càrregaparal·lela]] dees lapot màquinaexecutar ien altresun factors.[[clúster Eld'ordinadors]] nombreutilitzant tant OpenMP com [[Message Passing Interface]] (MPI), de threadsmanera potque serOpenMP assignats'utilitza per l'entornal d'execucióparal·lelisme basant-se''dins'' end'un [[variablesnode d'entorn]](multi-nucli) omentre que MPI s'utilitza per al paral·lelisme ''entre'' nodes. També hi ha hagut esforços per executar OpenMP en codisistemes fentde servirmemòria funcions.compartida Lesdistribuïda funcionsper programari,<ref>{{Ref-publicació|cognom=Costa|nom=J.J.|display-authors=etal|data=May 2006|publicació=Journal of Parallel and Distributed Computing|volum=66|exemplar=5|pàgines=647–658|doi=10.1016/j.jpdc.2005.06.018}}</ref> per traduir OpenMP estana inclosesMPI<ref>{{Ref-llibre|cognom=Basumallik|nom=Ayon|títol=2007 enIEEE unInternational [[fitxerParallel deand capçalera]]Distributed ambProcessing elSymposium|capítol=Programming nomDistributed "omp.h"Memory Systems Using OpenMP|pàgines=1–8|lloc=Nova York|editorial=IEEE Press|any=2007|doi=10.1109/IPDPS.2007.370397|isbn=978-1-4244-0909-9}}</ref><ref>{{Ref-publicació|cognom=Wang|nom=Jue|cognom2=Hu|nom2=ChangJun|cognom3=Zhang|nom3=JiLin|cognom4=Li|nom4=JianJiang|data=May 2010|publicació=Science China Information Sciences|volum=53|exemplar=5|pàgines=932–944|doi=10.1007/s11432-010-0074-0|dataaccés=free}}</ref> i per estendre OpenMP per a C/C++.sistemes de memòria no compartida.<ref>[https://software.intel.com/en-us/articles/cluster-openmp-for-intel-compilers Cluster OpenMP] (a product that used to be available for Intel C++ Compiler versions 9.1 to 11.1 but was dropped in 13.0)</ref>
==Història==
* L'OpenMP Architecture Review Board (ARB) va publicar el seu primer estàndard, OpenMP per a Fortran 1.0, a l'[[octubre]] de [[1997]].
* A l'octubre de [[1998]] van publicar l'estàndard C/C++.
* A l'any [[2000]] va sortir la versió 2.0 de l'estàndard Fortran.
* A l'any [[2002]] va sortir la versió 2.0 de l'estàndard C/C++.
* A l'any [[2005]] va sortir la versió 2.5. És un estàndard combinat de C/C++== iReferències Fotran.==
* Al maig de [[2008]], va sortir la versió 3.0. És la versió actual de les especificacions de l'API.{{Referències}}
== Enllaços externs ==
* [http://openmp.org/wp/openmp-compilers/ Web oficial - compiladors que suporten OpenMP] {{en}}
* [http://openmp.org/wp/openmp-specifications/ Especificacions OpenMP] {{en}}{{Oficial}}
* [http://gcc.gnu.org/projects/gomp/ GNU GOMP] {{en}} Projecte de suport d'OpenMP a C, C++ i Fortran per als compiladors de la GNU Compiler Collection, en funcionament des de la versió GCC 4.2
* [http://msdn.microsoft.com/en-us/library/tt15eb9t%28VS.80%29.aspx OpenMP a Visual C++] {{en}}
* [http://www2.epcc.ed.ac.uk/computing/research_activities/jomp/index_1.html JOMP - OpenMP per a Java] {{en}} [http://mias.uwimona.edu.jm/training/graduate/msc-cs/courses/COMP6420/Slides/JOMP%20I.ppt Presentació] {{en}}
* [http://www2.informatik.uni-erlangen.de/EN/research/JavaOpenMP/index.html Univ. Erlangen - OpenMP / Java / CUDA] {{en}} Implementació a [[Linux]] exportant codi per ser executat a [[GPU]] amb l'[[API]] [[CUDA]] de [[Nvidia]].
Articles i guies
* [http://developer.amd.com/documentation/articles/Pages/117200679.aspx OpenMP: More than Just Optimizing Loops] {{en}}
* [https://computing.llnl.gov/tutorials/openMP/ Guia de OpenMP] {{en}}
[[Categoria:API]]
[[Categoria:Llenguatges de programació]]