Unified Parallel C

Unified Parallel C (UPC)
Класс языка параллельный, императивный (процедурный), структурный
Появился в 1999
Автор UPC Consortium
Выпуск 2.12.2/2011-5-18
Система типов статическая
Основные реализации GNU UPC, IBM XL UPC Compilers, HP UPC, Berkeley UPC, Michigan Tech MuPC, Cray UPC
Испытал влияние C, AC, Split-C, Parallel C Preprocessor
Сайт upc.gwu.edu

Unified Parallel C (UPC) — расширение языка программирования Си, предназначенное для high-performance computing на масштабных параллельных компьютерах, в том числе на SMP/NUMA системах с общей памятью (единым адресным пространством) и с распределенной памятью (например, на кластерах). Программисту предоставляется доступ ко всему глобальному разделённому адресному пространству (PGAS), хранимые в нем переменные могут читаться и изменяться любым процессором. При этом каждое значение хранится в физической памяти одного из процессоров. UPC использует модель SPMD (Single Program Multiple Data) в которой степень параллелизма фиксируется при запуске программы, обычно на уровне один поток исполнения на ядро процессора.

Для выражения параллелизма UPC добавляет к ISO C 99 конструкции:

  • Явную параллельную модель исполнения
  • Общее (разделенное) адресное пространство
  • Примитивы синхронизации и модель консистентности памяти
  • Примитивы управления памятью

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

Пример

Пример параллельного скалярного умножения[1]

# include <upc_relaxed.h>
# define N 1000 * THREADS

shared float A[N], B[N];
shared float MUL[N];

void scalar_mul_a_b()
{
   int i;
   upc_forall(i = 0; i < N; i++; i)
       MUL[i] = A[i] * B[i];
}

См. также

  • Co-array Fortran
  • Chapel
  • X10
  • High Performance Fortran
  • OpenMP
  • Partitioned global address space
  • Parallel programming model
  • Software transactional memory
  • ParC (extended C++) http://parallel.cc Архивная копия от 25 сентября 2019 на Wayback Machine

Примечания

  1. http://upc.gwu.edu/tutorials/UPC-SC05.pdf Архивная копия от 31 января 2012 на Wayback Machine slide 21

Ссылки

  • upc.gwu.edu — официальный сайт Unified Parallel C
  • [1] Архивная копия от 12 июня 2010 на Wayback Machine (2003)
Перейти к шаблону «Распределённые вычисления»
ПО для распределённых и параллельных вычислений
Стандарты, библиотеки
  • MPI
  • MPICH
  • OpenMPI
  • OpenMP
  • Список многопоточных библиотек C++
ПО для мониторинга
Управляющее ПО
Перейти к шаблону «Параллельные вычисления»
Общие положения
Уровни параллелизма
Поток выполнения
Теория
Элементы
  • Процесс
  • Поток
  • Файбер
  • ПМПД
  • Instruction window
Взаимодействие
Программирование
Компьютерная техника
API
Проблемы