Sukhov Anton - openmp și studio vizual

OpenMP de la Microsoft este implementat prin următoarele componente:

În Visual Studio Express gratuit, lipsesc bibliotecile listate.

OpenMP și Visual Studio Express

Dacă aveți Professional instalat pe computer, mergeți la următoarea secțiune a articolului. În această secțiune, luați în considerare cazul în care, din anumite motive, sunteți obligat să utilizați Visual Studio Express.

Programul de instalare va descărca date de pe Internet (aproximativ 100 megaocteți), astfel încât să puteți salva un anumit trafic dezactivând instalarea Microsoft Silverlight și Microsoft SQL Server, dacă nu aveți nevoie de ele.

Din moment ce am pus SDK-ul Windows numai din motive de OpenMP, nu avem nevoie de gigabyte de documentație care vine cu pachetul. Vă recomandăm să lăsați doar următoarele elemente:

Sukhov Anton - openmp și studio vizual

Figura 1. Componentele SDK de care avem nevoie

Utilizarea OpenMP în Visual Studio

După ce ați finalizat pașii descriși în secțiunea anterioară, nu contează ce versiune de Visual Studio folosiți. Vă voi arăta pas cu pas cum să creați un proiect cu suport OpenMP în acest mediu de dezvoltare. Mai întâi, trebuie să porniți Visual Studio și selectați Fișier → Nou → Proiect. Se va afișa fereastra Creare proiect. Selectați tipul de proiect "Win32", șablonul este "Win32 Console Application". Introduceți un nume de proiect semnificativ, selectați folderul pentru stocarea proiectului, debifați "Creare director pentru soluție":

Sukhov Anton - openmp și studio vizual

Figura 2. Fereastra de creare a proiectului

Faceți clic pe "OK", apare fereastra pentru configurarea proiectului viitor. Selectați fila "Setări aplicație" și activați caseta de selectare "Gol proiect":

Sukhov Anton - openmp și studio vizual

Figura 3. Viitoarea fereastră de configurare a proiectului

Făcând clic pe butonul "Finalizare", proiectul va fi creat. Nu se vor face modificări vizibile în fereastra principală a Visual Studio. Numai numele proiectului din titlul ferestrei ne spune că lucrăm cu proiectul.

Acum, faceți clic pe Proiect → Adăugați un element nou, apare fereastra pentru adăugarea de elemente în proiect. Adăugați fișierul .cpp în proiect:

Sukhov Anton - openmp și studio vizual

Figura 4. Fereastra Adăugare elemente la proiect

După aceasta, vi se va da o fereastră pentru introducerea codului sursă al programului. Vom efectua testele pe următorul cod care verifică diferite aspecte ale funcționalității OpenMP:

Listarea 1. Cel mai simplu program care utilizează OpenMP

Rulați programul făcând clic pe Debug → Start fără Debugging. Dacă totul a fost făcut corect, programul se va compila (dacă vă întreabă dacă doriți să compilați, faceți clic pe "Da"), apoi pornește și afișează test = 999:

Sukhov Anton - openmp și studio vizual

Figura 5. Rezultatul programului din Lista 1

- De ce? - vei spune - Până la urmă, programul ar fi trebuit să deducă zero și de două ori! ". Problema este că OpenMP nu este încă inclus și, prin urmare, directivele corespunzătoare au fost ignorate de compilator.

Pentru a activa OpenMP, faceți clic pe Project → OMP Properties (OMP este numele proiectului din exemplele mele). În partea de sus a ferestrei care apare, selectați "Toate configurațiile", iar în secțiunea Configurație → C / C ++ → Limba, activați "OpenMP Support":

Sukhov Anton - openmp și studio vizual

Figura 6. Activați OpenMP în proprietățile proiectului

După aceea, executați din nou programul apăsând Debug → Start fără Debugging. De această dată programul va imprima test = 0 de două ori:

Sukhov Anton - openmp și studio vizual

Figura 7. Activarea programului din lista 1 cu OpenMP activată

Ura! OpenMP funcționează.

Notă. Dacă utilizați Visual Studio Express, selectați configurația curentă "Release", altfel nu va funcționa (citiți mai departe):

Sukhov Anton - openmp și studio vizual

Figura 8. Selectarea configurației curente

Depanarea unui program OpenMP în Visual Studio Express

Când compilați în configurația "Debug", fișierul antet omp.h necesită vcompd.lib (îl avem), care la rândul său necesită vcomp90d.dll (absent). Licența nu ne permite să folosim fișiere de antet modificate de la Microsoft în aplicații, așa că, în loc de a modifica omp.h, îl vom include în programul nostru în felul următor, astfel încât să nu ghicească despre modul de depanare:

Listing 2. Activați omp.h într-un mod "complicat"

Acțiunea de mai sus nu este suficientă pentru ca totul să funcționeze (până când nu am stabilit decât Manifestul, integrat în program). Problema este că Visual Studio în modul de depanare este încă automat (din cauza OpenMP inclus) cusătură vcompd.lib, care necesită vcomp90d.dll. Pentru a remedia acest lucru, reveniți la setările proiectului (Project → OMP Properties), selectați Configuration (Configurație): "Debug" de data aceasta. În secțiunea Configurație → Linker → Intrare, specificați că nu aveți nevoie să vcompd.lib și vcompd.lib - aveți nevoie de:

Sukhov Anton - openmp și studio vizual

Figura 9. Înlocuirea bibliotecii în proprietățile proiectului

Să verificăm acum dacă funcționează depanarea și dacă programul funcționează în paralel. Puneți un punct de întrerupere pe linie cu ieșirea valorii variabilei. Pentru aceasta, faceți clic pe butonul stâng al mouse-ului cu bara gri din stânga codului sursă:

Sukhov Anton - openmp și studio vizual

Figura 10. Punctul de întrerupere

După aceea, executați programul în modul de depanare: Debug → Start Debugging (nu uitați să reveniți la configurația curentă "Debug", a se vedea Figura 8). Programul va începe - și se va opri imediat la punct de întrerupere. În fila "Threads" vedem că programul funcționează cu adevărat, folosind două fire:

Sukhov Anton - openmp și studio vizual

Figura 11. Debugarea unui program OpenMP în Visual Studio Express

Articole similare