THREAD Vs PROCESS jarayoni OS tomonidan berilgan resurslar (xotira, registrlar) bilan dasturni bajarish uchun jarayon yaratiladi; odatda, har xil jarayonlar o'z xotirasini boshqasi bilan baham ko'rmaydi. Mavzu bu jarayonning quyi qismidir va u o'zining asosiy jarayonining manbalarini baham ko'radi, ammo funktsiya chaqiruvlarini kuzatib borish uchun o'z stekiga ega. Jarayonning bir nechta oqimlari bir xil xotiraga kirish huquqiga ega bo'ladi.
Parallel xotira turlari. OpenMP-ga chuqur kirib borishdan oldin, asosiy parallel xotira me'morchiligini jonlantiramiz. Ular uchta toifaga bo'linadi;
Umumiy xotira: OpenMP umumiy xotira tushunchasiga kiradi. Bunda har xil protsessorlar (protsessorlar) bir xil xotira joyiga kirish huquqiga ega bo'ladilar. Barcha protsessorlar bir xil xotiraga ulanganligi sababli, xotiraga kirish ehtiyotkorlik bilan bajarilishi kerak.
21.1-rasm.Har xil protsessorlar (protsessorlar) bir xil xotira joyiga kirish.
Tarqatilgan xotira: bu erda har bir protsessor (protsessor) kirish va undan foydalanish uchun o'ziga xos xotira joyiga ega bo'ladi. Ularni aloqa qilishlari uchun barcha mustaqil tizimlar tarmoq yordamida bir-biriga ulanadi. MPI taqsimlangan me'morchilikka asoslangan.
21.2-rasm.MPI taqsimlangan xotira.
Gibrid: Gibrid - bu umumiy va taqsimlangan me'morchiliklarning kombinatsiyasi. OpenMP kuchini namoyish qilishning oddiy senariysi oddiy C / C++ dasturi va OpenMP dasturining bajarilish vaqtini taqqoslash bo'lishi mumkin.
OpenMP-ni o'rnatish bosqichlari. 1-QADAM: kompilyatorning GCC versiyasini tekshiring
gcc - versiya
GCC 4.2.0 versiyasidan boshlab OpenMP-ni qo'llab-quvvatlaydi. Shunday qilib, agar tizimda 4.2.0 dan yuqori versiyaga ega bo'lgan GCC kompilyatori bo'lsa, unda u bilan tuzilgan OpenMP xususiyatlari bo'lishi kerak.
Agar tizimda GCC kompilyatori bo'lmasa, biz quyidagi buyruqdan foydalanishimiz mumkin.
sudo apt install gcc
O'rnatishni batafsilroq qo'llab-quvvatlash uchun biz bu erga murojaat qilishimiz mumkin.
QADAM: OpenMP-ni sozlash
Biz buyruq yordamida OpenMP funktsiyalari bizning kompilyatorimizda tuzilganligini yoki yo'qligini tekshirib ko'rishimiz mumkin.
echo | cpp -fopenmp -dM | grep -i ochiq
Agar OpenMP kompilyatorda ko'rsatilmagan bo'lsa, biz uni buyruq yordamida sozlashimiz mumkin.
sudo apt install libomp-dev
QADAM: Mavzular sonini sozlash
OpenMP-da, kodni ishga tushirishdan oldin, biz quyidagi buyruq yordamida bajariladigan iplar sonini boshlashimiz mumkin. Bu erda biz bajarilishi kerak bo'lgan sonlar sonini 8 ta qatorga o'rnatdik.
eksport OMP_NUM_THREADS = 8
Do'stlaringiz bilan baham: |