Макроконвейер

Материал из testwiki
Перейти к навигации Перейти к поиску

Макроконвейерраспределенная многопроцессорная система, обладающая программной и аппаратной поддержкой организации вычислений по макроконвейерному принципу.[1] Этот принцип был предложен в 1978 году советским математиком В. М. Глушковым. Его суть состоит в том, что при распределении вычислительных заданий между процессорами каждому процессору на очередном шаге вычислений дается такое задание, которое может загрузить его работой на определенное время, без взаимодействия с другими процессорами.Шаблон:R Последовательное применение принципа макроконвейера позволяет получить линейное ускорение в зависимости от числа процессоров, используемых для решения задачи.

Математическое описание

Предположим, что нам требуется решить задачу вычисления функции y=f(x). Время вычисления зависит от числа операций, которое в свою очередь, зависит от некоторого числового параметра или набора параметров n=(n1,n2,...), характеризующих исходные данные x. Пусть время выражается зависимостью t(n). Параметр n можно выбрать так, что функция t(n) будет расти с ростом n. Например, если y=f(x)=f(x1,x2) — решение системы линейных алгебраических уравнений с матрицей коэффициентов x1 и вектором свободных членов x2, которое вычисляется одним из прямых методов, то в качестве n можно взять порядок системы. Если же система решается итерационным методом, то в качестве n можно взять пару — порядок системы и число итераций.

Допустим, что распределить вычисление функции y=f(x) равномерно между процессорами возможно так, что каждый из процессоров p будет работать время tp(n)=t(n)/p. В реальной системе стоит также учитывать накладные расходы связанные с обменом информации между процессорами. Представим время потраченое на накладные расходы как wp(n), оно включает в себя собственно время необходимое для передачи данных, время на синхронизацию. Время решения задачи на системе из p процессоров обозначим как Tp(n), тогда ускорение ap=ap(n) при решении задачи с параметром n можно выразить формулой:

ap(n)=T1(n)Tn(n)=t(n)tp(n)+wp(n)=11+wp(n)tp(n)p=bp(n)p.

Формула имеет смысл только если p<k(n), где k(n) — максимальное число процессоров, допускающее разумное разделение вычислительной работы при заданном размере задачи. Если wp(n)/tp(n)<1, то при изменении p от 1 до k(n) производительность растет не медленней, чем линейно с коэффициентом эффективности bp(n)>1/2. Если же время, затрачиваемое на обмен, растет медленнее, чем время вычислений, то с ростом n коэффициент эффективности приближается к 1. Приведенная формула не учитывает многие дополнительные факторы, но она позволяет вести поиск эффективных алгоритмов для решения задач на многопроцессорных распределенных системах.

Примечания

Шаблон:Примечания

Литература

  • Глушков В. М., Погребинский С. Б., Рабинович З. Л. О развитии структур многопроцессорных вычислительных машин, интерпретирующих языки высокого уровня. — Управляющие системы и машины. 1978 г. № 6 — с.61-66.
  • Глушков В. М. Об архитектуре высокопроизводительных машин. — Препринт Института Кибернетики № 78-65, Киев, 1978. — 41 с.
  • Михалевич В. С., Капитонова Ю. В., Летичевский А. А., Молчанов И. Н., Погребинский С. Б. Организация вычислений в многопроцессорных вычислительных системах. Кибернетика. 1984 г. № 3 — с. 1-10

См. также