Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Ускорение и эффективность параллельных программ. Информационные зависимости по данным. Закон Амдала




Масштабируемость

. Масштабируемость представляет собой возможность наращивания

числа и мощности процессоров, объемов оперативной и внешней памяти

и других ресурсов вычислительной системы. Масштабируемость должна

обеспечиваться архитектурой и конструкцией компьютера, а также соответствующими средствами программного обеспечения.

Возможность масштабирования системы определяется не только

архитектурой аппаратных средств, но зависит от свойств программного

обеспечения. Масштабируемость программного обеспечения затрагивает все его уровни от простых механизмов передачи сообщений до работы с такими сложными объектами как мониторы транзакций и вся среда прикладной системы. В частности, программное обеспечение должно

минимизировать трафик межпроцессорного обмена, который может

препятствовать линейному росту производительности системы.

В частности пример с GPU! Архитектуры меняются очень быстро, софт быстро устаревает. Это выбешивает!

Совместимость и мобильность программного обеспечения. USE *NIX! =) Ну и писАть надо не криворуко =) Для справки из TOP-500 Operating system family:

· Linux – 482

· Unix – 11

· Mixed – 4

· Windows – 2

· BSD-based – 1

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

(Вставка на всякий пожарный) Технология Hyper Threadin Общая идея гипертрейдинга состоит в том, чтобы за счет небольшого увеличения сложности и размера процессора обеспечить возможность выполнения двух потоков на ресурсах одного ядра. Каждый физический процессор хранит состояние сразу двух потоков: Регистры; Контроллер прерываний APIC; Некоторые специальные таблицы (ITLB). Используются паузы из-за зависимостей по данным и обращений к памяти за счет общего планирования

Ускорение. (у этого “ускорения” нет размерности) S=Ts/Tp (s -serial, p -parallel). [T]=[sec]. [S]=[-]. Линейное ускорение: S = n. Эффект «сверхлинейного» ускорения: наблюдаемое ускорение больше числа процессоров: S > n. Причина – не учитывается загруженность процессоров, либо изменение количества операций.

Эффективность – отношение ускорения к числу процессоров. Показывает насколько эффективно используются аппаратные ресурсы. E=S/n<1.

Закон Амдала. < 1 - доля последовательных вычислений; - общий объем работы.

Информационные зависимости в программе

Зависимости по данным (a=1;b=a). Зависимости по управлению (if(a){ x=c+d; y=1;}).

Граф зависимостей. Операции, соединенные путем из дуг, не могут выполняться одновременно.

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

Средства разработки параллельных программ:

Системы с общей памятью: OpenMP, POSIX Threads, MPI

Системы с распределенной памятью: MPI

Кластерные системы (гибридные): MPI, MPI + OpenMP

GP GPU: CUDA, OpenCL

 

14. Многопоточное программирование: обзор технологий POSIX Threads, функции для создания и завершения потоков.

Процесс – это экземпляр выполняемой программы.

Контекст:регистры;таблица трансляции адресов памяти; etc.

Адресное пространство: текст программы; статические данные; стек; разделяемая память; динамическая память (куча).

 

Тредами (потоки, нити) называются параллельно выполняющиеся потоки управления в рамках одного процесса.

Треды одного процесса разделяют его адресное пространство.

 

 

Threads — обмен через общую память. Process — обмен через посылку сообщений.(ну это и понятно).

Создание и завершение тредов (для этого юзают man!)

int pthread_create (

pthread_t * outHandle,

pthread_attr_t *inAttribute,

void *(*inFunction)(void *),

void *inArg

);

void pthread_exit(void *inReturnValue);

int pthread_join(

pthread_t inHandle,

void **outReturnValue,

);

Создание: outHandle – используется для возвращение в тред-родитель идентификатора треда потомка;

inAttribute – атрибуты треда;

inFunction – указатель на функцию, содержащую код, выполняемый тредом;

inArg – указатель на аргумент, передаваемый в тред;

Завершение: Вызов этой функции приводит к завершению треда. Процесс-родитель получает указатель в качестве возвращаемых данных. Обычное завершение функции и возврат указателя на void*, выполняемой тредом эквивалентно вызову функции pthread_exit, которая используется в случае, когда надо завершить тред из функций, вызванных этой функцией.

Обработка завершения треда на треде-родителе: Вызов этой функции приводит к блокировке родительского треда до момента завершения треда-потомка, соответствующего индентификатору inHandle. В область, указанную параметром outReturnValue, записывается указатель, возвращенный завершившимся тредом. pthread_join приводит к освобождению ресурсов, отведенных на тред (в частности сохранненого возращаемого значения). Необходимо выполнять также для синхронизации основного треда и тредов-потомков.




Поделиться с друзьями:


Дата добавления: 2015-01-03; Просмотров: 573; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.