Найти в Дзене
Vector-Magistratum

002. Анализ информационной структуры алгоритмов. ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ.

Давайте чуть отвлечёмся и попробуем понять, почему же нам для практики так важен параллелизм. Никакой теории – проблемы чисто практические (точнее, физические)! Ещё в далёком 1871 г. физик барон Рэлей (полностью Джон Уи́льям Стретт, третий барон Рэле́й - англ. John Strutt, 3rd Baron Rayleigh; 12.11.1842÷30.06.1919) обосновал “закон Рэлея”, согласно которому в случае упругого рассеяния (рассеяние называют упругим, если длина волны света не изменяется при рассеянии) и ма́лости размеров неоднородностей (на коих волны и рассеиваются) по сравнению с длиной волны λ (размер неоднородностей не более чем 0,1λ), интенсивность рассеянной энергии Pрасс. обратно пропорциональна четвёртой степени длины волны, т.е. Pрасс. ≈ 1/(λ^4) = f^4 (где f – частота колебаний, Герц). Интересно, что первым объяснением с использованием этого закона был голубой цвет неба (правда, впоследствии выяснилась некоторая ошибочность этого суждения, но основные посылки оказались верными). Процесс рассеяния электронов на ато
Оглавление

Давайте чуть отвлечёмся и попробуем понять, почему же нам для практики так важен параллелизм. Никакой теории – проблемы чисто практические (точнее, физические)!

Барон лорд Рэлей и его "закон 4-й степени от частоты"

Ещё в далёком 1871 г. физик барон Рэлей (полностью Джон Уи́льям Стретт, третий барон Рэле́й - англ. John Strutt, 3rd Baron Rayleigh; 12.11.1842÷30.06.1919) обосновал “закон Рэлея”, согласно которому в случае упругого рассеяния (рассеяние называют упругим, если длина волны света не изменяется при рассеянии) и ма́лости размеров неоднородностей (на коих волны и рассеиваются) по сравнению с длиной волны λ (размер неоднородностей не более чем 0,1λ), интенсивность рассеянной энергии Pрасс. обратно пропорциональна четвёртой степени длины волны, т.е. Pрасс. ≈ 1/(λ^4) = f^4 (где f – частота колебаний, Герц). Интересно, что первым объяснением с использованием этого закона был голубой цвет неба (правда, впоследствии выяснилась некоторая ошибочность этого суждения, но основные посылки оказались верными). Процесс рассеяния электронов на атомах меди (из которых изготавливаются медные проводники на кристаллах процессоров) соответствует этим условиям и закон Рэлея примени́м к данному процессу. Результат ограничения выделяемой микропроцессором мощности – види́мое прекращение роста тактовой частоты выше пределов в 5÷7 гигагерц.

По Рэлею мелкопроцессор, рассевающий тепловую мощность 100 Ватт при частоте 3 Гигагерца, при увеличении частоты вдвое (до 6 Гигагерц) должен будет рассеивать мощность в 2^4=16 раз больше прежнего (получается неплохая электроплитка). Конечно, это физически невозможно (случаи экспериментов “под азотом” не рассматриваем – долго в этих условиях микропроцессору не продержаться) из-за малой (единицы квадратных сантиметров) поверхности кристалла и (также небольшого) коэффициента теплопередачи этой поверхности. Говорят, из алмаза (материал с очень большим коэффициентом теплопередачи) подло́жку мелкосхем рекомендуется изготавливать…

На рис. 2 автор публикации постарался описать цепочку причин, “приве́дших к ситуации такой”. Итак:

  • снижение размеров кристалла процессора крайне желательно для уменьшения задержек времени при распространении сигналов внутри процессора, что ведёт к затруднению теплоотвода от кристалла (ибо отвод тепла пропорционален площади поверхности)
  • повышение тактовой частоты процессора (по закону 4-й степени лорда Рэлея) приводит к повышению тепловыделения
  • в результате имеем ограничения выделяемой микропроцессором мощности (кривая перестаёт расти выше частот около 5÷7 гигагерц, ибо реальным теплоотводом невозможно рассеять более 100÷200 Ватт тепловой мощности) – график на жёлтом фоне справа внизу на рис. 2)

Автор не забыл упомянуть (розова́тый прямоугольник в правом верхнем углу рис. 2), что имеются долговременные (требующие десятки – а то и сотни лет - исследований) в области совершенствования организации вычислений, смены поколений используемых материалов etc – но на положение дел “теперь и сейчас” они особого влияния не оказывают. Ну говорим же мы многие годы об уходе от кремниевой технологии – ну и что же? В обозримом времени всё равно этого массово ожидать не приходится…

Рисунок 2. Цепочка посы́лок и следствий, приве́дшая к 
возникновению многоядерности в начале XX века
Рисунок 2. Цепочка посы́лок и следствий, приве́дшая к возникновению многоядерности в начале XX века

Решение проблемы "закона 4-й степени от частоты”

В начале XXI века было найдено важное технологическое решение – заменить закон тепловыделения 4-й степени от частоты правилом линейной зависимости от числа вычислительных ядер (для этого они и были “придуманы”). Теперь (даже при неизменной частоте процессора) общая выделяемая тепловая мощность пропорционально количеству вычислительных ядер (при заданной тактовой частоте, конечно)! На миниатюре снизу автор схематично проиллюстрировал (с некоторым оттенком фривольности, правда) метафору происшедшего в начале XXI века с аппаратной частью микропроцессоров.

-2

“Технари” своё дело сделали и отчитались, но сколько проблем они свали́ли на головы бедных программистов, коим приходится до сих пор расхлёбывать чудовищную кашу с вопросами параллелизма!..

Не совсем по теме – но интересно! Проблема роста погрешностей вычислений при длительных вычислениях (супервычислениях)

Ещё одна проблема связана с потерей точности (особенно при сверхбольших - сиречь сверхдлинных - вычислениях). Опять же это связано с физической природой вычислительного процесса – никакой мистики! При описании чисел с плавающей запятой (точкой) принципиально нет возможно представить всё их множество абсолютно точно – точность приходится ограничивать.

А как Вы считаете – по какой причине невозможно представить произвольные числа с плавающей запятой (точкой) с абсолютной точностью?

Производительность компьютеров определяют в количестве операций с плавающей точкой в единицу времени (операций в секунду, float ops / per second). Почему именно операций с плавающей точкой? Ведь, казалось бы, производительность на данных целого типа будет больше (об этом превосходно знал ещё в самом начале XIX века и первопроходец в области вычислительной техники Чарльз Беббидж)… Да просто в большинстве действий в задачах физического и математического моделирования используется этот тип данных (по большому секрету скажу, что ещё и двойной точности – double precision – данные используются)!

При решении задач на супер-ЭВМ общее число арифметических действий огромно (даже для ПЭВМ с производительность 1 Gflops за час работы производится 10^9×60×60≈4×10^12 операций; супер-ЭВМ петафлопсного уровня за час производит 10^15×60×60≈4×10^18 операций); при каждой арифметической операции в “плавающей” арифметике происходит округление и появляется погрешность. В большинстве случаев погрешности имеют разный знак и в процессе вычислений происходит их взаимная частичная компенсация (но не всегда – погрешности со временем накапливаются).

На первый взгляд, знаки возникающих при округлении результатов выполнения арифметических операций погрешностей различны и они (погрешности) должны взаимно компенсироваться… почему этого не происходит (погрешности не взаимно компенсируются, а продолжают накапливаться)?

Возможна ли некая обобщённая теоретическая формула для оценки накопленной погрешности вследствие округлений? В принципе ответ “да” – но реально получить только очень грубую оценку погрешности. Сделать это можно на основе постулирования нормального закона распределения погрешностей и использовании статистики Стьюдента; при этом для средне-квадратичного значения погрешности σ имеем σ≈β×sqrt(e), где e – число арифметических действий с округлением, β – значение младшего разряда числа (при представлении мантиссы числа 3-мя байтами получим β=2^(-24).

Основной вывод из полученной оценки – с ростом числа арифметических действий погрешность растёт пропорционально квадратному корню из числа арифметических действий (а не прямо пропорционально их количеству – как предельная абсолютная погрешность). Интересно, что квадратному корню в соответствующем выражении мы обязаны именно Стьюденту (точнее, Уильяму Госсету, удачно замаскировавшегося псевдонимом от обязательств перед компанией Guinness по неразглашению коммерческой тайны).

Повторю - нако́пленная погрешность растёт линейно при повышении точности представления чисел, но пропорционально квадратному корню из числа произведённых арифметических действий. Это замечательно – при увеличении количества арифметических действий на порядок накопленная погрешность возрастёт всего лишь примерно втрое!

Расчёты показывают, что за час работы ПЭВМ (при производительности ≈10^9 опер/сек это около 4×10^12 операций) при использовании “плавающих” чисел одинарной точности (float, β=2^(-24) имеем σ≈2^(-24) ×(2×10^6))≈0.12, что заставляет усомниться в результате проведённых расчётов; при использовании чисел double float (где β=2^(-53) имеем σ≈10^(-10) - это вполне удовлетворительно, конечно; для петафлопсной ЭВМ за секунду работы σ≈10^(-7), что, пожалуй, допустимо.

Авторские ресурсы:

Информация о канале вообще и его оглавление