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
Примечания
- ↑ 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)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.