Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Duisembiev-Parallel-esep.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
5.86 Mб
Скачать

§2.2.2 OpenMp бағдарламалау технологиясы

Бүгінгі күні ортақ жадылы компьютерлер үшін ең танымал бағдарламалау құралдарының бірі OpenMP (Open specifications for Multi-Processing) (www.openmp.org). Ол дәстүрлі бағдарламалау тілдеріне және арнайы комментарилерді пайдалануға негізделген. Оның бастауына тізбекті бағдарлама алынады, ал оның параллель нұсқасын құру үшін пайдаланушыға директивтер, функциялар және ортаның айнымалыларының жиыны ұсынылады. Сонымен қатар, құрылатын параллель бағдарлама OpenMP АРI-ді қолдайтын бөлінетін жадылы әртүрлі компьютерлер арасында тасымалданатын болады деп есептеледі.

OpenMP технологиясының өзіндік ерекшелігі, ол пайдаланушыға параллель және тізбекті де орындалу үшін бағдарламаның бір нұсқасын ғана иеленуге мүмкіндік береді. Сонымен қоса мұнда тек параллель режимде дұрыс жұмыс істейтін немесе тізбекті режимде басқа нәтиже беретін бағдарламалар құрастыру мүмкіндігі де қарастырылған.

Стандартты құрастырумен коммерциялық емес ұйым OpenMP ARB (Architecture Review Board) айналысады, және оған SMP-архитектурасын және бағдарламалық қамтамалар құрастыратын ірі компаниялардың өкілдері кіреді (IBM, Intel, Sun, Hewlett – Packard және т.б.). OpenMP дәстүрлі бағдарламалау Fortran, Си/Cи++ тілдерімен жұмыс істей алады. OpenMP спецификациясының бірінші нұсқасы 1997 жылы қазан айында пайда болды, және ол Фортран бағдарламалау тіліне арналған болатын, ал Си/Cи++ тіліне арналған спецификациясы 1998 жылы қазан айында пайда болды. Қазіргі кездегі стандарттың ресми спецификациясы - OpenMP 3,0 (2008 жылы май айында қабылданды).

OpenMP интефейсі SMP-жүйелерінде (SSMP, ccNUMA және т.б.) бағдарламалау үшін стандарт ретінде ойластырылған. OpenMP стандартына компилятор директиваларының, көмекші функциялардың және орта айнымалыларының жиыны спецификациялары кіреді. Стандарт көптеген UNIX-платформаларында және Windows NT ортасында қолжетімділікке ие. Бұл тілдер үшін барлық негізгі конструкциялар ұқсас болғандықтан, OpenMP технологиясы туралы әңгімені бұдан әрі Fortran тіліндегі мысалдар көмегімен жүргіземіз.

Жіптерді (нитей, Pthreads) ұйымдастыру үшін құрылған POSIX-интерфейсі барлық UNIX-жүйелерде қолдау табады және ол алғашында параллельділікті ұйымдастыру мақсаты үшін құрастырылмағанын айта кетейік. OpenMP-ді жоғары деңгейдегі Pthreads (немесе ұқсас жіптер кітапханаларының) жалғасы немесе қондырмасы деп қарастыруға болады. Онда Pthreads-ке жақын терминологиялар мен бағдарламалау модельдері пайдаланылады, мысалы, динамикалық туындайтын жіптер жалпы және бөлінетін деректер синхронизация үшін «құлыптар» механизмі.

POSIX threads терминологиясына сәйкес, кезкелген UNIX-процесс адрестік кеңістіктері ортақ, бірақ командалар ағыны әртүрлі және бөлек стектері болатын бірнеше басқару жіптерінен тұрады. Жіптерді кейбір жағдайларда ағындар, жеңіл процестер, LWP (light-weight processes) деп те атайды.

OpenMP параллель есептеулерді көпағындылық UNIX көмегімен іске асырады, онда «басты» (master) ағын «бағыныңқы» (slave) ағындардың жиынын құрады және есеп солардың арасында таратылады. Ағындар бірнеше процессорлы машиналарда параллель орындалады деп болжанады және онда процессорлар саны ағындар санынан үлкен немесе тең болуы міндетті емес.

Енді ОреnМР ережелері шеңберінде, пайдаланушы өзінің параллель бағдарламасын қалай көрсету керек? Бағдарламаның бар тексті тізбекті және параллель облыстарға бөлінген (44 сурет).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]