Параллельные вычисления
Параллельные вычисления — способ организации компьютерных вычислений, при котором программы разрабатываются как набор взаимодействующих вычислительных процессов, работающих параллельно (одновременно). Термин охватывает совокупность вопросов параллелизма в программировании, а также создание эффективно действующих аппаратных реализаций. Теория параллельных вычислений составляет раздел прикладной теории алгоритмов.
Существуют различные способы реализации параллельных вычислений. Например, каждый вычислительный процесс может быть реализован в виде процесса операционной системы, либо же вычислительные процессы могут представлять собой набор потоков выполнения внутри одного процесса ОС. Параллельные программы могут физически исполняться либо последовательно на единственном процессоре — перемежая по очереди шаги выполнения каждого вычислительного процесса, либо параллельно — выделяя каждому вычислительному процессу один или несколько процессоров (находящихся рядом или распределённых в компьютерную сеть).
Основная сложность при проектировании параллельных программ — обеспечить правильную последовательность взаимодействий между различными вычислительными процессами, а также координацию ресурсов, разделяемых между процессами.
Способы синхронизации параллельного взаимодействия
В некоторых параллельных системах программирования передача данных между компонентами скрыта от программиста (например, с помощью механизма обещаний), тогда как в других она должна указываться явно. Явные взаимодействия могут быть разделены на два типа:
- Взаимодействие через разделяемую память: на каждом процессоре мультипроцессорной системы запускается поток исполнения, который принадлежит одному процессу. Потоки обмениваются данными через общий для данного процесса участок памяти. Количество потоков соответствует количеству процессоров. Потоки создаются либо средствами языка (например, в Java или C#, C++ (начиная с C++11), C (начиная с C11)), либо с помощью библиотек явно (например, в С/C++ с помощью PThreads), либо декларативно (например, с помощью библиотеки OpenMP), или автоматически встроенными средствами компилятора (например, High Performance Fortran). Данный вид параллельного программирования обычно требует какой-то формы захвата управления (мьютексы, семафоры, мониторы) для координации потоков между собой.
- Взаимодействие с помощью передачи сообщений: на каждом процессоре многопроцессорной системы запускается однопоточный процесс, который обменивается данными с другими процессами, работающими на других процессорах, с помощью сообщений. Процессы создаются явно, путём вызова соответствующей функции операционной системы, а обмен сообщениями — с помощью библиотеки (например, реализация протокола MPI), или с помощью средств языка (например, High Performance Fortran, Erlang или occam). Обмен сообщениями может происходить асинхронно, либо с использованием метода «рандеву», при котором отправитель блокирован до тех пор, пока его сообщение не будет доставлено. Асинхронная передача сообщений может быть надёжной (с гарантией доставки) либо ненадёжной.
Параллельные системы, основанные на обмене сообщениями, зачастую более просты для понимания, чем системы с разделяемой памятью, и обычно рассматриваются как более совершенный метод параллельного программирования. Существует большой выбор математических теорий для изучения и анализа систем с передачей сообщений, включая модель акторов и различные виды исчислений процессов. Обмен сообщениями может быть эффективно реализован на симметричных мультипроцессорах как с разделяемой когерентной памятью, так и без неё.
У параллелизма с распределенной памятью и с передачей сообщений разные характеристики производительности. Обычно (но не всегда), накладные расходы памяти на процесс и времени на переключение задач у систем с передачей сообщений ниже, однако передача самих сообщений более накладна, чем вызовы процедур. Эти различия часто перекрываются другими факторами, влияющими на производительность.
- Гибридный способ: на многопроцессорных системах с распределённой памятью (DM-MIMD), где каждый узел системы представляет собой мультипроцессор с общей памятью (SM-MIMD), можно использовать гибридный метод программирования. На каждом узле системы запускается многопоточный процесс, который распределяет потоки между процессорами данного узла. Обмен данными между потоками на узле осуществляется через общую память, а обмен данными между узлами — через передачу сообщений. В этом случае количество процессов определяется количеством узлов, а количество потоков — количеством процессоров на каждом узле. Гибридный способ программирования более сложен (требуется особым образом переписывать параллельную программу), но наиболее эффективен в использовании аппаратных ресурсов каждого узла многопроцессорной системы.
- Разумеется в такой системе можно также использовать и исключительно метод передачи сообщений, то есть запустить на каждом процессоре каждого узла отдельный процесс. В этом случае количество процессов (и потоков) будет равно количеству процессоров на всех узлах. Этот способ проще (в параллельной программе надо только увеличить количество процессов), но является менее эффективным, так как процессоры одного и того же узла будут обмениваться друг с другом сообщениями, словно они находятся на разных машинах.
Типичные задачи, допускающие параллельные вычисления
- map — выполнение одной и той же функции над каждым элементом массива входных данных, с получением равного по мощности массива результатов вычисления
- reduce — выполнение одной и той же функции для добавления вклада каждого элемента входных данных в одно итоговое значение
Программные инструменты параллелизма
- OpenMP — стандарт интерфейса приложений для параллельных систем с общей памятью.
- POSIX Threads — стандарт реализации потоков (нитей) выполнения.
- Windows API — многопоточные приложения для C++.
- PVM (Parallel Virtual Machine) позволяет объединить разнородный (но связанный сетью) набор компьютеров в общий вычислительный ресурс.
- MPI (Message Passing Interface) — стандарт систем передачи сообщений между параллельно исполняемыми процессами.
См. также
- Распределённые вычисления
- Многопоточность
- Многозадачность
- Параллельные вычислительные системы
- Классификация параллельных вычислительных систем
- Закон Амдала
- Вычислительный конвейер
- Симметричная мультипроцессорность
- Грид
- GPGPU
- NUMA
- Кластер
- MIPS
- LINPACK
- NAS Parallel Benchmarks
Примечания
- Михалевич, 1989, p. 1.
- RedBook, 1999, p. 1.
- RedBook, 1999, p. 2.
- RedBook, 1999, p. 5.
- RedBook, 1999, p. 4.
Литература
- Словарь по кибернетике / Под редакцией академика В. С. Михалевича. — 2-е. — Киев: Главная редакция Украинской Советской Энциклопедии имени М. П. Бажана, 1989. — 751 с. — (С48). — 50 000 экз. — ISBN 5-88500-008-5.
- RS/6000 SP: Practical MPI Programming. — IBM RedBook, 1999. — 238 с. Архивная копия от 19 января 2008 на Wayback Machine (англ.)
- Воеводин В. В., Воеводин Вл. В. Параллельные вычисления. — СПб.: БХВ-Петербург, 2002. — 608 с. — ISBN 5-94157-160-7.
- Оленев Н. Н. Основы параллельного программирования в системе MPI. — М.: ВЦ РАН, 2005. — 80 с. — ISBN 5201098320.
Ссылки
- DataGrid Project (англ.)
- Open Grid Forum (англ.)
В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Параллельные вычисления, Что такое Параллельные вычисления? Что означает Параллельные вычисления?
Ne sleduet putat s Raspredelyonnye vychisleniya Parallelnye vychisleniya sposob organizacii kompyuternyh vychislenij pri kotorom programmy razrabatyvayutsya kak nabor vzaimodejstvuyushih vychislitelnyh processov rabotayushih parallelno odnovremenno Termin ohvatyvaet sovokupnost voprosov parallelizma v programmirovanii a takzhe sozdanie effektivno dejstvuyushih apparatnyh realizacij Teoriya parallelnyh vychislenij sostavlyaet razdel prikladnoj teorii algoritmov Sushestvuyut razlichnye sposoby realizacii parallelnyh vychislenij Naprimer kazhdyj vychislitelnyj process mozhet byt realizovan v vide processa operacionnoj sistemy libo zhe vychislitelnye processy mogut predstavlyat soboj nabor potokov vypolneniya vnutri odnogo processa OS Parallelnye programmy mogut fizicheski ispolnyatsya libo posledovatelno na edinstvennom processore peremezhaya po ocheredi shagi vypolneniya kazhdogo vychislitelnogo processa libo parallelno vydelyaya kazhdomu vychislitelnomu processu odin ili neskolko processorov nahodyashihsya ryadom ili raspredelyonnyh v kompyuternuyu set Osnovnaya slozhnost pri proektirovanii parallelnyh programm obespechit pravilnuyu posledovatelnost vzaimodejstvij mezhdu razlichnymi vychislitelnymi processami a takzhe koordinaciyu resursov razdelyaemyh mezhdu processami Sposoby sinhronizacii parallelnogo vzaimodejstviyaV nekotoryh parallelnyh sistemah programmirovaniya peredacha dannyh mezhdu komponentami skryta ot programmista naprimer s pomoshyu mehanizma obeshanij togda kak v drugih ona dolzhna ukazyvatsya yavno Yavnye vzaimodejstviya mogut byt razdeleny na dva tipa Vzaimodejstvie cherez razdelyaemuyu pamyat na kazhdom processore multiprocessornoj sistemy zapuskaetsya potok ispolneniya kotoryj prinadlezhit odnomu processu Potoki obmenivayutsya dannymi cherez obshij dlya dannogo processa uchastok pamyati Kolichestvo potokov sootvetstvuet kolichestvu processorov Potoki sozdayutsya libo sredstvami yazyka naprimer v Java ili C C nachinaya s C 11 C nachinaya s C11 libo s pomoshyu bibliotek yavno naprimer v S C s pomoshyu PThreads libo deklarativno naprimer s pomoshyu biblioteki OpenMP ili avtomaticheski vstroennymi sredstvami kompilyatora naprimer High Performance Fortran Dannyj vid parallelnogo programmirovaniya obychno trebuet kakoj to formy zahvata upravleniya myuteksy semafory monitory dlya koordinacii potokov mezhdu soboj Vzaimodejstvie s pomoshyu peredachi soobshenij na kazhdom processore mnogoprocessornoj sistemy zapuskaetsya odnopotochnyj process kotoryj obmenivaetsya dannymi s drugimi processami rabotayushimi na drugih processorah s pomoshyu soobshenij Processy sozdayutsya yavno putyom vyzova sootvetstvuyushej funkcii operacionnoj sistemy a obmen soobsheniyami s pomoshyu biblioteki naprimer realizaciya protokola MPI ili s pomoshyu sredstv yazyka naprimer High Performance Fortran Erlang ili occam Obmen soobsheniyami mozhet proishodit asinhronno libo s ispolzovaniem metoda randevu pri kotorom otpravitel blokirovan do teh por poka ego soobshenie ne budet dostavleno Asinhronnaya peredacha soobshenij mozhet byt nadyozhnoj s garantiej dostavki libo nenadyozhnoj Parallelnye sistemy osnovannye na obmene soobsheniyami zachastuyu bolee prosty dlya ponimaniya chem sistemy s razdelyaemoj pamyatyu i obychno rassmatrivayutsya kak bolee sovershennyj metod parallelnogo programmirovaniya Sushestvuet bolshoj vybor matematicheskih teorij dlya izucheniya i analiza sistem s peredachej soobshenij vklyuchaya model aktorov i razlichnye vidy ischislenij processov Obmen soobsheniyami mozhet byt effektivno realizovan na simmetrichnyh multiprocessorah kak s razdelyaemoj kogerentnoj pamyatyu tak i bez neyo U parallelizma s raspredelennoj pamyatyu i s peredachej soobshenij raznye harakteristiki proizvoditelnosti Obychno no ne vsegda nakladnye rashody pamyati na process i vremeni na pereklyuchenie zadach u sistem s peredachej soobshenij nizhe odnako peredacha samih soobshenij bolee nakladna chem vyzovy procedur Eti razlichiya chasto perekryvayutsya drugimi faktorami vliyayushimi na proizvoditelnost Gibridnyj sposob na mnogoprocessornyh sistemah s raspredelyonnoj pamyatyu DM MIMD gde kazhdyj uzel sistemy predstavlyaet soboj multiprocessor s obshej pamyatyu SM MIMD mozhno ispolzovat gibridnyj metod programmirovaniya Na kazhdom uzle sistemy zapuskaetsya mnogopotochnyj process kotoryj raspredelyaet potoki mezhdu processorami dannogo uzla Obmen dannymi mezhdu potokami na uzle osushestvlyaetsya cherez obshuyu pamyat a obmen dannymi mezhdu uzlami cherez peredachu soobshenij V etom sluchae kolichestvo processov opredelyaetsya kolichestvom uzlov a kolichestvo potokov kolichestvom processorov na kazhdom uzle Gibridnyj sposob programmirovaniya bolee slozhen trebuetsya osobym obrazom perepisyvat parallelnuyu programmu no naibolee effektiven v ispolzovanii apparatnyh resursov kazhdogo uzla mnogoprocessornoj sistemy Razumeetsya v takoj sisteme mozhno takzhe ispolzovat i isklyuchitelno metod peredachi soobshenij to est zapustit na kazhdom processore kazhdogo uzla otdelnyj process V etom sluchae kolichestvo processov i potokov budet ravno kolichestvu processorov na vseh uzlah Etot sposob proshe v parallelnoj programme nado tolko uvelichit kolichestvo processov no yavlyaetsya menee effektivnym tak kak processory odnogo i togo zhe uzla budut obmenivatsya drug s drugom soobsheniyami slovno oni nahodyatsya na raznyh mashinah Tipichnye zadachi dopuskayushie parallelnye vychisleniyamap vypolnenie odnoj i toj zhe funkcii nad kazhdym elementom massiva vhodnyh dannyh s polucheniem ravnogo po moshnosti massiva rezultatov vychisleniya reduce vypolnenie odnoj i toj zhe funkcii dlya dobavleniya vklada kazhdogo elementa vhodnyh dannyh v odno itogovoe znachenieProgrammnye instrumenty parallelizmaOpenMP standart interfejsa prilozhenij dlya parallelnyh sistem s obshej pamyatyu POSIX Threads standart realizacii potokov nitej vypolneniya Windows API mnogopotochnye prilozheniya dlya C PVM Parallel Virtual Machine pozvolyaet obedinit raznorodnyj no svyazannyj setyu nabor kompyuterov v obshij vychislitelnyj resurs MPI Message Passing Interface standart sistem peredachi soobshenij mezhdu parallelno ispolnyaemymi processami Sm takzheRaspredelyonnye vychisleniya Mnogopotochnost Mnogozadachnost Parallelnye vychislitelnye sistemy Klassifikaciya parallelnyh vychislitelnyh sistem Zakon Amdala Vychislitelnyj konvejer Simmetrichnaya multiprocessornost Grid GPGPU NUMA Klaster MIPS LINPACK NAS Parallel BenchmarksPrimechaniyaMihalevich 1989 p 1 RedBook 1999 p 1 RedBook 1999 p 2 RedBook 1999 p 5 RedBook 1999 p 4 LiteraturaSlovar po kibernetike Pod redakciej akademika V S Mihalevicha 2 e Kiev Glavnaya redakciya Ukrainskoj Sovetskoj Enciklopedii imeni M P Bazhana 1989 751 s S48 50 000 ekz ISBN 5 88500 008 5 RS 6000 SP Practical MPI Programming IBM RedBook 1999 238 s Arhivnaya kopiya ot 19 yanvarya 2008 na Wayback Machine angl Voevodin V V Voevodin Vl V Parallelnye vychisleniya SPb BHV Peterburg 2002 608 s ISBN 5 94157 160 7 Olenev N N Osnovy parallelnogo programmirovaniya v sisteme MPI M VC RAN 2005 80 s ISBN 5201098320 SsylkiDataGrid Project angl Open Grid Forum angl V state ne hvataet ssylok na istochniki sm rekomendacii po poisku Informaciya dolzhna byt proveryaema inache ona mozhet byt udalena Vy mozhete otredaktirovat statyu dobaviv ssylki na avtoritetnye istochniki v vide snosok 20 oktyabrya 2024
