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