Записи с меткой «параллельное программирование»

Основы технологии MPI на примерах

MPI_Reduce_and_Bcast_efficiency

Параллельное программирование — очень актуальное направление, т.к. большинство современных вычислительных устройств (включая телефоны) являются многоядерными или многопроцессорными. В предыдущей записи я публиковал учебник по OpenMP, однако OpenMP позволяет программировать только системы с общей памятью — в большей части, многоядерные компьютеры. Основной проблемой таких систем является плохая масштабируемость — не так легко и дешево увеличить число …

Учебник по OpenMP

openmp_architectude

OpenMP — это библиотека для параллельного программирования вычислительных систем с общей памятью (дальше кратко описано что это за системы). Официально поддерживается Си, С++ и Фортран, однако можно найти реализации для некоторых других языков, например Паскаль [1] и Java [2]. Все примеры в этом «учебнике» написаны на С++. Библиотека активно развивается, в настоящий момент актуальный стандарт …

Многопоточный сервер Qt. Пул потоков. Паттерн Decorator

рис. 3 decorator implementation

В предыдущей статье [1] была рассмотрена работа с сокетами в библиотеке Qt. Наш сервер сетевого чата работал в одном потоке. Задача текущей статьи — описание многопоточного сервера. Однако, если сервер просто принимает сообщение и передает его всем подключенным клиентам — распараллеливать нечего и потоки не особо нужны. В связи с этим, мы немного усложним задачу …

Параллельные задачи (tasks) OpenMP

рис. 4 диграммы загрузки процессора. быстрая сортировка. OpenMP

В предыдущей статье был рассмотрен параллельный цикл, однако, в OpenMP есть и другие средства распараллеливания. В настоящей статье на примере быстрой сортировки рассмотрены параллельные задачи (tasks). Затем, описаны параллельные задачи OpenMP. В конце статьи показано распараллеливание быстрой сортировки с использованием механизма задач OpenMP.

Библиотека OpenMP. Параллельный цикл

Статья ориентирована на тех, кто не знаком с библиотекой OpenMP, но хотел бы познакомиться. OpenMP — не просто библиотека параллельного программирования, но и стандарт, официально поддерживаемый для языков Си, C++ и Fortran (а неофициально и для других языков, Free Pascal, например [1]). Работает OpenMP только на архитектурах с общей памятью. Библиотека OpenMP задумана так, что …