Coarray Fortran (Co-array Fortran, CAF, раніше також F--) — це модель програмування, започаткована в 1990-х (Robert Numrich та John Reid) у вигляді розширення, а зараз як частина стандарту мови програмування Fortran для забезпечення розпаралелювання та паралельного виконання програмного коду згідно з парадигмою «одна програма, багато потоків даних» (SPMD) з допомогою явного синтаксису. Стандарт Fortran 2008 (ISO/IEC 1539-1:2010) зараз містить в собі комасиви (англ. coarrays) у версії, яка була узгоджена на засіданні ISO Fortran Committee в травні 2005 року. Модель програмування з складається з двох нових концепцій, доданих до мови, а саме: розширення звичайного синтаксису масиву для представлення та декомпозиції даних і розширення моделі виконання для контролю та синхронізації паралельної роботи. Синтаксис комасивів в стандарті відрізняється в деталях від оригінального запропонованого проекту CAF.
Coarray Fortran | |
---|---|
Парадигма | паралельна |
Дата появи | 1990-ті |
Творці | Robert Numrich та John Reid |
Розробник | PL22.3 Fortran Committee |
Система типізації | , статична |
Основні реалізації | Cray, , GNU Fortran, Intel Fortran Compiler, Rice (CAF 2.0), OpenUH |
Під впливом від | Fortran |
Операційна система | мультиплатформна |
Програма, що використовує CAF інтерпретується так, ніби у процесі виконання створюється багато копій програми (зображень, англ. image) і кожне зображення має свій набір об'єктів з даними та виконується асинхронно. Синтаксис комасивів додає до поняття масивів в Фортрані ще одну додаткову розмірність — так званий ковимір (англ. codimension) з допомогою задніх індексів в квадратних дужках і дозволяє маніпуляцію посиланнями на дані, котрі розподілені по різних зображеннях.
Історія
Комасиви Фортран виникли з внутрішніх технічних звітів на Cray Research на початку 1990-х років, і еволюціонували з простої моделі програмування для Cray-T3D в перше неофіційне визначення (Numrich 1997) для мови Fortran 77, де використовувався інший синтаксис представлення комасивів. На Fortran 90 комасиви були розширені Numrich і Steidel в 1997 і уточнені Numrich і Reid у вигляді неформального розширення для Fortran 95 в 1998 році. Оригінальне розширення CAF від Cray доступно протягом тривалого часу і було реалізовано виробником компіляторів Fortran, а саме Cray (починаючи з версії 3.1). Після внесення комасивів в стандарт Fortran 2008, число реалізацій значно зросло. Перший з відкритих компіляторів був для архітектур GNU Linux, що підтримував комасиви. Після цього Intel додав підтримку комасивів в своєму компіляторі ifort. GNU Fortran також забезпечує більшість можливостей комасивів в конфігурації одного і декількох зображень (на основі бібліотеки з відкритим кодом ). Ще одна реалізація комасивів і пов'язаних з ними паралельних розширень Fortran 2008 доступна в компіляторі (один з форків компілятора Open64), розробленого в Г'юстонському університеті.
Комасиви в стандарті Fortran 2008
Модель програмування з допомогою комасивів була реалізована в стандарті мови Фортран за допомогою мінімізації доповнень і розширень синтаксису та мови Фортран, щоб перетворити її на ефективну мову для паралельного програмування на основі SPMD парадигми. При цьому програма копіюється в зображення фіксоване число разів. Кількість зображень не обмежена кількістю процесорів чи інших фізичних пристроїв. Конкретні реалізації можуть вибирати кількість зображень під час компіляції, чи в процесі виконання програми. Кожне зображення виконується асинхронно з застосуванням звичайних правил мови Fortran. Послідовність виконання може відрізнятися від зображення до зображення, та може бути змінена програмістом за допомогою унікального індексу зображення, що визначає ефективний і звичний для мови Фортран механізм управління та явну синхронізацію. Між синхронізаціями компілятор може вільно використовувати майже всі свої звичайні (методи оптимізації).
Альтернативна реалізація і Fortran 2015
Спільнота науковців на чолі з John Mellor-Crummey з університету Райса в Г'юстоні, США не погодились з вибором Комітету стандартизації Fortran 2008 і продовжили розвивати альтернативний варіант розширення комасивів для мови Фортран. На їхню думку, вибір Комітету стандартизації для Fortran 2008 був сформований прагненням ввести якнайменше модифікацій до мови, а не створити кращий набір розширень для підтримки паралельного програмування в Фортран і тому вони не вірили, що набір розширень, узгоджених комітетом, є правильним.
В результаті справедливої критики, в технічній специфікації затвердженій й опублікованій 19 листопада 2015 року «ISO/IEC TS 18508:2015 Information technology — Additional Parallel Features in Fortran» щодо розпаралелювання за допомогою комасивів (TS18508) виправлено і враховано частково критику науковців університету Райса. TS18508 значно розширює паралельну семантику Fortran 2008 (додані підмножини зображень у вигляді команди team
, колективну комунікацію, розширену синхронізацію та події event
для легкої односторонньої синхронізації), переробляє деякі паралельні функції та виправляє деякі інші вади попереднього стандарту.
Реалізації в компіляторах
Більшість реалізацій комасивів створено виробниками компіляторів та додаткових бібліотек на основі технології Message Passing Interface MPI. В GNU Fortran використовується бібліотека що використовує MPI, але також може працювати поверх інших шарів паралелізації та синхронізації нижчого рівня (наприклад, ), призначених для підтримки (англ. partitioned global address space, чи ).
Примітки
- (PDF). Архів оригіналу (PDF) за квітень 6, 2016. Процитовано липень 24, 2016.
- . Архів оригіналу за 18 серпня 2016. Процитовано 24 липня 2016.
- Robert W. Numrich, John Ker Reid, CoArrays: Parallel Programming in Fortran (Chapman & Hall/CRC Computational Science) 2016
- ISO/IEC 1539-1:2010 (Final Draft International Standard). Information technology – Programming languages – Fortran – Part 1: Base language (PDF).[недоступне посилання з лютого 2019] (Fortran 2008)
- . Архів оригіналу за 23 липня 2016. Процитовано 24 липня 2016.
- (PDF). Архів оригіналу (PDF) за 29 вересня 2016. Процитовано 24 липня 2016.
- . Архів оригіналу за 14 червня 2016. Процитовано 24 липня 2016.
- TS18508, Additional Parallel Features in Fortran — ISO чорновик (2013р)[недоступне посилання з травня 2019], N2074, загальнодоступний чорновик з iso.org, (2015р)
- . Архів оригіналу за 9 березня 2016. Процитовано 24 липня 2016.
Джерела
- ISO/IEC JTC1/SC22. International Standard ISO/IEC 1539-1:2010(E)Information technology — Programming languages — Fortran — Part 1: Base language. ISO/IEC, Geneva, 2010.
- John Reid, Coarrays in the next Fortran Standard (2010) ISO/IEC JTC1/SC22/WG5 N1824
- J. Reid and R.W. Numrich, Co-arrays in the next Fortran Standard, Scientific Programming 15(1), 9-26 (2007)
- R.W. Numrich, A Parallel Numerical Library for Co-Array Fortran, Springer Lecture Notes in Computer Science 3911, 960—969,(2005)
- R.W. Numrich, Parallel numerical algorithms based on tensor notation and Co-Array Fortran syntax, Parallel Computing 31, 588—607 (2005)
- R.W. Numrich and J.K. Reid, Co-Array Fortran for Parallel Programming, ACM Fortran Forum 17(2):1-31 (1998)
- R.W. Numrich et al., Definition of the F−− Extension to Fortran 90, Lectures on Computer Science Series, Number 1366, p.292-306 (1998)
- R.W. Numrich, J. Reid and K. Kim, Writing a Multigrid Solver Using Co-Array Fortran, Springer Lecture Notes in Computer Science 1541, 390—399 (1998)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Coarray Fortran Co array Fortran CAF ranishe takozh F ce model programuvannya zapochatkovana v 1990 h Robert Numrich ta John Reid u viglyadi rozshirennya a zaraz yak chastina standartu movi programuvannya Fortran dlya zabezpechennya rozparalelyuvannya ta paralelnogo vikonannya programnogo kodu zgidno z paradigmoyu odna programa bagato potokiv danih SPMD z dopomogoyu yavnogo sintaksisu Standart Fortran 2008 ISO IEC 1539 1 2010 zaraz mistit v sobi komasivi angl coarrays u versiyi yaka bula uzgodzhena na zasidanni ISO Fortran Committee v travni 2005 roku Model programuvannya z skladayetsya z dvoh novih koncepcij dodanih do movi a same rozshirennya zvichajnogo sintaksisu masivu dlya predstavlennya ta dekompoziciyi danih i rozshirennya modeli vikonannya dlya kontrolyu ta sinhronizaciyi paralelnoyi roboti Sintaksis komasiviv v standarti vidriznyayetsya v detalyah vid originalnogo zaproponovanogo proektu CAF Coarray FortranParadigma paralelnaData poyavi 1990 tiTvorci Robert Numrich ta John ReidRozrobnik PL22 3 Fortran CommitteeSistema tipizaciyi statichnaOsnovni realizaciyi Cray GNU Fortran Intel Fortran Compiler Rice CAF 2 0 OpenUHPid vplivom vid FortranOperacijna sistema multiplatformna Programa sho vikoristovuye CAF interpretuyetsya tak nibi u procesi vikonannya stvoryuyetsya bagato kopij programi zobrazhen angl image i kozhne zobrazhennya maye svij nabir ob yektiv z danimi ta vikonuyetsya asinhronno Sintaksis komasiviv dodaye do ponyattya masiviv v Fortrani she odnu dodatkovu rozmirnist tak zvanij kovimir angl codimension z dopomogoyu zadnih indeksiv v kvadratnih duzhkah i dozvolyaye manipulyaciyu posilannyami na dani kotri rozpodileni po riznih zobrazhennyah IstoriyaKomasivi Fortran vinikli z vnutrishnih tehnichnih zvitiv na Cray Research na pochatku 1990 h rokiv i evolyucionuvali z prostoyi modeli programuvannya dlya Cray T3D v pershe neoficijne viznachennya Numrich 1997 dlya movi Fortran 77 de vikoristovuvavsya inshij sintaksis predstavlennya komasiviv Na Fortran 90 komasivi buli rozshireni Numrich i Steidel v 1997 i utochneni Numrich i Reid u viglyadi neformalnogo rozshirennya dlya Fortran 95 v 1998 roci Originalne rozshirennya CAF vid Cray dostupno protyagom trivalogo chasu i bulo realizovano virobnikom kompilyatoriv Fortran a same Cray pochinayuchi z versiyi 3 1 Pislya vnesennya komasiviv v standart Fortran 2008 chislo realizacij znachno zroslo Pershij z vidkritih kompilyatoriv buv dlya arhitektur GNU Linux sho pidtrimuvav komasivi Pislya cogo Intel dodav pidtrimku komasiviv v svoyemu kompilyatori ifort GNU Fortran takozh zabezpechuye bilshist mozhlivostej komasiviv v konfiguraciyi odnogo i dekilkoh zobrazhen na osnovi biblioteki z vidkritim kodom She odna realizaciya komasiviv i pov yazanih z nimi paralelnih rozshiren Fortran 2008 dostupna v kompilyatori odin z forkiv kompilyatora Open64 rozroblenogo v G yustonskomu universiteti Komasivi v standarti Fortran 2008Model programuvannya z dopomogoyu komasiviv bula realizovana v standarti movi Fortran za dopomogoyu minimizaciyi dopovnen i rozshiren sintaksisu ta movi Fortran shob peretvoriti yiyi na efektivnu movu dlya paralelnogo programuvannya na osnovi SPMD paradigmi Pri comu programa kopiyuyetsya v zobrazhennya fiksovane chislo raziv Kilkist zobrazhen ne obmezhena kilkistyu procesoriv chi inshih fizichnih pristroyiv Konkretni realizaciyi mozhut vibirati kilkist zobrazhen pid chas kompilyaciyi chi v procesi vikonannya programi Kozhne zobrazhennya vikonuyetsya asinhronno z zastosuvannyam zvichajnih pravil movi Fortran Poslidovnist vikonannya mozhe vidriznyatisya vid zobrazhennya do zobrazhennya ta mozhe buti zminena programistom za dopomogoyu unikalnogo indeksu zobrazhennya sho viznachaye efektivnij i zvichnij dlya movi Fortran mehanizm upravlinnya ta yavnu sinhronizaciyu Mizh sinhronizaciyami kompilyator mozhe vilno vikoristovuvati majzhe vsi svoyi zvichajni metodi optimizaciyi Alternativna realizaciya i Fortran 2015Spilnota naukovciv na choli z John Mellor Crummey z universitetu Rajsa v G yustoni SShA ne pogodilis z viborom Komitetu standartizaciyi Fortran 2008 i prodovzhili rozvivati alternativnij variant rozshirennya komasiviv dlya movi Fortran Na yihnyu dumku vibir Komitetu standartizaciyi dlya Fortran 2008 buv sformovanij pragnennyam vvesti yaknajmenshe modifikacij do movi a ne stvoriti krashij nabir rozshiren dlya pidtrimki paralelnogo programuvannya v Fortran i tomu voni ne virili sho nabir rozshiren uzgodzhenih komitetom ye pravilnim V rezultati spravedlivoyi kritiki v tehnichnij specifikaciyi zatverdzhenij j opublikovanij 19 listopada 2015 roku ISO IEC TS 18508 2015 Information technology Additional Parallel Features in Fortran shodo rozparalelyuvannya za dopomogoyu komasiviv TS18508 vipravleno i vrahovano chastkovo kritiku naukovciv universitetu Rajsa TS18508 znachno rozshiryuye paralelnu semantiku Fortran 2008 dodani pidmnozhini zobrazhen u viglyadi komandi team kolektivnu komunikaciyu rozshirenu sinhronizaciyu ta podiyi event dlya legkoyi odnostoronnoyi sinhronizaciyi pereroblyaye deyaki paralelni funkciyi ta vipravlyaye deyaki inshi vadi poperednogo standartu Realizaciyi v kompilyatorahBilshist realizacij komasiviv stvoreno virobnikami kompilyatoriv ta dodatkovih bibliotek na osnovi tehnologiyi Message Passing Interface MPI V GNU Fortran vikoristovuyetsya biblioteka sho vikoristovuye MPI ale takozh mozhe pracyuvati poverh inshih shariv paralelizaciyi ta sinhronizaciyi nizhchogo rivnya napriklad priznachenih dlya pidtrimki angl partitioned global address space chi Primitki PDF Arhiv originalu PDF za kviten 6 2016 Procitovano lipen 24 2016 Arhiv originalu za 18 serpnya 2016 Procitovano 24 lipnya 2016 Robert W Numrich John Ker Reid CoArrays Parallel Programming in Fortran Chapman amp Hall CRC Computational Science 2016 ISO IEC 1539 1 2010 Final Draft International Standard Information technology Programming languages Fortran Part 1 Base language PDF nedostupne posilannya z lyutogo 2019 Fortran 2008 Arhiv originalu za 23 lipnya 2016 Procitovano 24 lipnya 2016 PDF Arhiv originalu PDF za 29 veresnya 2016 Procitovano 24 lipnya 2016 Arhiv originalu za 14 chervnya 2016 Procitovano 24 lipnya 2016 TS18508 Additional Parallel Features in Fortran ISO chornovik 2013r nedostupne posilannya z travnya 2019 N2074 zagalnodostupnij chornovik z iso org 2015r Arhiv originalu za 9 bereznya 2016 Procitovano 24 lipnya 2016 DzherelaISO IEC JTC1 SC22 International Standard ISO IEC 1539 1 2010 E Information technology Programming languages Fortran Part 1 Base language ISO IEC Geneva 2010 John Reid Coarrays in the next Fortran Standard 2010 ISO IEC JTC1 SC22 WG5 N1824 J Reid and R W Numrich Co arrays in the next Fortran Standard Scientific Programming 15 1 9 26 2007 R W Numrich A Parallel Numerical Library for Co Array Fortran Springer Lecture Notes in Computer Science 3911 960 969 2005 R W Numrich Parallel numerical algorithms based on tensor notation and Co Array Fortran syntax Parallel Computing 31 588 607 2005 R W Numrich and J K Reid Co Array Fortran for Parallel Programming ACM Fortran Forum 17 2 1 31 1998 R W Numrich et al Definition of the F Extension to Fortran 90 Lectures on Computer Science Series Number 1366 p 292 306 1998 R W Numrich J Reid and K Kim Writing a Multigrid Solver Using Co Array Fortran Springer Lecture Notes in Computer Science 1541 390 399 1998