Статья
На  главнуюСтарая версия сайта

Перевод статьи на тему выпускной работы магистра

Parallel computing:

Параллельное вычисление - одновременное выполнение одной и той же задачи (разбитой и специально подготовленной) на множестве процессоров для получения более быстрого результата. Идея основана на факте, что процесс разрешения проблемы обычно может делиться на более мелкие задачи, которые, возможно, осуществлять одновременно с некоторой координацией.
Содержание
1 Параллельная вычислительная система
1.1 Теория и практика
1.2 Производительность против стоимость
2 Терминология в параллельном вычислении
3 Алгоритмы
5 Параллельное программирование
Параллельные вычислительные системы
Параллельная вычислительная система - компьютер с более чем одним процессором для распараллеливания. Многоядерные процессоры также идеальны, чтобы создать параллельные вычислительные системы.
Есть много различных видов параллельных компьютеров. Они отличаются видом взаимной связи между процессорами (известными, как "элементарные процессоры" или PEs), процессорами и памятью.
Традиционно, таксономия Flynn классифицирует параллельные (и последовательные) компьютеры на
    " все процессоры выполняют одинаковые команды в одно и то же время (единые командные/множественные данные -- SIMD) или
     " каждый процессор выполняет различные команды (множественные командные/множественные данные -- MIMD).
Единственный главный путь классификации параллельных компьютеров основан на их архитектуре памяти. Общая память - параллельные компьютеры имеют множество процессоров, обращающихся ко всей доступной памяти, как глобальному адресному пространству. Они, кроме того, могут делиться на два основных класса, основанного на времени доступа к памяти: унифицированный доступ к памяти(UMA) или не унифицированный доступ к памяти (NUMA). Альтернатива - распределенная память, параллельные компьютеры также имеют множество процессоров, но каждый из них может обратиться только к его собственной локальной памяти. Не существует никакого глобального адресного пространства памяти. Параллельные вычислительные системы могут быть также классифицированы по числу процессоров в них. Системы с тысячами таких процессоров известны, как массивная параллельность
Параллельные машины также делятся на симметрично и асимметрично мультипроцессорные, в зависимости от того, способны ли к выполнению всего кода операционной системы и, скажем, доступу к устройствам Ввода/Вывода или если некоторые процессоры более или менее привилегированны. Также разнообразны архитектуры, которые были развиты, чтобы достичь параллельного выполнения. Один такой пример "Архитектура Кольцо", где процессоры связывает структура кольца, позволяя всем процессорам считывать и записать данные одновременно, это позволяет достичь истинно параллельной среды.
Теория и практика
Параллельные компьютеры теоретически моделируются, как Параллельные Машины Прямого Доступа (ПМПД). Модель ПМПД пренебрегает числом взаимных связей между учредительными вычислительными модулями, но он очень полезен в достижении верхней границы для параллельной разрешимости многих проблем. Фактически взаимная связь играет существенную роль.
Процессоры, возможно, также связываются в порядок, который может сотрудничать в разрешении проблемы или, они могут работать полностью независимо, возможно под управлением другого процессора, который распределяет работу остальным, и получает результаты от них ("процессорная ферма").
Процессоры в параллельном компьютере могут связываться друг с другом множеством путей, в том числе общая (или много портовая, или мультиплексированная) память, общая шина или связывающая мириады топологий сеть, включающих звезду, кольцо, дерево, гиперкуб, объемный гиперкуб (гиперкуб более чем с одним процессором в узле), n-мерную сеть, и т.п. Параллельные компьютеры, основанные на связующей сети, должны использовать некоторый вид маршрутизации, чтобы доставлять принятие сообщений узлам, которые непосредственно не подключены. Так же, память, может быть частной у каждого процессора, открытой для ряда процессоров, или глобально открытой. Систолический массив - пример мультипроцессора с фиксировано функциональными узлами, локальной памятью и без маршрутизации сообщений.
Подходы к параллельным компьютерам включают:
    Мультипроцессорность
    Компьютерный кластер
    Параллельные суперкомпьютеры
    Распределенные вычисления
    Вычислительные сетки

Производительность против стоимости
Система в n параллельных процессоров - менее эффективна, чем один в n-раз более быстрый процессор, параллельная система чаще дешевле для формирования. Параллельное вычисление - превосходное решение для задач, которые требуют очень большого количества вычислений, имеют ограничения на время завершения и особенно для тех, которые можно разделить на n потоков для исполнения. Фактически, в последние годы, самые высоко производительные вычислительные системы, также известные, как суперкомпьютеры, имеют параллельную архитектуру.
Терминология в параллельном вычислении
Некоторые наиболее часто использываемые выражения в параллельных вычислениях являются:
     " Задача - логически высокоуровневая, дискретная, независимо секционная вычислительная работа. Задачу обычно выполняет процессор, как программу
     " Синхронизация - координация одновременных задач, для гарантии корректности и избегания неожиданных условий гонок.
     " Ускорение вычислений - также называемая параллельным ускорением, которое определено, как время лучшего серийного исполнения, деленного на время параллельного исполнения.
     " Универсальность - способность параллельной системы приобрести пропорциональное увеличение в параллельном ускорении вычислений с добавлением большего количества процессоров.

Алгоритмы
На практике, достичь линейного повышения производительности (повышение производительности пропорционально числу процессоров) очень трудно. Это, потому что по природе, много алгоритмов в общем последовательны (Закон Amdahl'а заявляет это больше формально).
Вплоть до определенной точки, определенные рабочие нагрузки могут извлечь выгоду из параллелизма трубопровода, при добавлении процессоров. Это подход фабричного сборочного конвейера, для разделения работы. Если работа может делиться на n стадии, где идет дискретное передвижение от стадии к стадии, то для этого можно использовать вплоть до n процессоров. Однако, самая медленная стадия задержит другие стадии и при этом все n процессоров будут редко использоваться полностью.
Большинство алгоритмов должно быть перепроектировано для обеспечения эффективного использования параллельных технических средств. Посмотрите параллельные алгоритмы. Программы который корректно работают в системе с единственным ЦП, могут работать не верно в параллельной среде. Это, потому что множество копии одной и той же программы, могут мешают друг другу, например в доступе к одному участку памяти в одно и то же время.
Поэтому, в параллельной системе требуется осторожное программирование.

Параллельное программирование

Параллельное программирование вмещает проектирование, осуществление, и настройка программ параллельных компьютеров, которые используют лежащие в основе параллельные вычислительные системы. Это также ссылается на применение параллельных методов программирования для существующих последовательных программ, то есть параллелизацией, для решения больших задач, или для сокращения продолжительность исполнения или для обоих случаев.
Параллельное программирование фокусируется на разделении цельной проблемы на отдельные задачи, распределяя по процессорам и синхронизируя их, для получения значимых результаты. Перед использованием параллельного программирования, нужно понимать одно, что целевая проблема - в целом параллелизируема, по большей части без зависимости от данным. Затем проблема может
быть разделена, основываясь на доменной декомпозиции или функциональной декомпозиции, или на гибриде их обоих.
Есть два основных подхода к параллельному программированию.
     " неявный параллелизм -- система (компилятор или некоторая другая программа) делит проблему и распределяет задачи для процессоров автоматически (также называемая к автоматическим распараллеливающим компилятором) -- или
    " явный параллелизм где программист должен аннотировать свою программу, чтобы указания, какое она должна быть разделена.
Множество факторов и методов сходятся на конечной работе параллельного программирования, подобно:
     " Балансировка загрузки попытка загружать все процессоры путем перемещения задачь от сильно загруженных процессоров к меньше загруженим.
Некоторые люди полагают, что параллельное программирование это синоним с одновременным программированием. Другие изображают различия между параллельным программированием, которое использует четкий и структурированный шаблон связей между процессами и направленное на параллельное выполнение процессов для увеличения производительности, и одновременным программированием, которое обычно вмещает определение новых шаблонов коммуникации между процессами, которые должны быть сделаны согласованно по причинам кроме как работа. В любом случае, общение между процессами выполняется или через общую память, или через передачу сообщений, каждый должен осуществлять это в терминах другого.

Наверх

created by Davletchanov Dmitry aka dr_zlo
главная |библиотека | результаты поиска | автореферат | индивидуальное задание | список ссылок | сайт ДонНТУ