Parallel dasturlashning OpenMP, OpenCl, TBB  interfeyslari

|
Parallel dasturlashning OpenMP, OpenCl, TBB interfeyslari
|
bet | 15/27 | Sana | 18.05.2024 | Hajmi | 1,16 Mb. | | #242810 |
Bog'liq O‘zbekiston respublikasi axborot texnologiyalari va kommunikatsi
Interfeys bizga klass bilan qanday munosabatda bo'lishimiz ta'rifini ushbu klassni amalga oshirishda ajratish imkonini beradi. Bu bizga bir xil interfeysdan foydalanishi mumkin bo'lgan turli sinflarga ega bo'lish imkonini beradi, lekin interfeysdan foydalanadigan faqat bitta klass bo'lsa ham, bu foydali texnikadir. Interfeys - bu interfeysni zaxira qilib olgan klass qaysi a'zo funktsiyalarini amalga oshirishi kerakligi tavsifi. Boshqacha qilib aytganda, interfeys klassning harakatini tavsiflaydi. Biz interfeysni sinf tomonidan amalga oshirilishi kerak bo'lgan funktsiyalar ro'yxati deb hisoblashimiz mumkin.
Interfeys __interface kalit so'zi yordamida yaratiladi:
_interface InterfaceName
{
//group of functions declarations
}
Interfeys nomini birinchi interfeys ismi bilan boshlash yaxshi uslubdir. Interfeys bir yoki bir nechta asosiy interfeyslardan funksionallikni zaxira qilib olishi mumkin. U faqat umumiy a'zo funksiyalarini o'z ichiga olishi mumkin. Aksincha, u konstruktor, destruktor, ma'lumotlar a'zolari va statik a'zo funktsiyalarini o'z ichiga olmaydi. Ushbu qoidalarga amal qiladigan ommaviy sof virtual funktsiyalarga ega interfeysni mavhum klass sifatida yaratishimiz mumkin. Biroq, __interface kalit so'zi bu xususiyatlarni amalga oshiradi.
Interfeysga namunaga qarasak;
__interface IPrintable
{
void Print();
void PrintBase(int);
};
Bu IPprintable interfeysining ta'rifi. U ikkita funksiyadan iborat: Print() va PrintBase(int). Agar siz o'z sinfingizdagi interfeysni meros qilib olmoqchi bo'lsangiz, ushbu funktsiyalarni o'sha sinf ichida amalga oshirishingiz kerak. Agar siz meros qilib olingan interfeysdan funktsiyalarni amalga oshirmasangiz, sinfingiz mavhum bo'lib qoladi.
OPENMP - bu umumiy foydalanish uchun parallel dasturlash modeli
xotira va taqsimlangan umumiy xotira multiprotsessorlari tomonidan kashf qilingan. OpenMP SGI va boshqa parallel kompyuter sotuvchilari bilan hamkorlikda ishlab chiqilgan, OpenMP tezda ilovalarni parallellashtirish uchun standartga aylanmoqda.
OpenMP ning birinchi ko'rinishi
Parallel kompyuter dasturini ishlab chiqish yozishdan unchalik farq qilmaydigan ketma-ket (ya'ni, bitta protsessorli) dastur. Dastlab dasturni ishlab chiquvchi, ozi uchun asosiy g’oyasini bilib olishi kerak, shu jumladan boshlanishi haqida aniq tasavvur va dasturdan olingan natijalar. Ikkinchidan, algoritmlar shunchaki faqat ish qanday bajarilishini tasvirlab berishi kerak emas, balki parallel holatda ham dasturlar, ishni bir nechta protsessorlarda qanday taqsimlash yoki parchalash mumkinligi ko’rsatib berish kerak. Va nihoyat, bu algoritmlar amaliy dastur yoki kodda amalga oshiriladi. OpenMP - bu yakuniy bosqichni, ya'ni parallel algoritmlarni amalga oshirishni qo'llab-quvvatlash modeli. OpenMP tegishli parallel algoritmlarni loyihalash mas'uliyatini dasturchi va/yoki boshqa ishlab chiqish vositalariga qoldiradi.
OpenMP yangi kompyuter tili emas; rather, balki standart Fortran yoki C/C++ bilan birgalikda ishlaydigan dastur.U manba kodidagi parallellikni tavsiflovchi kompilyator direktivalari to'plamidan hamda ilovalar uchun mavjud bo'lgan kichik dasturlarning qo'llab-quvvatlovchi kutubxonasidan iborat. Ushbu direktivalar bilan birgalikda va kutubxona tartiblari bilan rasmiy ravishda OpenMP deb nomlanuvchi amaliy dasturlash interfeysi tomonidan tasvirlangan.
Ko'rsatmalar OpenMP-ni qo'llab-quvvatlaydigan har qanday kompilyator uchun yo'riqnomalardir. OpenMP bo'lmagan muhitlarga ko'chirishda ilovalarni ko'chirish qobiliyatini yaxshilash uchun ular manba kodi sharhlari (Fortran'da) yoki #pragmas (C/C++ da) shaklida bo'ladi.
|
| |