ВУЗ:
Составители:
Рубрика:
- 27 -
Как и следовало ожидать (табл.2), снижение отношения
t
t
з
o
/
в высшей
степени благоприятно для повышения ускорения при параллелизации вычис-
лений.
Т.о. даже простейшая модель (не учитывающая реальной диаграммы рас-
параллеливания, задержек на старт процессов, зависимость времени обменов
от размера сообщения и множества других параметров) параллельных вы-
числений позволила выявить важное обстоятельство – время обмена данны-
ми должно быть как
можно меньше времени выполнения последовательности
команд, образующих гранулу.
Если в (2) качестве
Fun1
÷
Fun5
выступают функции типа
sin(), cos(), atan(),
log(), pow()
, характерное время
t
З
выполнения которых единицы микросе-
кунд, время
t
O
обмена данными должно составлять десятые/сотые доли
мксек (столь ‘быстрых’ технологий сетевого межпроцессорного обмена не
существует); для гранул большего размера допустимо время обменов в де-
сятки (в некоторых случаях – даже сотни) мксек. Для реальных задач (тради-
ционно) характерный размер зерна распараллеливания на несколько поряд-
ков превышает характерный размер
оператора традиционного языка про-
граммирования (C/C++ или Fortran).
Соотношение
tt
з
o
определяется в значительной степени структурой и ап-
паратными возможностями вычислительного комплекса (архитектурой мно-
гопроцессорной системы), при этом рациональный размер зерна распаралле-
ливания также зависит от используемой архитектуры.
1.4 Взаимодействие параллельных процессов,
синхронизация процессов
Выполнение команд программы образует вычислительный процесс, в слу-
чае выполнения нескольких программ на общей или разделяемой
памяти и
обмене этих программ сообщениями принято говорить о системе совместно
протекающих взаимодействующих процессов [4].
Порождение и уничтожение процессов UNIX-подобных операционных
системах выполняются операторами (системными вызовами)
fork, exec
и
exit
.
Системный вызов
fork
при выполнении текущим (родительским, parent
process) процессом запрашивает ядро операционной системы на создание
дочернего (child process) процесса, являющегося почти (за исключение зна-
чения идентификатора процесса
pid
) точной копией текущего. Оба процесса
при успешном выполнении
fork
выполняются одновременно с оператора, не-
посредственно следующего после вызова
fork.
Вызовы операторов семейства
exec
загружают исполняемую программу на место вызывающей, произвед-
ший этот вызов (
pid
процесса и файловые дескрипторы сохраняют свои зна-
чения для замещающего процесса),
exec
-вызовы позволяют передавать поро-
жденному процессу параметры. Создание двух разных процессов реализуется
- 27 -
Как и следовало ожидать (табл.2), снижение отношения t o / t з в высшей
степени благоприятно для повышения ускорения при параллелизации вычис-
лений.
Т.о. даже простейшая модель (не учитывающая реальной диаграммы рас-
параллеливания, задержек на старт процессов, зависимость времени обменов
от размера сообщения и множества других параметров) параллельных вы-
числений позволила выявить важное обстоятельство – время обмена данны-
ми должно быть как можно меньше времени выполнения последовательности
команд, образующих гранулу.
Если в (2) качестве Fun1 ÷ Fun5 выступают функции типа sin(), cos(), atan(),
log(), pow(), характерное время t З выполнения которых единицы микросе-
кунд, время t O обмена данными должно составлять десятые/сотые доли
мксек (столь ‘быстрых’ технологий сетевого межпроцессорного обмена не
существует); для гранул большего размера допустимо время обменов в де-
сятки (в некоторых случаях – даже сотни) мксек. Для реальных задач (тради-
ционно) характерный размер зерна распараллеливания на несколько поряд-
ков превышает характерный размер оператора традиционного языка про-
граммирования (C/C++ или Fortran).
Соотношение t o t з определяется в значительной степени структурой и ап-
паратными возможностями вычислительного комплекса (архитектурой мно-
гопроцессорной системы), при этом рациональный размер зерна распаралле-
ливания также зависит от используемой архитектуры.
1.4 Взаимодействие параллельных процессов,
синхронизация процессов
Выполнение команд программы образует вычислительный процесс, в слу-
чае выполнения нескольких программ на общей или разделяемой памяти и
обмене этих программ сообщениями принято говорить о системе совместно
протекающих взаимодействующих процессов [4].
Порождение и уничтожение процессов UNIX-подобных операционных
системах выполняются операторами (системными вызовами) fork, exec и exit.
Системный вызов fork при выполнении текущим (родительским, parent
process) процессом запрашивает ядро операционной системы на создание
дочернего (child process) процесса, являющегося почти (за исключение зна-
чения идентификатора процесса pid) точной копией текущего. Оба процесса
при успешном выполнении fork выполняются одновременно с оператора, не-
посредственно следующего после вызова fork. Вызовы операторов семейства
exec загружают исполняемую программу на место вызывающей, произвед-
ший этот вызов (pid процесса и файловые дескрипторы сохраняют свои зна-
чения для замещающего процесса), exec-вызовы позволяют передавать поро-
жденному процессу параметры. Создание двух разных процессов реализуется
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »
