Некоторые способы распараллеливания вычислительных процессов:
- Распараллеливание по данным. books.ifmo.ru Программист находит в программе массив данных, элементы которого программа последовательно обрабатывает в определённой функции. books.ifmo.ru Затем он разбивает этот массив на блоки, которые могут быть обработаны независимо друг от друга. books.ifmo.ru После этого программист запускает сразу несколько потоков, каждый из которых выполняет функцию, но при этом обрабатывает отличные от других потоков блоки данных. books.ifmo.ru
- Распараллеливание по инструкциям. books.ifmo.ru Программист находит в программе последовательно вызываемые функции, процесс работы которых не влияет друг на друга (такие функции не изменяют общие глобальные переменные, а результаты одной не используются в работе другой). books.ifmo.ru Затем эти функции программист запускает в параллельных потоках. books.ifmo.ru
- Распараллеливание по информационным потокам. books.ifmo.ru Программа представляет собой набор выполняемых функций, причём несколько функций могут ожидать результата выполнения предыдущих. books.ifmo.ru В таком случае каждое ядро выполняет ту функцию, данные для которой уже готовы. books.ifmo.ru
- Параллелизм на уровне инструкций. habr.com Наиболее низкий уровень параллелизма, осуществляемый на уровне параллельной обработки процессором нескольких инструкций. habr.com На этом же уровне находится пакетная обработка нескольких элементов данных одной командой процессора. habr.com
Также существует гибридный способ распараллеливания. ru.wikipedia.org На многопроцессорных системах с распределённой памятью, где каждый узел системы представляет собой мультипроцессор с общей памятью, запускается многопоточный процесс, который распределяет потоки между процессорами данного узла. ru.wikipedia.org Обмен данными между потоками на узле осуществляется через общую память, а обмен данными между узлами — через передачу сообщений. ru.wikipedia.org