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 комбинирует удобство программирования в парадигме общей памяти и уровень контроля за распределением данных и производительность парадигмы передачи сообщений.
Пример Пример параллельного скалярного умноженияhttp://upc.gwu.edu/tutorials/UPC-SC05.pdf slide 21
# 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
Примечания
Ссылки
(2003)
Категория:Языки параллельного программирования Категория:Языки программирования семейства Си Категория:Параллельные вычислительные системы