Я ищу в Интернете доступные лекционные заметки или другие ресурсы, которые дают хорошее введение в параллельное программирование, подобно параллельным аналогам базовых классов по информатике.
Я сосредоточен на следующем: пока я могу говорить о «разделяй и властвуй», жадных алгоритмах, динамическом программировании и т. П., То есть об основных шаблонах последовательных алгоритмов (и проблем), и у меня нет подходящего языка для классификации подходов в параллельных алгоритмах.
Например, я хотел бы приобрести подходящие термины, чтобы выразить тот факт, что очевидные параллельные подходы к каждой из следующих проблем имеют различное качественное поведение:
- установка массива целых чисел все ноль (отлично масштабируется.)
- суммирование массива целых чисел (чем больше потоков вы используете, тем больше накладных расходов.)
- Для данного массива перечислите продукты каждой записи вместе с каждой другой записью (если мы распараллелим канонический двойной цикл, время выполнения масштабируется до sqrt числа процессоров.)
Достаточно среды совместной памяти, и межпроцессное взаимодействие для меня не столь актуально (на самом деле меня интересуют алгоритмы, которые его вообще избегают). Кроме того, технические аспекты пренебрежимо для меня.