Унифицированный параллельный C - Unified Parallel C

Унифицированный параллельный C (UPC)
Парадигма параллельный , передача сообщений , императивный ( процедурный ), структурированный
Разработано Консорциум UPC
Стабильный выпуск
2020.12.0 / 11 декабря 2020 г.  ( 2020-12-11 )
Печатная дисциплина статический , слабый , явный
Операционные системы Кроссплатформенность
Интернет сайт upc-lang .org
Основные реализации
Clang UPC , GNU UPC , Компиляторы IBM XL UPC , HP UPC , Berkeley UPC , Michigan Tech MuPC , Cray UPC
Под влиянием
C , AC, Split-C , Препроцессор параллельного C

Unified Parallel C ( UPC ) - это расширение языка программирования C, предназначенное для высокопроизводительных вычислений на крупномасштабных параллельных машинах , в том числе с общим глобальным адресным пространством ( SMP и NUMA ) и с распределенной памятью (например, кластеры ). Программист представлен с одной общим, секционированным адресным пространством, где переменными может быть непосредственно считывать и записывать любой процессор , но каждый переменный физически связан с одним процессором. UPC использует модель вычислений с одной программой и несколькими данными ( SPMD ), в которой степень параллелизма фиксируется во время запуска программы, обычно с одним потоком выполнения на процессор.

Чтобы выразить параллелизм, UPC расширяет ISO C 99 следующими конструкциями:

  • Модель явно параллельного выполнения
  • Общее адресное пространство ( shared квалификатор хранилища) с локальными для потока частями (обычные переменные)
  • Примитивы синхронизации и модель согласованности памяти
  • Явные коммуникативные примитивы, например. грамм. upc_memput
  • Примитивы управления памятью

Язык UPC развился из опыта работы с тремя другими более ранними языками, которые предлагали параллельные расширения ISO C 99: AC, Split-C и препроцессор Parallel C (PCP). UPC - это не расширенный набор этих трех языков, а скорее попытка выделить лучшие характеристики каждого из них. UPC сочетает в себе преимущества программируемости парадигмы программирования с общей памятью и контроль над компоновкой данных и производительность парадигмы программирования передачи сообщений .

Смотрите также

внешняя ссылка