Конспект курса «Параллельные и распределенные вычисления»

Конспект «Параллельные и распределенные вычисления»

Синхронизация обеспечивает:

Как избежать взаимной блокировки (deadlock):

Гарантированная остановка потока

public class StopThread3 {

    private static volatile boolean stopRequested;

    public static void main(String[] args) throws InterruptedException {
        Thread backgroundThread = new Thread(new Runnable() {
                public void run() {
                    int i = 0;
                    while (!stopRequested)
                        i++;
                }
            }
        );
        backgroundThread.start();
        TimeUnit.SECONDS.sleep(1);
        stopRequested = true;
    }
}

Классификация вычислительных систем (Flynn)

Поток данных/Поток команд
Single Instruction, Single Data (SISD) Multiple Instruction, Single Data (MISD)
Single Instruction, Multiple Data (SIMD) Multiple Instruction, Multiple Data (MIMD)

Детализация MIMD:

False sharing — хранение данных в кэше в виде линий:

Закон Амдала иллюстрирует ограничение роста производительности вычислительной системы с увеличением количества вычислителей:

S_p = \dfrac{1}{\alpha + \dfrac{1 - \alpha}{p}}

Закон Густавсона — Барсиса — оценка максимально достижимого ускорения выполнения параллельной программы, в зависимости от количества одновременно выполняемых потоков вычислений («процессоров») и доли последовательных расчётов:

g = \dfrac{T_{seq}}{T_{seq} + \dfrac{T_{par}}{p}}
T_1 = gT_p + p(1 - g)T_p
S_p = p + (1 - p)g

Прежде чем начать

  • Стоит ли задача усилий?
  • Оптимизирован ли код?
  • Используется ли эффективный алгоритм?
  • Какие части задачи наиболее интенсинвы в вычислительном отношении?
  • Есть ли там параллелизм?
  • Есть ли готовые параллельные реализации?

Декомпозиция бывает: по заданиям, по данным, по потокам данных.

Декомпозиция по заданиям делится на task parallelism (линейная процедура) и divide and conquer (рекурсивная процедура).
Декомпозиция по данным делится на геометрическую декомпозиция (линейная процедура) и рекурсивные данные (рекурсивная процедура).
Декомпозиция по потокам данных делится на конвейерную обработку (регулярный) и координацию на основе событий (нерегулярная).

Конспект дополняется по мере просмотра курса

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: