У вас вопросы?
У нас ответы:) SamZan.net

тема с распеределенной памятьюсборник однотипных вычислительных узлов

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 1.2.2025

*Паралл прогр-исполнение программного кода несколькими вычислителями(код единый).

Разделяется на системы с общей памятью и распределенной памятью(массивно-параллельные системы) также сущ гибрид NUMA неоднородный доступ к памяти.

Система с распеределенной памятью-сборник однотипных вычислительных узлов.(на каждом сетевой кабель,память и др устройства)-кластеры MPI, PVM.Обмен между узлами осуществляется через сеть.Процессоры видят только свою ОП-напрямую к памяти др процессоров обратиться нельзя

Системы с общей памятью-процессоры остаются на узлах,однако память общая и обращение к ней идет через спец шину к общей памяти суперкомьютера  Open MP,treds потоки.Любой процессор может адресовать любое адресное пространство всего кластера.любой процессор имеет доступ к любой ячейке.

Недостатки:немаштабируемость,создание общей памяти намного сложнее,обеспечение конкретностей КЭШей.

Гибридные-на физ уровне-это система с распределенной памятью(кластер),на логическом уровне(интерфейс)-система с общей памятью.Проблемы организации памяти скрыты от программиста.Аппаратура сама осуществляет доступ к памяти

OpenMP (Open Multi-Processing) — открытый стандарт для распараллеливания программ на языках СиСи++ и Фортран. Описывает совокупность директив компилятора, библиотечныхпроцедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с общей памятью.Технология фирмы Intel.

Топологии:

*Директивы:

#pragma omp parallel [раздел[ [,] раздел]...]

структурированный блок

Эта директива сообщает компилятору, что структурированный блок кода должен быть выполнен параллельно, в нескольких потоках. Каждый поток будет выполнять один и тот же поток команд, но не один и тот же набор команд — все зависит от операторов, управляющих логикой программы, таких как if-else.

#pragma omp for опция[[[,] опция] ... ]цикл 
 for

Каждая нить выполнит все итерации цикла

#pragma omp single опция[ [[,] опция]...]структурированный 
 блок

Если в параллельной секции какой нибудь участок кода должен быть выполнен единажды

#pragma omp sections опция[[[,] опция] ...] 

#pragma omp section структурированный 
 блок 
#pragma omp section структурированный 
 блок 
... 
}

Создается группа потоков и распределяется между ними обработка итераций цикла,после выполнения которых потоки начинают обработку оставшихся разделов кода.Если кол-во разделов кода будет больше числа потоков,то обработка нескольких разделов будет отложена до тех пор пока не появятся свободные потоки

#pragma omp master

Выделяется участок кода,который будет выполнен.Все остальные потоки это игнорируют

#pragma omp critical имя[()]структурированный 
 блок

Критическая секция программы.Определяется код,который может выполняться в любой момнт времени только одним потоком

#pragma omp barrier

Дает всем потокам указание ждать друг друга ,перед тем как они продолжат выполнение за барьером.

#pragma omp atomic структурированный 
 блок

Частный случай критической ситуации.Директива относится к идущему непосредственно за ней оператору присваивания.На время выполнения доступ к этой переменной блокируется для всех остальных потоков.

#pragma omp ordered структурированный 
 блок

Определяет блок внутри цикла,который должен выполняться в том порядке,в котором идут итерации в цикле.

#pragma omp task опция[[[,] опция] ...]структурированный 
 блок

Для отдельной,независимой задачи

#pragma omp flash (список переменных)

Синхронизация(установление зн-я)общей переменной

#pragma omp copy m взять из главного потока

#pragma omp copyprivate сделать переменные общими

*Параметры деректив:

SHARED 
Применяется к переменным, которые необходимо сделать общими
. Директивы:parallel

PRIVATE 
Применяется к переменным, которые необходимо сделать приватными. При входе в параллельную область для каждой нити создается отдельный экземпляр переменной, который не имеет никакой связи с оригинальной переменной вне параллельной области.
 Директивы: parallel, for, sections, single

THREADPRIVATE 
Применяется к COMMON-блокам, которые необходимо сделать приватными. Директива должна применяться после каждой декларации COMMON-блока.

FIRSTPRIVATE 
Приватные копии переменной при входе в параллельную область инициализируются значением оригинальной переменной.

LASTPRIVATE 
По окончании параллельно цикла или блока параллельных секций, нить, которая выполнила последнюю итерацию цикла или последнюю секцию блока, обновляет значение оригинальной переменной.

REDUCTION(+:A) 
Обозначает переменную, с которой в цикле производится reduction-операция (например, суммирование). При выходе из цикла, данная операция производится над копиями переменной во всех нитях, и результат присваивается оригинальной переменной
.  Директивы: parallel, for, sections

COPYIN 
Применяется к COMMON-блокам, которые помечены как THREADPRIVATE. При входе в параллельную область приватные копии этих данных инициализируются оригинальными значениями.

DEFAULT Параметр для установки правила по умолчанию на использование переменных в потоках.

IF Параметр для задания условия, только при выполнении которого осуществляется создание параллельного фрагмента. Директивы: parallel

Num_treads Параметр для задания количества создаваемых потоков в параллельной области. Директивы:parallel

Режимы:

OMP-DYNAMIC разрешает среде менять количество потоков

OMP_NESTED способ обрабатывания паралл потокв(вкл-множатся,выкл-нет)

OMP_NUM_THREADS количество потоков по умолчанию

OMP_SHEDULE Переменная для задания способа управления распределением итераций распараллеливаемого цикла между потоками. Значение по умолчанию: static

*Функции:

void omp_set_num_threads (int num_threads);

Установить количество создаваемых потоков

int omp_get_max_threads (void);

Получение максимально возможного количества потоков

int omp_get_num_threads (void);

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

int omp_get_thread_num (void);

Получение номера потока

int omp_get_num_procs (void);

Получение числа вычислительных элементов (процессоров или ядер), доступных приложению

void omp_set_dynamic (int dynamic);

Установить режим динамического создания потоков

int omp_get_dynamic (void);

Получение состояние динамического режима

void omp_set_nested (int nested);

Установить режим поддержки вложенных параллельных фрагментов

int omp_get_nested (void);

Получения состояние режима поддержки вложенных параллельных фрагментов

void omp_init_lock (omp_lock_t *lock);
void omp_init_nest_lock (omp_nest_lock_t *lock);

Инициализировать замок

void omp_set_lock (omp_lock_t &lock);
void omp_set_nest_lock (omp_nest_lock_t &lock);

Установить замок

void omp_unset_lock (omp_lock_t &lock);
void omp_unset_nest_lock (omp_nest_lock_t &lock);

Освободить замок

int omp_test_lock (omp_lock_t &lock);
int omp_test_nest_lock (omp_nest_lock_t &lock);

Установить замок без блокировки

void omp_destroy_lock (omp_lock_t &lock);
void omp_destroy_nest_lock (omp_nest_lock_t &lock);

Перевод замка в неинициализированное состояние.ожидание потоков

double omp_get_wtime (void);

Получение времени текущего момента выполнения программы

double omp_get_wtick (void);

Получение времени в секундах между двумя последовательными показателями времени аппаратного таймера

int omp_in_parallel (void);

Проверка нахождения программы в параллельном фрагменте

*Причины недостатка производительности || программ

1.недооценка трудоемкости организации || цикла2.неэффективность обработки малых объемов программ3.несбалансированность потоков4.переизбыток общих переменных5.ограниченный объем кэш-памяти

Иерархия памяти (сверху вниз)регистры процессора,кэш 1 уровень,кэш 2 уровень,кэш 3 уровень,своя память,удаленная память(Чем выше в уровне иерархии тем выше скорость доступа).Объем дост на каждом уровне все меньше и меньше

Автоматическое распараллеливание работает только для циклов

Эффективность-ускорение\кол во потоков .Функция от числа потоков и размера задач .Э[0,1]Ускорение-отношение времени работы послед прогр-я ко времени работы параллельного прогр-яМасштабируемость-характер зависимости ускорения или эффективности  от кол-ва потоков




1.  Понятие и сущность апелляционного производства5 1
2. Искусственные языки
3. как все то нормален 3
4. появление в 19941996гг
5. Марабу
6. реферат дисертації на здобуття наукового ступеня кандидата історичних наук Чернівці ~ Дисертацією є
7. ТЕМА 1 ЦИВІЛЬНЕ ПРАВО ЯК НАУКА НАВЧАЛЬНА ДИСЦИПЛІНА ТА ГАЛУЗЬ ПРИВА 1
8. реферат дисертації на здобуття наукового ступеня доктора історичних наук Чернівці 2003 Дис
9. Тема- ИСТОРИЯ ГРАЖДАНСКОГО ПРАВА В РОССИЙСКОЙ ФЕДЕРАЦИИ Выпонила- Волкова Инна Владимиров
10. Варіанти 110 п-п Показники