- Unified Parallel C
-
Unified Parallel C (UPC) Класс языка: параллельный, императивный (процедурный), структурный
Автор(ы): 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
Сайт: 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) SUM[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
Примечания
Ссылки
- upc.gwu.edu — официальный сайт Unified Parallel C
- [1] (2003)
Для улучшения этой статьи по информационным технологиям желательно?: - Дополнить статью (статья слишком короткая либо содержит лишь словарное определение).
Параллельные вычисления Общие положения Облачные вычисления · Высокопроизводительные вычисления · Кластерные вычисления · Распределённые вычисления · Грид-вычисления · Гибридные вычисления Уровни паралеллизма Биты · Инструкции · Данные · Задачи Поток выполнения Суперпоточность · Гиперпоточность Теория Закон Амдала · Закон Густавсона — Барсиса · Эффективность затрат · Метрика Карпа-Флэтта · Замедление · Коэффициент ускорения Элементы Процесс · Поток · Файбер · ПМПД · Instruction window Взаимодействие Многопроцессорность · Многопоточность · Когерентность памяти · Когерентность кэша · Недействительность кэша · Барьер · Синхронизация · Контрольная точка Программирование Модели (Скрытый паралеллизм · Явный паралеллизм · Параллелизм) · Таксономия Флинна (SISD • SIMD • MISD • MIMD (SPMD)) · Поток · Неблокирующая синхронизация Компьютерная техника Мультипроцессорность (Симметричная · Асимметричная) · Память (NUMA · COMA · Распределённая · Разделяемая · Распределённая разделяемая) · Одновременная многопоточность
MPP · Суперскалярность · Векторный процессор · Суперкомпьютер · BeowulfAPI Ateji PX · POSIX Threads · OpenMP · OpenHMPP · PVM · MPI · UPC · Intel Threading Building Blocks · Boost · Global Arrays · Charm++ · Cilk · Co-array Fortran · OpenCL · CUDA · Stream · Dryad · DryadLINQ Проблемы Затруднительное распараллеливание · Проблемы Великого Вызова · Блокировка ПО · Масштабируемость · Состояние гонки · Взаимная блокировка · Активный тупик · Детерминированный алгоритм · Параллельное замедление Категории:- Языки программирования по алфавиту
- Языки параллельного программирования
- Языки программирования семейства C
- Параллельные вычислительные системы
Wikimedia Foundation. 2010.