~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ F2D4AC4CA53D9399830AD54937707356__1702581060 ✰
Заголовок документа оригинал.:
✰ Coarray Fortran - Wikipedia ✰
Заголовок документа перевод.:
✰ Коаррей Фортран — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Coarray_Fortran ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/f2/56/f2d4ac4ca53d9399830ad54937707356.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/f2/56/f2d4ac4ca53d9399830ad54937707356__translat.html ✰
Дата и время сохранения документа:
✰ 22.06.2024 17:08:21 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 14 December 2023, at 22:11 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Коаррей Фортран — Википедия Jump to content

Коаррей Фортран

Из Википедии, бесплатной энциклопедии
Коаррей Фортран
Парадигма мультипарадигмальность : параллельная , передача сообщений , императивная ( процедурная , объектно-ориентированная ), структурированная.
Разработано Роберт Нумрич и Джон Рид
Разработчик PL22.3 Комитет Фортрана
Стабильная версия
Фортран 2008 (ИСО/МЭК 1539-1:2010)
Дисциплина набора текста сильный , статичный
ТЫ Кросс-платформенный
Основные реализации
Cray, g95 , GNU Fortran , компилятор Intel Fortran , Rice CAF 2.0 , OpenUH, компилятор NAG Fortran
Под влиянием
Фортран

Coarray Fortran ( CAF ), ранее известный как F-- , начинался как расширение Fortran 95/2003 для параллельной обработки , созданное Робертом Нумричем и Джоном Ридом в 1990-х годах. Стандарт Fortran 2008 (ISO/IEC 1539-1:2010) теперь включает coarrays (пишется без дефиса), как было решено на заседании комитета ISO Fortran в мае 2005 года; синтаксис стандарта Fortran 2008 немного отличается от исходного предложения CAF.

CAF Программа интерпретируется так, как если бы она была реплицирована несколько раз и все копии выполнялись асинхронно. Каждая копия имеет свой собственный набор объектов данных и называется изображением . Синтаксис массива . Фортрана расширен за счет дополнительных индексов в конце в квадратных скобках, чтобы обеспечить краткое представление ссылок на данные, которые распределены по изображениям

Расширение CAF было реализовано в некоторых компиляторах Fortran , например, от Cray (начиная с версии 3.1). С момента включения coarrays в стандарт Fortran 2008 количество реализаций растет. Первым компилятором с открытым исходным кодом , который реализовал coarrays, как указано в стандарте Fortran 2008 для архитектур Linux, является G95 . В настоящее время GNU Fortran обеспечивает широкий охват функций Coarray Fortran в конфигурации с одним и несколькими изображениями (последняя основана на библиотеке OpenCoarrays). Другая реализация coarrays и связанных с ней параллельных расширений из Fortran 2008 доступна в компиляторе OpenUH (ветвь Open64 ), разработанном в Университете Хьюстона .

Реализация в компиляторах [ править ]

CAF часто реализуется поверх библиотеки интерфейса передачи сообщений (MPI) для обеспечения переносимости. Некоторые реализации, например те, которые доступны в компиляторах GNU Fortran и OpenUH, могут работать поверх других низкоуровневых уровней (например, GASNet), предназначенных для поддержки секционированного глобального адресного пространства языков .

Примеры [ править ]

Простой пример приведен ниже. CAF используется в CGPACK — пакете с открытым исходным кодом для моделирования поликристаллических материалов, разработанном в Бристольском университете . [1]

программа  Hello_World 
   неявное none 
   целое   ::   i    !  локальной переменной 
    Символ  (  len  =  20  )   ::   name  [  *  ]   !   скалярный массив, одно «имя» для каждого изображения. 
    !   Примечание. «name» — это локальная переменная, а «name[<index>]» обращается к 
   !   переменная в конкретном изображении;   «имя[this_image()]» то же самое, что и «имя». 

    !   Взаимодействуйте с пользователем на изображении 1;   казнь для всех остальных проходит мимо. 
    if   (  this_image  ()   ==   1  )   , то 
 напишите  (  *  ,  '(a)'  ,  заранее  =  'no'  )   'Введите свое имя:' 
     read  (  *  ,  '(a)'  )   name 

     !   Распространите информацию на другие изображения 
     do  i   =   2  ,   num_images  () 
       name  [  i  ]   =   name 
     end do 
 end, если 

 синхронизировать все   !   Барьер, гарантирующий доставку данных. 

    !   Ввод-вывод со всех образов выполняется в любом порядке, но каждая записанная запись не повреждена. 
    write  (  *  ,  '(3a,i0)'  )   'Hello'  ,  обрезка  (  имя  ),  'from image'  ,   this_image  () 
 завершаем программу  Hello_world 

Приведенная выше программа плохо масштабируется, поскольку цикл, распределяющий информацию, выполняется последовательно. Написание масштабируемых программ часто требует глубокого понимания параллельных алгоритмов, детального знания основных характеристик сети и специальной настройки характеристик приложений, таких как размер передаваемых данных. Для большинства разработчиков приложений предоставление компилятору или библиотеке времени выполнения выбора лучшего алгоритма оказывается более надежным и высокопроизводительным. Fortran 2018 будет предлагать подпрограммы коллективного общения, которые позволят командам компиляторов и библиотек времени выполнения инкапсулировать эффективные параллельные алгоритмы для коллективного общения и распределенных вычислений в наборе коллективных подпрограмм. Эти подпрограммы и другие новые функции параллельного программирования обобщены в технической спецификации. [2] которые комитет по стандартам Fortran проголосовал за включение в Fortran 2018. Они позволяют пользователю написать более эффективную версию приведенного выше алгоритма.

программа  Hello_World 
   неявный нет 
   символов  (  len  =  20  )   ::   name  [  *  ]   !   скалярный массив, одно «имя» для каждого изображения. 
    !   Примечание. «name» — это локальная переменная, а «name[<index>]» обращается к 
   !   переменная в конкретном изображении;   «имя[this_image()]» то же самое, что и «имя». 

    !   Взаимодействуйте с пользователем на изображении 1;   казнь для всех остальных проходит мимо. 
    if   (  this_image  ()   ==   1  )   , затем 
 напишите  (  *  ,  '(a)'  ,  заранее  =  'no'  )   'Введите свое имя: ' 
     прочитайте  (  *  ,  '(a)'  )   name 
   end if 
   !   Распространите информацию на все изображения 
   вызовом  co_broadcast  (  name  ,  source_image  =  1  ) 

   !   Ввод-вывод со всех образов выполняется в любом порядке, но каждая записанная запись не повреждена. 
    write  (  *  ,  '(3a,i0)'  )   'Hello'  ,  обрезка  (  имя  ),  'from image'  ,   this_image  () 
 завершаем программу  Hello_world 

где отсутствие явной синхронизации дает возможность повысить производительность из-за меньшей координации между изображениями. Более того, TS 18508 гарантирует, что «Передача из изображения не может произойти до того, как для этого изображения будет вызвана коллективная подпрограмма». Это подразумевает некоторую частичную синхронизацию внутри co_broadcast, но может оказаться более производительной, чем «синхронизировать все» в предыдущем примере. TS 18508 также включает в себя несколько других новых функций, направленных на решение проблем, связанных с CAF 2.0, описанных ниже. Примеры включают группы изображений и событий.

Альтернативный взгляд [ править ]

В 2011 году Университет Райса реализовал альтернативную концепцию расширения Coarray для языка Фортран. [3] По их мнению, выбор дизайна комитетом по стандартизации Fortran 2008 был обусловлен скорее желанием внести в язык как можно меньше модификаций, чем собрать лучший набор расширений для поддержки параллельного программирования . По их мнению, как первоначальный проект Нумрича и Рида, так и расширения Coarray, предложенные для Fortran 2008, страдают следующими недостатками:

  • отсутствует Поддержка подмножеств процессоров ; например, комассивы должны быть распределены по всем изображениям.
  • В расширениях coarray отсутствует понятие глобальных указателей, которые необходимы для создания и управления любой связанной структурой данных.
  • Использование именованных критических секций для взаимного исключения препятствует масштабируемому параллелизму, поскольку взаимное исключение связывается с областями кода, а не с объектами данных.
  • Оператор синхронизации изображений Fortran 2008 не обеспечивает безопасное пространство для синхронизации. В результате операции синхронизации в пользовательском коде, ожидающие выполнения вызова библиотеки, могут помешать синхронизации в вызове библиотеки.
  • Не существует механизмов, позволяющих избежать или допустить задержку при манипулировании данными на удаленных изображениях.
  • Нет поддержки коллективного общения.

Чтобы устранить эти недостатки, группа Университета Райса разрабатывает новую версию модели программирования Coarray Fortran. Новый дизайн Райса для Coarray Fortran, который они называют Coarray Fortran 2.0, представляет собой выразительный набор основанных на Coarray расширений для Fortran, предназначенных для обеспечения продуктивной модели параллельного программирования. По сравнению с Fortran 2008 новые языковые расширения Райс на основе массивов включают некоторые дополнительные функции:

  • подмножества процессов, известные как команды, которые поддерживают массивы, коллективную связь и относительную индексацию образов процессов для парных операций,
  • топологии, которые дополняют команды логической структурой связи,
  • динамическое выделение/освобождение массивов и других общих данных,
  • групповое распределение и освобождение массивов,
  • глобальные указатели для поддержки динамических структур данных,
  • поддержка сокрытия и предотвращения задержек, а также
    • асинхронные копии,
    • асинхронные коллективные операции и
    • функция доставки.
  • расширенная поддержка синхронизации для более детального контроля над выполнением программы.
    • безопасная и масштабируемая поддержка взаимного исключения, включая замки и наборы замков,
    • события, которые обеспечивают безопасное пространство для двухточечной синхронизации,
    • cofence, который вызывает локальное завершение асинхронных операций,
    • Finish, барьерная конструкция SPMD, которая заставляет всю команду выполнять асинхронные операции,

См. также [ править ]

Ссылки [ править ]

  1. ^ А. Штеренлихт, Библиотека Coarray на Фортране для трехмерного моделирования микроструктуры клеточных автоматов. Архивировано 4 марта 2016 г. в Wayback Machine , (2013) В Proc. 7-я конференция PGAS, Ред. М. Вейланд, А. Джексон, Н. Джонсон, Издано Эдинбургским университетом, ISBN   978-0-9926615-0-2
  2. ^ TS 18508 Дополнительные параллельные функции на Фортране
  3. ^ «КоАррей Фортран 2.0» .

Общие [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: F2D4AC4CA53D9399830AD54937707356__1702581060
URL1:https://en.wikipedia.org/wiki/Coarray_Fortran
Заголовок, (Title) документа по адресу, URL1:
Coarray Fortran - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)