Openmp і visual studio, image processing

OpenMP від ​​Microsoft реа-лі-зо-ван по-середовищ-ством сле-дую-щих когось по-нен-тів:

У біс-плат-ної Visual Studio Express пе-ре-чис-льон-ні біб-ліо-ті-ки від-сут-ству-ють.

OpenMP і Visual Studio Express

Ес-ли на ва-Шем когось п'ю-ті-рі уста-нов-ле-на вер-сія Professional - пе-ре-хо-ді-ті до сле-дую-ще-му раз-де-лу ста- тьі. В цьому раз-де-ле рас-смот-рим слу-чай, ко-ли по ка-ким-ли-бо при-чи-нам ви ви-нуж-де-ни ис-поль-зо-вать Visual Studio Express .

Про-грам-ма уста-нов-ки бу-дет за-гру-жати дан-ні з Ін-тер-ні-та (при-мер-но 100 ме-га-байт), по-це-му ви мо -же-ті Секо-но-мить НЕ-мно-го тра-фі-ка, від-лю-чив уста-нов-ку Microsoft Silverlight і Microsoft SQL Server, ес-ли вони вам не тре-бу-ють-ся .

З ча-ме-ні на-пі-са-ня цієї ста-тьі ви-йшов но-вий SDK: Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1. До со-жа-ле-нию, я його не ис-пи-ти-вал. Все су-ще-ству-щие SDK пе-ре-чис-ле-ни на цій стра-ні-це.

Так як ми ста-вим Windows SDK толь-ко ра-ди OpenMP, то нам не ну-дружин той ги-га-байт до-ку-мен-та-ції, ко-то-рий йде в когось плек-ті . Ре-ко-мен-дую осту вити толь-ко сле-дую-щие еле-мен-ти:

Openmp і visual studio, image processing

Рі-су-нок 1. Не-про-хо-ді-мі нам когось по-нен-ти SDK

До со-жа-ле-нию, в со-ставши SDK НЕ вхо-дит біб-ліо-ті-но vcomp90d.dll. по-це-му на дан-ний мо-мент в Visual Studio Express ви смо-же-ті за-пус-кати толь-ко OpenMP-про-грам-ми, від-ком-пі-ли-ро-ван- ні в ре-жи-ме Release. Я на-йшов спо-соб обой-ти і це огра-ні-чо-ня, про це чи-тай-ті так-леї (раз-справ «От-лад-ка OpenMP-про-грам-ми в Visual Studio Express »).

Іс-поль-зо-ва-ня OpenMP в Visual Studio

Як і сле то-го, як ви ви-пол-ні-ли ша-ги, опи-сан-ні в попе-ду-щем раз-де-ле, вже не важ-но, ка-де вер-си їй Visual Studio ви поль-зу-е-тесь. За-ка-жу крок за ша-гом, як спів-здати про-ект з під-держ-кої OpenMP в цій сере-де раз-ра-бот-ки. Пре-жде все-го, нуж-но за-пу-стить Visual Studio, і ви-брати File → New → Project. Як і явить-ся ок-но со-зда-вання про-ек-ту. Ви-бе-ри-ті тип про-ек-ту «Win32», шаб-лон - «Win32 Console Application». Вве-ді-ті осмис-льон-ве ім'я про-ек-ту, ви-бе-ри-ті пап-ку для збе-ні-ня про-ек-ту, переконатися-ри-ті га-лоч-ку « Create directory for solution »:

Openmp і visual studio, image processing

Openmp і visual studio, image processing

Рі-су-нок 2. Ок-но со-зда-вання про-ек-ту

На-тисни-ті кноп-ку «OK», по-явить-ся ок-но на-буд-ки бу-ду-ще-го про-ек-ту. Ви-бе-ри-ті внесок-ку «Application Settings», і вклю-чи-ті гал-ку «Empty project»:

Openmp і visual studio, image processing

Openmp і visual studio, image processing

Рі-су-нок 3. Ок-но на-буд-ки бу-ду-ще-го про-ек-ту

За на-жа-тію кноп-ки «Finish» про-ект бу-дет з-буд. Ні-ка-ких ві-ді-мих через ме-ні-ний в глав-ном ок-ні Visual Studio не про-Ізой-дет. Толь-ко ім'я про-ек-ту в за-го-лов-ке ок-на як би го-во-рить нам про те, що ми пра-цю-та-ем з про-ек-те.

Те-пер на-тисни-ті Project → Add New Item, по-явить-ся ок-но до-бав-ле-ня еле-мен-тов в про-ект. До-бавь-ті .cpp-файл в про-ект:

Openmp і visual studio, image processing

Openmp і visual studio, image processing

Рі-су-нок 4. Ок-но до-бав-ле-ня еле-мен-тов в про-ект

Як і сле це-го вам бу-дет переді-ставши-ле-но ок-но для вво-да ис-хід-но-го ко-да про-грам-ми. Бу-дем ви-пол-нять ті-сти на сле-дую-щем ко-де, про-ве-ряю-щем раз-лич-ні ас-пек-ти функ-ціо-ні-ро-ва-ня OpenMP :

#include
#include

using namespace std;

int main # 40; int argc, char ** argv # 41;
# 123;
int test # 40; 999 # 41; ;

omp_set_num_threads # 40; 2 # 41; ;
#pragma omp parallel reduction (+: test)
# 123;
#pragma omp critical
cout <<"test = " < # 125;

return EXIT_SUCCESS;
# 125;

Лі-Стінг 1. Про-стей-Шая про-грам-ма, ис-поль-зую-щая OpenMP

За-пу-сти-ті про-грам-му, на-жав Debug → Start Without Debugging. Ес-ли все б-ло зро-ла-но пра-віль-но, про-грам-ма від-ком-пі-ли-ру-ет-ся (ес-ли спро-сит вас, кому-пі-ли -ро-вать чи, на-тисни-ті «Yes»), за-тим за-пу-стіт-ся і ви-ве-дет test = 999.

Openmp і visual studio, image processing

Openmp і visual studio, image processing

Рі-су-нок 5. Ре-зуль-тат пра-цю-ти про-грам-ми з ли-стин-га 1

"Як же так. - ска-же-ті ви - Адже про-грам-ма долж-на б-ла ви-ве-сти нуль, при-чому два-Жди! ». Де-ло в тому, що OpenMP ще не вклю-чен, і по-це-му со-від-вет-ству-щие ді-рек-ти-ви б-ли про-ігно-ри-ро-ва-ни кому-пі-ля-то-ром.

Для вклю-че-ня OpenMP на-тисни-ті Project → OMP Properties (OMP - ім'я про-ек-ту з мо-їх при-ме-рів). Сле-ва ВВЕР-ху по-явивши-ше-го-ся ок-на ви-бе-ри-ті «All Configurations» і в раз-де-ле Configuration Properties → C / C ++ → Language вклю-чи-ті « OpenMP Support »:

Openmp і visual studio, image processing

Рі-су-нок 6. Вклю-ча-ем OpenMP в свій ствах про-ек-ту

Як і сле це-го сно-ва за-пу-сти-ті про-грам-му, на-жав Debug → Start Without Debugging. На цей раз про-грам-ма ви-ве-дет test = 0 два-Жди:

Openmp і visual studio, image processing

Openmp і visual studio, image processing

Рі-су-нок 7. Ре-зуль-тат пра-цю-ти про-грам-ми з ли-стин-га 1 з вклю-чён-ним OpenMP

Ура! OpenMP пра-цю-та-ет.

При-ме-ча-ня. Ес-ви ис-поль-зу-е-ті Visual Studio Express, то ви-бе-ри-ті ті-ку-щую кон-фі-гу-ра-цію «Release», ина-че ра-бо- тать НЕ бу-дет (чи-тай-ті так-леї):

Openmp і visual studio, image processing

Рі-су-нок 8. Ви-бір ті-ку-щей кон-фі-гу-ра-ції

От-лад-ка OpenMP-про-грам-ми в Visual Studio Express

Як би-ло ска-за-но ра-неї, так-же по-сле уста-нов-ки Windows SDK у нас не бу-дет в на-ли-ності НЕ-про-хо-ді-мій для від- лад-ки біб-ліо-ті-ки vcomp90d.dll. по-це-му ми по-ки не мо-жем від-ла-жи-вать OpenMP про-грам-му в Visual Studio Express. Про-стое ко-пі-ро-ва-ня маю щей-ся біб-ліо-ті-ки vcomp90.dll і пе-ре-ма-но-ва-ня її в vcomp90d.dll НЕ сра-бо-та -ет, тому що не сов-па-дет кон-т-роль-ва сум-ма і вер-сія, вка-зан-ні під вбудову-ва-е-мом в exe-файл ма-ні-фе-сте. Як і це-му бу-дем «ко-пать» з про-ти-по-по-лож-но-ро-ни.

За кого-пі-ля-ції в кон-фі-гу-ра-ції «Debug» ( «От-лад-ка»), за-го-ло-валь-ний файл omp.h тре-бу-ет біб -ліо-ті-ку vcompd.lib (вона у нас име-ет-ся), ко-то-раю, в свою оче-гу, тре-бу-ет vcomp90d.dll (від-сут-ству-ет). Лі-цен-зія НЕ поз-по-ля-ет нам ис-поль-зо-вать в при-ло-же-ні-ях мо-діфі-ци-ро-ван-ні за-го-ло-воч- ні фай-ли від Microsoft, по-це-му вме-сто мо-діфі-ка-ції omp.h вклю-чим його в на-шу про-грам-му сле-дую-щим про ра зом, що -б він не до Бога-дав-ся про включен-чён-ном ре-жи-ме від-лад-ки:

#ifdef _DEBUG
#undef _DEBUG
#include
#define _DEBUG
#else
#include
#endif

using namespace std;

int main # 40; int argc, char ** argv # 41;
# 123;
int test # 40; 999 # 41; ;

omp_set_num_threads # 40; 2 # 41; ;
#pragma omp parallel reduction (+: test)
# 123;
#pragma omp critical
cout <<"test = " < # 125;

return EXIT_SUCCESS;
# 125;

Лі-Стінг 2. Вклю-ча-ем omp.h «хіт-рим» спо-со-бом

При-ве-Ден-но-го дей-наслідком не до-ста-точ-но для то-го, що-б все пра-цю-та-ло (по-ка ми ис-пра-ві-ли лише ма -ні-фест, що вбудов-ває-мий в про-грам-му). Де-ло в тому, що Visual Studio в ре-жи-ме від-лад-ки по преж-ні-му ав-то-ма-ти-че-скі (через вклю-чён-но-го OpenMP) при-лін-ко-ви-ва-ет vcompd.lib. тре-бу-ю-щую vcomp90d.dll. Що-б це ис-пра-вить, сно-ва зай-ді-ті в на-буд-ки про-ек-ту (Project → OMP Properties), ви-бе-ри-ті на цей раз Configuration: «Debug ». В раз-де-ле Configuration Properties → Linker → Input вка-жи-ті, що vcompd.lib при-лін-ко-ви-вать НЕ нуж-но, а vcompd.lib - нуж-но:

Openmp і visual studio, image processing

Рі-су-нок 9. За-ме-ня-му біб-ліо-ті-ку в свій ствах про-ек-ту

Про-ве-рим ті-перь, пра-цю-та-ет чи від-лад-ка, і дей-стві-тель-но чи про-грам-ма пра-цю-та-ет па-ра-л- лель-но. Як і став-ті точ-ку осту-но-ва на будів-ке з ви-по-будинок зна-че-ня пе-ре-мен-ної. Для це-го на-тисни-те ле-виття кноп-кою ми-ши сен-рую по-лос-ку сле-ва від ис-хід-но-го ко-да:

Openmp і visual studio, image processing

Рі-су-нок 10. Точ-ка осту-но-ва

Як і сле це-го за-пу-сти-ті про-грам-му в ре-жи-ме від-лад-ки: Debug → Start Debugging (нема за-будь-ті вер-нуть ті-ку-щую кін -фі-гу-ра-цію «Debug», див. ри-су-нок 8). Про-грам-ма за-пу-стіт-ся - і сра-зу ж осту-но-вит-ся на точ-ке осту-но-ва. У вклад-ке «Threads» ми ви-дим, що про-грам-ма дей-стві-тель-но пра-цю-та-ет, ис-поль-чаплі два по-то-ка:

Openmp і visual studio, image processing

Openmp і visual studio, image processing

Рі-су-нок 11. От-лад-ка OpenMP-про-грам-ми в Visual Studio Express

Схожі статті