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

Методы оценки вычислительных характеристик задач предметной области и поддерживающих их аппаратных платформ

Разбить на страницы
Показывать лекцию целиком

1.1. Методика оценки требуемой пропускной способности вычислительных систем, ориентированных на решение "критических" задач предметной области

Реальная ценность вычислительных систем (ВС), ориентированных на решение "критических" задач предметной области, определяется качеством оценки требуемой пропускной способности по потокам инструкций и данных. При этом разработчику ВС известны следующие исходные данные, характеризующие предметную область:

  • алгоритм или совокупность возможных алгоритмов преобразования информации;
  • объемы, моменты поступления и точность представления входных данных;
  • точность, интервалы времени или циклы получения результатов вычислений.
  • Заказчика или покупателя таких ВС в первую очередь интересуют аппаратно-временные затраты на реализацию его алгоритмов, а системные издержки организации вычислений им воспринимаются как накладные расходы. Поэтому алгоритмические затраты должны быть удовлетворены в полном объеме, так как именно они определяют потребительскую ценность создаваемой ВС, а системные аппаратно-временные издержки необходимо минимизировать в ходе разработки, чтобы добиться приемлемого соотношения цены и качества.

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

    При таком подходе к проектированию или выбору (Б)ВС:

  • главной целью является поддержание темпа реального времени, диктуемого предметной областью;
  • главным ограничением является частота $$F_{c}$$ или время цикла $$\tau_c = 1/F_c$$ исполнения инструкции, достижимые в рамках освоенных или осваиваемых технологий производства аппаратуры;
  • варьируемыми параметрами при поиске компромисса в соотношении цены и качества являются "сложность" алгоритмов и вытекающие из нее точность и объемы преобразуемой информации.
  • Такая методика оценки качества (Б)ВС исходит из безусловной поддержки темпа реального времени, диктуемого предметной областью, и для его реализации прежде всего необходимо получить аналитическую оценку "длины" программы $$L_p$$ вычислительного алгоритма "критической" задачи, которую в традиционных вычислительных технологиях измеряют максимальным количеством ассемблерных инструкций, реально расходуемых на ее решение. В нетрадиционных вычислительных технологиях "длину" программы приходится измерять в тех (микро)программных единицах, для которых известен или задан цикл исполнения.

    Основная трудность оценки "длины" программы $$L_p$$ связана с нали-чием в вычислительном алгоритме операторов условных переходов типа $$if$$ которые ставят ее в прямую зависимость от содержимого обрабатываемых потоков данных, которые в данном случае необходимо рассматривать как случайные. Для (Б)ВС вносимая операторами $$if$$ "случайность" и вытекающая из нее неопределенность в длине программы ослабляется тем обстоятельством, что в высокоответственные применения оператор условных переходов должен мажорироваться оператором $$for$$, который, с одной стороны, призван лимитировать максимально допустимую по темпу реального времени продолжительность исполнения каждого цикла программы, а с другой стороны, должен повысить ее устойчивость к информационным сбоям, разрывая "бесконечные" циклы, чреватые потерей управления опасными технотронными комп лексами двойного назначения.

    Зная "длину" программы $$L_p$$, можно выбрать тип архитектуры, "иде-альной" в том смысле, что при этом были учтены только алгоритмические затраты, а системные издержки считались нулевыми. Для этого достаточно воспользоваться соотношениями (1.5)-(1.7) раздела 1.5 курса "Задачи и модели вычислительных наноструктур" и проверить неравенства: $$L < \max L(ОКОД) = \Delta T_0 /\tau_c$$, $$L < \max L(ОКМД) = T_{k} / \tau_c$$ или $$L < \max L(МКМД) = T _{0}/\tau_c $$, где $$\Delta T_{k}$$ - дискрет времени, диктуемый теоремой Котельникова, $$T_{k} = \Delta T_{k} * N$$ - цикл формирования циклически обрабатываемой выборки данных из $$N$$ операндов, а $$T _{0}$$ - допустимое время задержки в (Б)ВС. Если ни одно из этих неравенств не выполняется, то необходимо переходить на уровень распараллеливания отдельных ассемблерных инструкций, то есть к архитектурам с микрокомандным уровнем доступа, гарантирующим максимально возможное функциональное насыщенное каждого такта работы (Б)ВС. Как показывает практика, выйти за рамки "идеальной" архитектуры разработчику в дальнейшем не удается, и ему остается только разрабатывать комплекс мер, направленных на минимизацию системных аппаратно-временных издержек.

    Данная методика апробирована при создании спецпроцессоров обработки сигналов и изображений, как на основе заказных СБИС, так и на основе систолических и бит-матричных СБИС [70, 138-144]. Указанные аппаратные платформы поддерживают предметную область, для которой характерны [70]:

  • Обработка точек изображения, которая представляет собой преобразование полутонового изображения, выравнивание гистограмм, переквантование, отображение яркости и т. п.
  • Фильтрация сигналов и изображений, которая может осуществляться сравнением с эталоном, оконными методами, сверткой и/или корреляцией, линейной фазовой, медианной, винеровской, калманов-ской, адаптивной и т. п. фильтрацией.
  • Матричная алгебра, которая включает сингулярное (однозначное) разложение, геометрическое вращение, оценки максимальной энтропии или правдоподобия, вычисление псевдообращения и восстановление изображения, стохастическое оценивание параметров и т. п.
  • Преобразования сигналов и изображений, к которым в первую очередь относят преобразования Фурье, Хаара, Хафа, Адамара, Карунена - Лоэва и т. п.
  • Сортировка, которую можно выполнить методом "слияния", "пузырька", и т. п.
  • Признав, что циклы $$for$$ являются неотъемлемой составляющей таких (Б)ВС, решаемые ими задачи можно разбить на классы с характерной зависимостью количества арифметико-логических операций от количества операндов $$N$$ в циклически обрабатываемых потоках данных (табл. 1.1 [70]).

    Численные значения табл. 1.1 соответствуют параметрам "критических" задач, актуальных на конец 80-х годов прошлого столетия. Тем не менее уже тогда требовались (Б)ВС с производительностью порядка $$10^{12}-10^{15}$$ ассемблерных операций в секунду. Если принять во внимание, что цикл исполнения ЦПОС - и RISC -инструкций был уже постоянен и в тот период времени не превышал 1 ГГЦ, становится ясно, что суммарный коэффициент распараллеливания вычислений должен был находиться на уровне $$10^{4}-10^{6}$$ и был достижим только в архитектурах МКМД-типа с микрокомандным уровнем доступа.

    Требуемая производительность алгоритмов цифровой обработки сигналов и изображений
    Тип алгоритма Необходимая производительность
    Линейные, типа $$O(N)$$: $$10^{2} -10^{5}$$ MOPS
    Пространственная фильтрация
    Свертка
    Обнаружение контуров
    Второго порядка, типа $$O(N^2)$$: $$10^{3} 10^{7}$$ MOPS
    Сортировки
    Медианная фильтрация
    Классификация ближайшего соседа
    Третьего порядка, типа $$O(N^3)$$: $$10^{4}-10^{8}$$ MOPS
    Векторно-матричная алгебра
    Спектральные вычисления
    Адаптивная фильтрация

    Однако (Б)ВС решают не одну и не одни только "критические" задачи. Поэтому их операционный ресурс постоянно перераспределяется по ходу вычислений между решаемыми задачами, что требует учета системных издержек на организацию вычислений. Данное обстоятельство только подтверждает тот факт, что в любой нетрадиционной архитектуре (Б) ВС всегда найдется уровень управления фон-неймановского типа. В простейшем случае такое управление выполняется по жесткой циклограмме и связанные с ним издержки в основном сводятся к плановой обработке "прерываний", которые неминуемо вызывают "паразитные" перемещения программ и данных по иерархии запоминающих устройств (Б)ВС: регистры - КЭШ - ОЗУ - внешние ЗУ и обратно.

    Но циклограмма жестко регламентирует только порядок (пере)запу-ска задач, время решения которых может флуктуировать в достаточно больших пределах (1,5-3 раза и более) из-за наличия циклов по условию. Объясняется это тем, что с помощью мажорирующих циклов $$for$$ удается ограничить только максимально допустимое время выполнения этого цикла, а реальные временные затраты могут оказаться значительно меньше, если сработает оператор $$if$$. В результате трудно рассчитать как время обработки одного планового "прерывания", которое зависит от фазы выполнения прерванной задачи, так и количество таких "прерываний". Основным источником такой неопределенности являются паразитные перезагрузки памяти на участках кеш - ОЗУ - внешние ЗУ, что вынуждает брать в кавычки термин "прерывание".

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

    Чтобы компенсировать возникающие в реальных условиях временные простои, разработчики (Б)ВС стараются запускать в образующихся "паузах" тестовые программы, варьируя качеством их решения (глубиной и полнотой диагностики) в зависимости от наличного ресурса времени. Но такие меры, как правило, малоэффективны, так как именно программы диагностики тяготеют к массовому использованию операторов $$if$$, с помощью которых минимизируется пространство перебора тестов за счет информации, полученной на предыдущих фазах тестирования. В итоге требуемую пропускную способность по потокам инструкций и данных приходится определять исходя из самых худших условий запуска каждой последующей фазы вычислений, что приводит к 2-3-кратному превышению вычислительных затрат над затребованными алгоритмическими затратами.

    В случае ЭВМ общего назначения описанная ситуация резко усугубляется априорной неопределенностью сферы использования, что приводит к усложнению систем управления аппаратными ресурсами во время вычислений, которые сами становятся главными "пожирателями" этих же ресурсов, так как рассчитаны "на все случаи жизни". В результате системные временные затраты такого управления могут на 1-2 порядка превосходить аналогичные затраты на обслуживание алгоритма пользователя.

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

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

    При оценке качества вычислительной техники все используемые показатели рекомендуется разбивать на 2 группы [106]: требования и атрибуты, первые из которых представляют собой спецификацию того, что должна делать система, а вторые включают характеристики для предпочтительного выбора при прочих равных условиях. Требования задают необходимые условия, которым должна удовлетворять система, и они выражаются совокупностью как измеряемых, так и качественных показателей: пропускная способность, массо-габариты, потребляемая мощность, стоимость, отказоустойчивость, интеллектуальный уровень программной поддержки и т. п. К атрибутам, как правило, относят субъективные показатели, которые делают проект инвестиционно привлекательным, а созданное изделие - конкурентоспособным. К архитектурным атрибутам обычно относят: гибкость (масштабируемость), расширяемость и комплексируемость, которые в совокупности характеризуют открытость системы.

    При оценке пропускной способности по потокам инструкций и данных необходимо знать один или несколько показателей, характеризующих [106]:

  • время цикла выполнения команды (арифметико-логической, чтения-записи, ввода-вывода), которое в большей мере характеризует технологический уровень производства аппаратуры, чем потенциальные возможности ее использования;
  • время выполнения "взвешенной" смеси команд, которая отражает гистограмму их использования программами предметной области;
  • время решения представительной задачи, которая больше характеризует предметную область, чем используемую вычислительную технологию "собственных нужд", от которой и зависят системные временные издержки;
  • время решения испытательной программы, которая, с одной стороны, достаточно полно представляет особенности предметной области, а с другой стороны - особенности работы испытуемой машины, так как она должна быть написана с использованием инструментальной платформы испытуемой ЭВМ;
  • время решения синтетической программы, которая представляет собой комбинацию испытательной и представительной программы за счет того, что в первой учтены особенности работы подсистем ввода-вывода, управления памятью и другие системотехнические возможности испытуемой системы.
  • Пропускную способность (Б)ВС можно также оценить на основе аналитических, событийных или эмпирических моделей, а также прямым измерением характеристик составляющих блоков и устройств. Главные ограничения аналитических моделей связаны с трудностями описания взаимодействий аппаратуры и программного обеспечения, последнее из которых обычно приходится рассматривать как "черный ящик". Главные проблемы событийных и эмпирических моделей, а также прямого измерения состоят в сложности и стоимости их разработки.

    В табл. 1.2 приведены эмпирические данные качества применения каждого метода оценки производительности по состоянию на 1985 год [106]. Здесь 1 означает, что метод использовался, но оказался неадекватным, 2 - метод оказался недостаточно полезным, 3 - метод дал хорошие результаты и прочерк - метод не применялся. За прошедшие годы база апробации методов оценки расширилась, сами методики углубились и удешевились за счет создания специализированных инструментальных платформ их реализации.

    Показатели применимости метода оценки производительности (Б)ВС
    Метод оценки Оценка при выборе системы Расчет при разработке Измерение для реконфигурации
    Новая аппаратура Новые программы Создаваемая аппаратура Создаваемые программы Реконфигурация аппаратуры Реконфигурация программ
    Длительность цикла 1 - 1 - - -
    Смесь команд 1 - 1 - - -
    Представительные программы 2 1 2 1 - 1
    Аналитические модели 2 1 2 1 2 -
    Испытательные программы 3 3 2 2 2
    Синтетические программы 3 3 2 2 2 2
    Моделирование 3 3 3 3 3 3
    Прямое измерение 2 2 2 2 3 3

    Тем не менее, данные табл. 1.2 позволяют сделать следующие выводы, которые справедливы и для современных условий:

  • наиболее экономичную и достаточно достоверную оценку пропускной способности (Б)ВС по потокам инструкций и данных можно получить на основе комплексного использования различных методов и в первую очередь с помощью испытательных и синтетических программ, а к моделированию и измерениям имеет смысл прибегать при очень ответственных применениях информационных технологий, когда ошибка проекта грозит катастрофическими последствиями, по сравнению с которыми цена разработки отходит на второй план;
  • каждая представительная программа, включаемая в состав синтетической, должна быть "прозрачной" для априорной аналитической оценки требуемого операционного, коммутационного и управляющего ресурса, а также ресурса памяти;
  • "веса" представительных программ в синтетической смеси должны отражать специфику предметной области, а они должны допускать планомерное использование циклов $$if$$ и мажорирование циклами $$for$$ после включения в синтетическую смесь.
  • 1.2. Особенности измерения основных характеристик вычислительных систем

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

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

    В основе используемых в настоящее время методов оценки и сравнения производительности вычислительных систем лежит время.

    Компьютер, который выполняет определенный объем работы за меньшее время, считается более быстродействующим.

    Оценка временных характеристик выполняемых процессором работ - далеко не тривиальная задача.

    Для пользователя важно время, за которое решается его задача. Но практически нет программ, которые могут работать без некоторой операционной системы. В связи с эти возникают дополнительные накладные временные затраты. Поэтому при измерении производительности чаще всего используется сумма пользовательского и системного времени центрального процессора.

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

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

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

    В связи с этим в методиках оценки производительности используют разное время:

  • астрономическое;
  • время выполнения (execution time);
  • время ответа (response time);
  • прошедшее время (elapsed time), представляющее задержку выполнения задания и включающее: время работы процессора, время обращения к жесткому диску, время обращения к ОП, время выполнения операций ввода/вывода, накладные расходы операционной системы.
  • Для измерения времени, затрачиваемого процессором на выполнение данной программе, используется специальное время, которое называют временем центрального процессора (CPU time). Из этого времени исключено время ожидания выполнения ввода-вывода и время выполнения других программ. Необходимость применения этого параметра обусловлена тем, что в многопрограммном режиме происходит совмещение во времени процедур, обслуживающих задачи, которые используют разные ресурсы.

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

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

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

    Особенностью процессора как объекта измерения является то, что скорость взаимодействия функциональных устройств процессора чаще всего не зависит от динамических характеристик этих устройств, а задается частотой генератора тактовых импульсов. Поэтому время центрального процессора может быть вычислено двумя способами:

  • умножением количества тактов синхронизации необходимых для выполнения данной программы на длительность такта синхронизации,
  • либо делением количества тактов синхронизации для данной программы на частоту синхронизации.
  • Важной характеристикой процессора является среднее количество тактов синхронизации, необходимых для выполнения одной команды (CPI clock cycles per instruction). Этот параметр позволяет легко оценить время центрального процессора, необходимое для данной программы, зная количество выполняемых в программе команд.

    Производительность центрального процессора определяется тремя параметрами:

  • тактовой частотой;
  • средним количеством тактов на команду;
  • количеством выполняемых команд.
  • Все эти параметры тесно связаны между собой:

  • среднее количество тактов на команду зависит от функциональной организации и системы команд;
  • частота синхронизации зависит от уровня технологии производства аппаратных средств и функциональной организацией процессора;
  • количество выполняемых в программе команд определяется решаемой задачей, архитектурой системы и алгоритмом работы компиляторов. Для сравнения двух компьютеров по их производительности необходимо рассматривать все три компоненты.
  • В процессе поиска стандартной метрики для оценки производительности вычислительных систем было выбрано несколько единиц измерения.

    Одной из наиболее распространенных среди них является MIPS (Million Instruction Per Second). Она показывает количество команд программы, выполняемых в секунду.

    Производительность определяется как обратная ко времени выполнения величина, а более быстродействующий компьютер имеет более высокий MIPS-рейтинг.

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

    С понятием MIPS в свое время была связано еще две метрики, основанные на производительности эталонных компьютеров VAX 11/780 компании DEC и одной из моделей RS/6000 компании IBM. Производительность этих компьютеров определялась как 1 MIPS. Производительность тестируемых систем вычислялась относительно производительности этих компьютеров, которые являются эталонными. Приблизительное соотношение между этими величинами таково: 1 IBM MIPS равен 1.6 DEC MIPS.

    Использование эталонного компьютера сопряжено с серьезными трудностями:

  • необходимо постоянно воспроизводить или сохранять эталон;
  • требуется двойное программирование тестовых задач: на тестируемом и эталонном компьютере.
  • Использование измерения производительности компьютеров в MIPS не всегда объективно. Примером могут служить задачи, связанные с научно-техническими расчетами. В них широко применяется арифметика с плавающей точкой. Решение этих задач требует значительных вычислительных ресурсов. Вопрос оценки производительности используемых при их решении вычислительных систем всегда стоял очень остро. При этом достигнутые показатели производительности служили и служат показателем уровня разработок вычислительной техники.

    Поэтому для подобных приложений производительность процессора оценивалась и оценивается в FLOPS ( Fl oating point O perations P er S econd), который показывает, сколько операций с плавающей запятой выполняется компьютером в секунду.

    Современные компьютеры имеют достаточно высокий уровень производительности, поэтому в настоящее время используются производные величины от FLOPS: MFLOPS, GFOPS, TFLOPS, PFLOPS.

    Этот показатель в основном характеризует использование компьютеров в научно-технических приложениях. Он предназначен для оценки быстродействия при выполнении вычислительной системой операций плавающей арифметики. В противном случае его использование не всегда корректно.

    Этот показатель производительности, так же как и MIPS, зависит от конкретной выполняемой программы и архитектуры процессора.

    Однако у MFLOPS есть свои недостатки. Прежде всего, это связано с тем, что отсутствует совместимость операций с плавающей точкой на различных компьютерах.

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

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

    Тестовая смесь Dhrystone в настоящее время практически не применяется.

    Смесь состоит из ста команд. Из них 53 оператора присваивания, 32 команды управления, 15 вызовов функций. В качестве метрики используется количество Dhrystone в секунду. Тест очень короткий [301, 302].

    "Ливерморские циклы" представляют собой типичный набор фрагментов программ на языке FORTRAN. [301, 302] В этих программах реализованы разные вычислительные алгоритмы:

  • сеточные;
  • волновые;
  • последовательные.
  • Их выбор был основан на богатом опыте создания суперкомпьютеров и проведения сложнейших научных и инженерных расчетов Ливерморской национальной лаборатории им. Э. Лоуренса (Lawrence Livermore National Laboratory, LLNL) Министерства энергетики США

    При тестировании используется либо малый набор (14 циклов), либо большой набор (24 цикла).

    Коэффициент распараллеливания применяемых алгоритмов лежит в диапазоне от 0 до 1. Это позволяет использовать "Ливерморские циклы" для оценки производительности вычислительных систем, имеющих различную архитектуру. Тест практически не используется.

    Тесты LINPACK представляют собой программы я решения систем линейных алгебраических уравнений большой размерности. Они написаны на языке программирования FORTRAN [301, 302].

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

    Аргонская национальная лаборатория (Argonne National Lab) Министерства энергетики США регулярно публикует результаты тестирования различных вычислительных систем на тестах LINPACK.

    Тест LINPACK используется при составлении рейтинга самых высокопроизводительны компьютеров мира. Результаты размещаются на сайте http://www.top500.org/.

    В основе используемых в LINPACK алгоритмов лежит метод декомпозиции, широко применяемый при высокопроизводительных вычислениях. Достоинством тестов LINPACK является их структурированность. Для реализации элементарных операций над векторами, которые включаю умножение векторов на скаляр, сложение векторов, скалярное произведение векторов выделяется базовый уровень системы, называемый BLAS (Basic Linear Algebra Subprograms).

    Исходные данные для тестирования представляются в виде вещественных чисел двойной точности. Полученные результаты выражаются в MFLOPS.

    Тест LINPACK имеет два уровня.

    В тесте первого уровня LINPACK DP используется исходной матрицы размером 100*100. В тесте второго уровня LINPACK TPP исходная матрица имеет размерность 1000*1000.

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

    В этом случае полученные результаты могут существенно превышать реальные возможности системы.

    Применение тестов LINPACK TPP, LINPACK TPP для систем с массовым параллелизмом поводит к неадекватной оценки их производительности

    Для оценки производительности таких систем используется тест LINPACK HPC (Highly Parallel Computing), который обеспечивает полную загрузку вычислительных ресурсов MPP-системы, увеличивая размеры матрицы. Вариант этого теста разработан и для параллельных вычислительных систем.

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

    Анализ подходов к оценке производительности вычислительных систем позволяет сделать следующие выводы:

  • методика измерения производительности компьютеров во многом зависит от выбора единиц ее измерения;
  • инструментальные средства измерения производительности вычислительных систем должны быть адаптивными как к их архитектурным особенностям, так и классам решаемых с их помощью задач.
  • 1.3. Методы и средства оценки производительности вычислительных систем на основе стандартных инструментальных платформ

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

    Учитывая это, разработчики инструментальных средств измерения производительности вычислительных систем стремятся смоделировать работу типичных пользовательских приложений.

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

    Тесты SPEC

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

    Одной из таких организаций стала созданная в 1988 году корпорация SPEC (Standard Performance Evaluation Corporation) [263, 301].

    Цель корпорации состоит в разработке и сопровождении стандартизованных тестовых программ, предназначенных для оценки производительности создаваемых высокопроизводительных вычислительных машин.

    Для членства в SPEC достаточно подать заявку и оплатить вступительный взнос.

    Основное направление деятельности SPEC - подготовка тестов для оценки производительности основных подсистем компьютеров, которые могут использоваться, как разработчиками, так и потребителями вычислительной техники. Вся информация о предлагаемых наборах тестов публикуется.

    Чтобы воспользоваться тестами SPEC, необходимо приобрести соответствующую лицензию. Так как целью организации не является получение прибыли, стоимость лицензий покрывает только административные расходы.

    Можно выделить два базовых набора тестов SPEC CINT95, CFP95. С их помощью оценивается производительность компьютера и эффективность работы компиляторов. Тесты построены так, чтобы накладные расходы на работу ОС и выполнение операций ввода/вывода были пренебрежимо малы. Тесты ориентированы на ОС UNIX. При этом предусмотрена возможность их импорта на системные платформы Microsoft и других производителей.

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

  • Необходимостью увеличения времени выполнения теста. Время выполнения версии теста 1992 года сократилось до секунд, в результате снижалась точность измерения временных характеристик.
  • Необходимость увеличения объема кода теста. Тест 1992 года стал целиком размещаться в кэш памяти большого объема, что приводило к неадекватным оценкам производительности.
  • Необходимость приведения в соответствие с расширившейся сферой приложений вычислительной техники задач, включенных в тест.
  • Необходимостью совершенствования методов измерения времени.
  • Необходимостью создания новых инструментальных средств
  • Необходимостью стандартизации требований к компиляторам
  • В качестве метрик производительности выполнения операций целочисленной и вещественной арифметики используются:

  • скорость выполнения теста с оптимизированным (SPECint95 и SPECfp_95) и не с оптимизированным (SPECint base_95 и SPECfp base_95) режимом компиляции;
  • пропускная способность системы для многопроцессорных архитектур и многозадачных режимов работы, вычисляемая для оптимизированного (SPECint_rate95 и SPECfp_rate95) и не оптимизированного (SPECint_rate_base95 и SPECfp_rate_basefp95) режима работы.
  • Набор тестов CINT95

    Тест CINT95 предназначен для оценки производительности процессора при работе с целыми числами. В него входят восемь программ для решения задач из следующих областей приложения: искусственный интеллект, моделирование, программирование, компрессия, интерпретация языков, обработка, Shell-интерпретатор, базы данных.

    В качестве языка программирования используется Си.

    Набор тестов CFP95

    Тест CFP95 предназначен для оценки производительности процессора при работе с числами с плавающей точкой. В него входят десять программ для решения задач из следующих областей приложения: гидродинамика, предсказание погоды, квантовая физика, астрофизика, электромагнетизм, гидродинамика, моделирование, квантовая химия.

    В качестве языка программирования используется ФОРТРАН.

    SPECrate

    Тесты SPECint95 и SPECfp95 позволяют адекватно оценивать производительность процессоров при их работе в однозадачном режиме.

    Для многопроцессорных и многозадачных систем необходимо оценивать их пропускную способность, которая равна количеству заданий, выполняемых системой в единицу времени. Тесты SPECint95 и SPECfp95 для этого не предназначены.

    Тест SPECrate был создан для оценки производительности многопроцессорных систем. Алгоритм тестирования достаточно прост. Одновременно запускается несколько одинаковых тестовых программ, в качестве которых используются наборы Сint95 и Сfp95. Результатом оценки является количество задач конкретного типа, выполненных за заданное время. Их среднегеометрическое значение отражает пропускную способность тестируемой системы.

    Могут быть получены оценки SPECrate_int95, SPECrate_fp95, соответствующие целочисленным операциям и операциям с плавающей запятой. При тестировании измерения проводятся независимо по каждому тесту. Количество запускаемых копий теста зависит от архитектуры исследуемой системы. Измеряется время завершения последней копии тестовой программы.

    Для исключения влияния на результаты тестирования работы компилятора используются оценки: SPECrate_base_int95 и SPECrate_base_fp95.

    Результаты тестирования

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

    Возможны следующие варианты выполнения сравнительных оценок:

  • в заданной предметной области по решению конкретных задач;
  • комплексное сравнение с использованием итогового рейтинга, рассчитываемого как среднее геометрическое времен решения отдельных задач.
  • Тесты TPC

    В 1988 году по инициативе Омни Шерлин (Omni Serlin) был создан Комитет по тестам производительности обработки транзакций (Transaction processing Performance Council, TPC).

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

    Все решения в TPC принимает Совет Полного Состава (Full Council), который состоит из представителей всех компаний, входящих в TPC. Контроль за работой администрации TPC осуществляет Управляющий Комитет (Steering Committee), который переизбирается раз в год.

    Рабочими органами TPC являются постоянные и технические подкомитеты.

    В 1989 году были предложены основные правила проведения испытаний и публикации результатов тестирования и разработан тест TPC-A

    Эти правила действуют и в настоящее время. Для признания результатов официальными данными TPC необходимо выполнить ряд требований: полное соблюдения методики тестирования, результаты обязательно должны быть проверены аудитором TPC и опубликованы в открытом отчете.

    TPC определяет и управляет форматом нескольких тестов для оценки производительности OLTP (On-Line Transaction Processing) [264,265,301].

    Тест TPC-A

    Тест TPC-A был первым тестом, предложенным TPC.

    В его основе банковская операция помещения средств на депозит или их изъятие со счета.

    Результат измерения показывает, сколько подобных операций может быть выполнено в единицу времени. Транзакция TPC-A включает достаточно много различных действий: пересылку информации, чтение и запись файлов, арифметические операции. Тест TPC-A позволяет оценивать быстродействие системы как в локальной, так и в глобальной сети.

    Тест TPC-B

    Отличие теста TPC-B от TPC-А состоит в том, что он моделирует обработку аналогичных операций под управлением средств системного администрирования. Эмуляции терминалов и линий связи не выполняется. По сути, TPC-B характеризует рафинированные возможности СУБД в условиях интенсивной нагрузки. При публикации результатов используются единицы tps-B. Фактически это пакетная версия TPC-А. В настоящее время TPC тесты TPC-B и TPC-А не поддерживает.

    Тест ТСР-С

    Тестовый пакет TPC-C по своей сути аналогичен тестам TPC-A и TPC-B. Хотя в нем также выполняется моделирование обработки транзакций, по сложности он существенно превосходит тесы А и В.

    В нем моделируется достаточно сложная система, управляющая обработкой заказов.

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

    В тесте моделируется работа оператора при вводе данных с клавиатуры.

    В тесте предусмотрено выполнение следующих транзакций:

  • введение нового заказа через сложную экранную форму;
  • обновление базы данных, обусловленное платежом, 43%;
  • обновление базы данных, обусловленное поставкой;
  • получение справки о состоянии заказов, 4%;
  • получение справки по учету товаров, 4%
  • Тест обеспечивает измерение скорости транзакций по новым заказам, остальные транзакции выполняются в это время в фоновом режиме.

    В качестве модели БД теста используется модель БД оптового поставщика, содержащая следующие таблицы: товарные склады, район, покупатель, заказ, порядок заказов, новый заказ, статья счета, складские запасы и история.

    Система может масштабироваться за счет изменения количества товарных складов.

    Результаты тестирования:

  • $$tpmC$$ - пиковая скорость выполнения транзакций (максимальная пропускная способность системы (MQTh - Maximum Qualified Throghput);
  • $$$/tpmC$$ - нормализованная стоимость системы.
  • Стоимость представляет собой совокупную стоимость владения системой в течение пяти лет.

    Этот тест является основным продуктом Transaction Processing Performance Council.

    Организация постоянно стремится создавать тесты, которые отвечают потребностям бурно развивающегося рынка вычислительных систем. Было предпринято несколько попыток создания тестов для оценки производительности серверов (TPC-S), корпоративных систем (TPC-E), клиент-серверных архитектур TPC C/S. В основном они завершились неудачно.

    ТестTPC-W

    Тест предназначен для тестирования систем поддержки электронной коммерции.

    Тесты TPC-W предназначены для оценки производительности систем при решении задач.

    В тесте моделируются следующие нагрузки на систему:

  • интенсивные соединения с клиентами;
  • динамические Web-страницы;
  • использование consistent Web-объектов;
  • исполнение множества разнородных транзакций;
  • OLTP-модель;
  • сложная структура СУБД;
  • целостность транзакций;
  • конкурентный доступ к данным и изменение данных.
  • Тест поддерживает следующие профили взаимодействия с клиентами:

  • покупки;
  • просмотр;
  • ввод заказов.
  • Тест ТPC-D, TPC-H, TPC-R

    Эти тесты предназначены для оценки производительность коммерческих систем поддержки принятия решений.

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

    Поддержка теста ТPC-D прекращена с 1999 года.

    Тесты TPC-R аналогичны тестам TPC-H. Отличие состоит в том, что характер запросов в TPC-R известен, в TPC-H - нет. В связи с этим в тестах TPC-R разрешена оптимизация СУБД.

    В тестах используется две метрики:

  • производительность с указанием размера базы данных;
  • цена/производительность с указанием размера базы данных.
  • Во всех тестах TPC предусматривается два вида оценок:

  • производительность, выраженная в транзакциях в единицу времени (транзакций в секунду (tps) или транзакций в минуту (tpm));
  • стоимость одной единицы производительности tps или tpm. Стоимость рассчитывается как отношение затрат на приобретение
  • системы и ее эксплуатацию в течение пяти лет к производительности.

    Ни один тест TPC не может измерить производительность системы во всех возможных средах обработки транзакций. Тесты только помогают пользователю сравнить похожие системы.

    Тесты AIM

    Одной из независимых организаций, занимающихся оценкой производительности вычислительных систем, является компания AIM Technology [266, 301].

    Компания была основана в 1981 году. Сферой ее деятельности является разработка программного обеспечения для измерения производительности вычислительных систем, а также заказное тестирование информационных систем, использующих ОС UNIX.

    Используя методики оценок и тестовые смеси, разработанные AIM Technology, можно получить комплексную оценку тестируемой вычислительной системы. Вычислительная система оценивается по следующим параметрам:

  • Рейтинг производительности по AIM. За единицу этой величины принимается производительность эталонной вычислительной машины.
  • Максимальная пользовательская нагрузка. Определяет количество пользователей в системе, начиная с которого производительность системы становится меньше приемлемого уровня.
  • Индекс производительности утилит. Для его оценки используется тестовый пакет утилит AIM. Показывает возможности системы выполнять универсальные утилиты UNIX.
  • Максимальная пропускная способность. Используется для оценки производительности многопрограммных систем. Определяется как максимальное количество выполненных заданий в минуту.
  • Цена системы.
  • Тестовый набор AIM Technology - System Benchmark (Suite III) является основным тестовым набором.

    С его помощью можно получить следующие оценки:

  • скорость обменов с оперативной памятью,
  • скорость вычислений с вещественными и целыми числами,
  • скорость выполнение обменов данными между процессорами,
  • скорость вызовов функций языка Си,
  • быстродействие операций чтения/записи на диск.
  • Он позволяет выполнять анализ вычислительной системы без учета работы графического интерфейса и сетевых задержек.

    Компания AIM Technology предлагает специальные наборы тестовых смесей, позволяющие оценить возможности использование вычислительной системы в ряде прикладных областей:

  • разработка программного обеспечения;
  • автоматизации проектирования в машиностроении с использованием 3-мерной графики;
  • геоинформационные технологии;
  • стандартные офисные приложения (электронные таблицы, почта, текстовые редакторы);
  • многопользовательская среда;
  • среда центрального сервера для большого объема вычислений;
  • среда файлового сервера;
  • обработка транзакций в реляционной базе данных.
  • На основе приведенных данных можно утверждать:

  • современные программные инструментальные платформы, ориентированные на измерение характеристик вычислительных систем, поддерживают только процесс генерации тестов, ответственность за качество которых лежит на пользователе;
  • ни один программный тест не является адекватным реальному программному пакету пользователя и не отражает множество вариаций вычислительной нагрузки на компоненты исследуемой вычислительной системы;
  • все без исключения инженерные методики оценки производительности фактически отталкиваются от измерения времени, затраченного на решение "хорошо известной пользователю" задачи. В результате сопоставление двух ЭВМ весьма и весьма субъективно, так как и замер времени, и оценка выполненных машиной инструкций, и распределение времени между системными и прикладными задачами носят достаточно субъективный характер;
  • стандартные программные платформы оценки производительности и пропускной способности ЭВМ предоставляют пользователю только возможность создания тестовых программ, которые способны воспроизвести стабильную вычислительную нагрузку реальных задач только при использовании в них циклов $$for$$, так как при использовании циклов $$if$$ вычислительная нагрузка зависит от содержимого преобразуемых данных;
  • дальнейшее развитие программных платформ оценки производительности ЭВМ, скорее всего, будет связано с созданием адаптивных средств, оперативно реагирующих и на специфику алгоритма решения задачи, и на специфику архитектуры ЭВМ, и на содержимое преобразуемых потоков данных.
  • 1.4. Методика определения алгоритмических затрат на решение "представительных" задач, включаемых в проблемно-ориентированную инструментальную платформу оценки пропускной способности (Б)ВС

    Как видно из вышеизложенного, пользователь или покупатель компьютера сам должен синтезировать тестовые программы, чтобы созданная им синтетическая смесь достоверно представляла предметную область и в полной мере проверяла структурно-функциональные возможности (Б) ВС, вычислительные алгоритмы включаемых в нее представительных задач должны обеспечить планомерные вариации нагрузки от $$O(N)$$ до $$O(N^{3})$$ на операционный, коммутационный, управляющий и диагностический ресурс, а также ресурс памяти исследуемой или испытуемой (Б)ВС.

    Рассмотрим несколько алгоритмически "прозрачных" задач, позволяющих достаточно эффективно варьировать вычислительной нагрузкой в ЭВМ как последовательной, так и параллельной архитектуры.

    Задача о транзитивном замыкании относится к классу типа $$O(N^^{3})$$ и достаточно просто приводится к параллельному виду с помощью алгоритма Уошэлла - Флойда.

    Формулировка задачи. Пусть имеется ориентированный граф связности $$G(V,E) $$ с множеством вершин $$V $$ и множеством ребер E. Необходимо пориен-тированный граф рис. 1.1 [70] и ему соответствует матрица смежности:

    (рис 1.1)

    "Внутренний" параллелизм этой задачи в полной мере раскрывает рекурсивный алгоритм Уошэлла - Флойда [70]:

    $$For\,\, k\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ x_{ij}^k:= x_{ij}^{k-1} + x_{ik}^{k-1} * x_{kj}^{k-1},$$

    где $$k$$ - шаг рекурсии, $$+$$ - логическое сложение, $$*$$ - логическое умножение. В этом алгоритме три вложенных цикла $$for$$, реализация которых требует $$O(N^^{3})$$ шагов вычисления логического выражения. Для наглядности представим матрицу $$||А||$$ в виде таблицы, где "единичным" элементам соответствуют заштрихованные клетки, а "нулевым" - незаштри-хованные. Тогда последовательность вычислительных фаз алгоритма Уошэлла - Флойда примет вид:

    Здесь пунктирными линиями показаны значения, которые пробегают индексы $$i $$ и $$j $$ на каждом шаге рекурсии $$k$$.

    Результирующий граф $$G^{+}$$ имеет вид рис. 1.2, и ему соответствует матрица смежности:

    (рис 1.2)

    На рис. 1.2 пунктирными стрелками показаны ребра, порождаемые на каждом шаге рекурсии, откуда видно, что шаг рекурсии $$k$$ соответствует номеру вершины, через которую осуществляется транзитивное замыкание с учетом предыдущих шагов рекурсии.

    Таким образом, максимальный коэффициент векторно-конвейерного распараллеливания вычислений в задаче транзитивного замыкания может достигать значения $$N^{3}$$, а реально используемый зависит от структуры исходного графа $$G$$ и предоставляемого аппаратного ресурса. "Векторная" составляющая коэффициента распараллеливания вычислений ограничена размерами матрицы смежности ( $$i = j = N$$ ) и не может превышать величины $$N^{2}$$, а "конвейерная" составляющая определяется индексом $$k$$ и не может превышать $$N$$.

    Задача о кратчайшем пути аналогична задаче о транзитивном замыкании и состоит в определении кратчайшего пути между всеми парами узлов графа $$G(V,E,w)$$, где $$w_{ij}$$ - вес ребра, соединяющего вершину $$i$$ с вершиной $$j$$.

    В этом случае элементы матрицы $$||А||$$ определяются следующим образом:

  • $$a_{ij}$$ - расстояние из вершины $$i$$ в вершину $$j$$, если существует ребро из $$i$$ в $$j$$ ;
  • $$a_{ij} = \infty$$, если не существует ребра, связывающего $$i$$ с $$j$$ ;
  • $$a_{ij} = 0$$, если $$i = j$$.
  • Задача о кратчайшем пути заключается в вычислении матрицы $$||А^{+}||$$ кратчайших путей, в которых $$a^{+}_{ij}$$ есть длина такого пути из вершины $$i$$ к вершине $$j$$.

    Например, граф связности имеет вид рис. 1.3 и ему соответствует матрица $$||А^{0}|$$ | [70]:

    (рис 1.3)

    Тогда последовательность шагов алгоритма Уошэлла - Флойда примет вид:

    с той разницей, что операции $$+$$ соответствует выбор минимального элемента, а операции $$*$$ - простое сложение.

    Такая представительная задача позволяет исследовать затраты на управление ходом вычислительного процесса и издержки на организацию обмена с кеш-памятью. Для этого достаточно:

  • в задаче о кратчайшем пути:
  • с помощью датчика псевдослучайных чисел построить граф $$G(V,E,w)$$ и матрицу $$||А^{0}||$$ связности целочисленных или вещественных расстояний размером $$N*N$$ ;
  • принудительно присвоить диагональным элементам матрицы $$||А^{0}||$$ "нулевые" значения;
  • реализовать алгоритм Уошэлла - Флойда, варьируя $$N$$ в широких пределах, которые зависят от размеров кеш-памяти;
  • построить график зависимости времени решения задачи от $$N$$ ;
  • определить вытекающие из вычислительного алгоритма затраты на управление, пересылки данных и операционные затраты и, сравнив их с экспериментальными данными, оценить реальные системные временные издержки;
  • в задаче о транзитивном замыкании:
  • с помощью датчика псевдослучайных чисел построить матрицу $$||А^0||$$ связности целочисленных значений размером $$N*N$$ ;
  • принудительно присвоить диагональным элементам матрицы $$||А||$$ "единичные" значения и с помощью варьируемого извне параметра $$h$$ привести матрицу $$||А||$$ к двоичному виду по правилу:$$\hat{a_{ij}}= \begin{cases} 1, \text{ если } a_{ij} \ge h, \\ 0, \text{ если } a_{ij} < h. \end{cases}$$
  • реализовать алгоритм Уошэлла - Флойда в двух модификациях: по классической схеме и с оператором $$if$$ во втором цикле, благодаря которому не выполняется цикл по индексу $$j$$, если $$х_{ik}^{k-1}$$ или $$x_{ij}^{k-1}$$ ; вариации $$N$$ осуществить в широких пределах исходя из размеров кеш-памяти;
  • построить график зависимости времени решения задачи от $$N$$ в двух модификациях;
  • определить вытекающие из вычислительных алгоритмов затраты на управление, пересылки данных и операционные затраты и, сравнив их с экспериментальными данными, оценить реальные системные временные издержки;
  • вывести теоретическое условие, при котором модифицированный алгоритм должен выигрывать по времени в сравнении с классическим алгоритмом Уошэлла - Флойда и, варьируя параметром $$h$$, сопоставить с реально полученными данными.
  • Временные затраты на управление в (1.1), то есть затраты на организацию трех вложенных цикло в $$for$$, зависят от архитектуры устройства управления процессора и в худшем случае определяются соотношением $$T_{u} = (3N)^3\tau_c(p)$$, которое соответствует микропрограммному алгоритму работы простейшего целочисленного устройства управления и при условии, что команда сравнения является двухцикловой:

    Шаг 1. Прибавить "единицу" к содержимому $$j : j( t):=j(t-1)+1$$.

    Шаг 2. Если содержимое $$j(t) = N$$, то прибавить "единицу" к содержимому $$i: i(t):=i(t-1)+1$$ и перейти к шагу 1. В противном случае выполнить шаг 1.

    Шаг 3. Если содержимое $$i(t) = N$$, то прибавить "единицу" к содержимому $$k: k(t):=k(t-1)+1$$ и перейти к шагу 1. В противном случае выполнить шаг 1.

    Шаг 4. Если содержимое $$k(t) = N$$, то конец программы (END). В противном случае выполнить шаг 1.

    Здесь $$\tau_{c}(p)$$ - стандартный для всех ассемблерных инструкций цикл выполнения, который задается последовательностью синхроимпульсов (СИ).

    Если устройство управления процессора выполнить по схеме трехступенчатого конвейера (рис. 1.4), то временные затраты на управление станут линейными $$T_{u} = (N+3)\tau_{c}$$, где 3 такта задержки расходуются на "холостой ход" конвейера.

    (рис 1.4) Схема управления тремя вложенными циклами

    Алгоритмические временные затраты на коммутацию (пересылки данных в одноадресной ЭВМ) в (1.1) определяются организацией работы памяти. Если используется ассоциативная память (АЗУ), в которой операцию логического сложения можно выполнить непосредственным слиянием содержимого ячейки $$x_{ij}^{k-1}$$ с результирующим операндом $$х_{ij}^{k-1}* x_{kj}^{k-1}$$, то $$T_{АЗУ}= 3(N)^3\tau_{АЗУ}$$. В противном случае $$T_{ОЗУ}= 4(N)^3\tau_{ОЗУ}$$.

    В однопроцессорных ЭВМ операционные временные затраты на (1.1) определяются соотношением $$T_{ОУ}= 2(N)^3\tau_{ОУ}$$.

    Из приведенных данных видно:

  • В алгоритме Уошэлла - Флойда временные затраты на пересылки данных в 1,5-2 раза превышают затраты на обработку. Это вывод справедлив и без учета издержек на перезагрузку кеш-памяти, которая используется не только программой пользователя, но и системными программами даже в однозадачном режиме работы ЭВМ. Затраты на пересылки превосходят все остальные как за счет количества операций, так и за счет "средней" длительности каждой из них. "Средняя" длительность одной пересылки учитывает издержки на паразитное обновление кеш-памяти, и поэтому $$\tau_c(p) < \tau_{ОЗУ} $$, и только при полном совмещении цикла обработки одной страницы кеш-памяти с циклом обновления другой ее страницы $$\tau_c(p) = \tau_{ОЗУ}$$, но даже RISC -процессорах $$\tau_{ОЗУ}\ge 2\tau_c(p)$$.
  • Из всех видов временных затрат операционные затраты алгоритма Уошэлла - Флойда, которые, собственно, только и интересуют пользователя, оказались минимальными. Полученные данные говорят о том, что при решении задач типа транзитивного замыкания в принципе невозможно получить коэффициент использования физических возможностей процессора выше 10-15 %. Попытка минимизации операционных и жестко связанных с ними коммутационных затрат приводит к включению оператора $$if$$ во второй уровень вложенности цикла $$for$$ и при наличии оптимизирующего компилятора это выполняется автоматически:$$For\,\, k\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ if\,\,(x_{ik}^{k-1})=0)\to x_{ij}^{k}:=x_{ij}^{k} \text{ и } i:=i+1,\\ For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ x_{ij}^k:= x_{ij}^{k-1} + x_{ik}^{k-1} * x_{kj}^{k-1},$$ $$For\,\, k\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ if\,\,(x_{ij}^{k-1})=1)\to x_{ij}^{k}:=x_{ij}^{k} \text{ и } i:=i+1,\\ For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ x_{ij}^k:= x_{ij}^{k-1} + x_{ik}^{k-1} * x_{kj}^{k-1},$$
  • В вычислительном алгоритме (1.2) экономия от включения цикла $$if$$ зависит от количества элементов матрицы смежности $$||А^{k}||$$ с "нулевыми" значениями, а в (1.3) - от количества элементов с "единичными" значениями, которое возрастает с ростом индекса $$k$$. Поэтому по мере роста индекса $$k$$ в случае (1.2) экономия от включения цикла $$if$$ будет падать, а в случае (1.3) - возрастать, но в любом случае затраты на управление увеличатся на $$\Delta T_u = (2N)^3\tau_c(p)$$.

    Отсюда, в "пользовательском" варианте предпочтение следует отдавать вычислительному алгоритму по варианту (1.3), но в синтетические и испытательные программы для полноты эксперимента необходимо включать все три варианта, так как они моделируют различные условия (не) зависимости временных затрат от содержимого преобразуемых данных.

    Алгоритм Уошэлла - Флойда допускает только ОКМД-режим распараллеливания вычислений как по векторной, так и по конвейерной составляющей с коэффициентами $$\gamma_{v} =\overline{l,N^{2}}$$ и $$\gamma_{k} =\overline{l,N}$$ соответственно. Приведенные данные говорят о том, что минимально возможное время $$T_{АЗУ}= \tau_{АЗУ}$$ решения задачи транзитивного замыкания по классическому алгоритму Уошэлла - Флойда можно получить в специализированной параллельной архитектуре с максимальным коэффициентом векторно-конвейерного распараллеливания $$\gamma = \max{\gamma_{v}} * \max{\gamma_{k}} = N^{3}$$, который поддерживается полнодоступным ассоциативным ЗУ на $$N^{3}$$ портов и $$N^{3}$$ операционными устройствами, осуществляющими обмен данными с каждым портом ассоциативного ЗУ по двум входным и одной выходной однобитной шине данных. Во всех остальных архитектурах время решения за дачи лимитируется характеристиками ОЗУ, поддерживающими соответствующий коэффициент распараллеливания вычислений по потокам данных: $$\tau_{АЗУ} < T \le 4(N)^3\tau_{ОЗУ}$$.

    Задачи векторно-матричной алгебры перекрывают весь спектр размерностей задач табл. 1.1:

  • $$O(N^{3})$$, если выполняется умножение матриц $$||А||*||В|| = ||С||$$ ;
  • $$O(N^{2})$$, если выполняется умножение векторов $$А*В = С$$ ;
  • $$O(N)$$, если выполняется сложение двух векторов $$А+В = С$$.
  • Поэтому эти задачи стараются включать во все испытательные и синтетические программы для оценки пропускной способности ВС по потокам команд и данных практически всех параллельных архитектур.

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

  • Вычислительный алгоритм умножения матриц с поэлементным порядком формирования результирующей матрицы:$$For\,\, k\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ c_{ik}=\sum\limits_{j=1}^{N}{a_{ij}*b_{ij}},\\ \text{где } a_{ij} \in||A||,\,b_{jk} \in||B||,\,c_{ik} \in||C||.$$
  • Вычислительный алгоритм умножения матриц с "построчным" порядком формирования результирующей матрицы:$$For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ \langle c_{ik}{\rangle}=\sum\limits_{j=1}^{N}{a_{ij}}\prod\limits_{k=1}^{N}{{\langle}b_{jk}{\rangle}},$$

    где $${\langle}b_{jk}{\rangle}$$, $${\langle}с_{ik}{\rangle}$$ - соответственно строки матриц $$||B||$$ и $$||C||$$

  • Вычислительный алгоритм умножения матриц с порядком формиро вания результирующей матрицы "по столбцам":$$For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ {\langle}c_{ik}{\rangle}=\sum\limits_{j=1}^{N}{b_{jk}}\prod\limits_{k=1}^{N}{{\langle}a_{ji}{\rangle}},$$

    где $${\langle}a_{ij}{\rangle}$$, $${\langle}с_{ik}{\rangle}$$ - соответственно строки матриц $$||A||$$ и $$||C||$$

  • Изменение порядка формирования результирующей матрицы сопровождается изменением порядка вызова данных, который может либо совпадать, либо не совпадать с порядком их хранения в ОЗУ. В современных ЭВМ данные в ОЗУ чаще хранятся по строкам и реже по столбцам. Это значит, что при "чтении" данных по столбцам и больших размерах преобразуемых матриц, превышающих размеры доступной пользователю кеш-памяти, возрастают паразитные пересылки страниц между кеш-памятью и ОЗУ и, как следствие, увеличивается продолжительность "среднего" цикла обращения к памяти.

    Поэтому с помощью такой представительной задачи можно исследовать издержки на организацию обмена с кеш-памятью, для чего достаточно:

  • с помощью датчика псевдослучайных чисел построить матрицы $$||А||$$ и $$||В||$$ размером $$N*N$$ ;
  • реализовать алгоритмы поэлементного, "построчного" и "постолбцового" порядков формирования результирующей матрицы $$||C||$$, изменяя $$N $$ в широких пределах, зависящих от размеров кеш-памяти;
  • выполнить транспонирование матрицы $$||C||$$ после поэлементного ее формирования и определить временные затраты;
  • реализовать постолбцовое формирование матрицы $$||C||$$ с "построчным" порядком записи ее элементов;
  • определить вытекающие из каждого вычислительного алгоритма затраты на управление, пересылки данных и операционные затраты и сравнить их с экспериментальными данными.
  • Временные затраты на управление в задачах векторно-матричной алгебры аналогичны затратам задачи о транзитивном замыкании и в зависимости от архитектуры устройства управления процессора могут составлять либо $$T_{u} = (3N)^3\tau_c(p)$$, либо $$T_{u}= (N+3)\tau_c(p)$$.

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

    В изделиях микроэлектроники наибольшее распространение получили две схемы векторно-конвейерного распараллеливания ОКМД-типа на основе коллективов "скаляторных" операционных устройств, каждое из которых представляет последовательно соединенные умножитель на два входа и сумматор (рис. 1.5).

    (рис 1.5) Схемы соединения "скаляторных" устройств

    Продолжительность $$T_{ОУ}(c_{ik}) = 2N\tau_c(*)$$ цикла формирования элемента $$c_{ik}$$, результирующей матрицы схемы рис. 1.5-а более чем в 2 раза может превосходить продолжительность $$T_{ОУ}( c_{ik}) = \tau_c (*)+N\tau_c (+)$$ того же цикла схемы рис. 1.5-б. В первом случае темп работы двухступенчатого конвейера из умножителя и сумматора-накопителя регламентирует более медленный умножитель, а во втором случае фаза умножения выполняется по всем входным операндам одновременно и поэтому темп работы $$N$$ ступенчатого конвейера лимитирует только фаза суммирования. Но это справедливо для (полу)заказного исполнения "скаляторов", в рамках которого справедливо неравенство $$\tau_c (*) > \tau_c (+)$$, где $$\tau_c (*)$$ и $$\tau_{c}(+)$$ - соответственно достижимое время цикла срабатывания аппаратно реализованного умножителя и сумматора. В RISC -архитектурах по определению $$\tau_{c}(*) = \tau_{c}(+)$$ и темп вычисления элемента результирующей матрицы по схеме рис. 1.5-б определяется соотношением $$T_{ОУ}(c_{ik}) = (N+1) \tau_{c}(*)$$.

    В любом случае такой выигрыш оплачивается практически TV -кратным увеличением аппаратных затрат на схему рис. 1.5-б. Поэтому на практике большее распространение получила схема рис. 1.5-а, на основе которой можно варьировать коэффициентом распараллеливания $$\gamma$$ в пределах $$\gamma = \overline{1,N^2}$$, а не $$\gamma = \overline{1,N^3}$$.

    При вычислении одного элемента результирующей матрицы на одном "скаляторном" устройстве рис. 1.5-а удельные алгоритмические временные затраты на коммутацию (пересылки данных в одноадресной ЭВМ) для всех трех алгоритмов определяются соотношением $$T_{ОЗУ}(c_{ik}) = (2N+1)\tau_{ОЗУ}$$. Снизить эти затраты можно в схеме "скалятора" с $$N$$ аккумуляторами, образующими FIFO -регистровую цепочку. Для такой схемы $$T_{ОЗУ}(c_{ik}) = (N+2)\tau_{ОЗУ}$$ (рис. 1.6).

    (рис 1.6) Схема "скалятора" с N аккумуляторами

    "Скалятор" с $$N$$ аккумуляторами наиболее эффективен при построчном формировании элементов результирующей матрицы, так как в этом случае:

  • элемент $$a_{i}j$$ вызывается один раз и хранится в регистре умножителя в течение всего времени обработки строки $$(b_{jk})$$ ;
  • построчный порядок "чтения" элементов обеих матриц $$||А||$$ и $$||В||$$ совпадает с порядком их хранения в ОЗУ, что минимизирует количество паразитных перезагрузок кеш-памяти при "больших" размерах этих матриц.
  • Однако такой двукратный выигрыш во времени оплачивается $$N$$ -кратным ростом аппаратных затрат на FIFO -регистровую цепочку аккумуляторов.

    Из приведенных данных видно, что эффективное совмещение обработки одной области кеш-памяти с обновлением другой ее области можно получить, если $$T_{ОЗУ}(c_{ik}) = 2N\tau_c(*) \approx T_{ОЗУ}(c_{ik}) = (2N+1)\tau_{ОЗУ}$$, что осуществимо, если $$\tau_{c}(*) \approx \tau_{ОЗУ}$$. Последние условие как раз и предполагает отсутствие паразитных обновлений кеш-памяти за период вычисления матрицы $$||C||$$.

    Таким образом, включив в состав синтетических и испытательных программ все три варианта вычислительных алгоритмов умножения матриц, можно с различной степенью интенсивности симулировать паразитные обновления кеш-памяти по ходу вычислений. Это позволяет при одних и тех же исходных данных в процессе испытаний и исследований (Б)ВС варьировать общим временем решения задач векторно-матричной алгебры в пределах 20-40 %.

    Как показали эмпирические данные, в пользовательскую библиотеку вычислительных алгоритмов векторно-матричной алгебры, содержащую подпрограммы поэлементного умножения матриц и транспонирования, имеет смысл включить подпрограмму построчного умножения, что улучшает качество работы всего пакета на 20-30 %.

    Задача сортировки данных методом "пузырька" относится к классу задач типа $$O(N^{2}) \le; N(N-1)/2$$, и при ее распараллеливании возникают достаточно типичные издержки управления коллективом вычислителей, которые связаны с информационной зависимостью параллельных процессов и которые кардинальным образом снижают фактический коэффициент распараллеливания.

    Алгоритм сортировки методом "пузырька":

    $$For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, j\,\, from\,\, i+1\,\, to\,\, N, \\ If\,\,x_{i}>x_j\Rigtharrow Tr(x_{i},x_j)$$

    где $$Tr(x_{i}, x_{j})$$ представляет собой транспозицию (перестановку) сравниваемых элементов $$x_i$$ и $$x_j$$.

    Чтобы исследовать издержки управления сортировкой данных методом "пузырька", связанные с ростом коэффициента распараллеливания вычислений, достаточно:

  • С помощью датчика псевдослучайных чисел построить последовательность чисел $$\{x_{i}\}$$ мощности $$N$$.
  • Упорядочить по возрастанию последовательность $$\{x_{i}\}\Rightarrow {\langle}x_{i}{\rangle}$$ методом "пузырька" и подсчитать количество выполненных транспозиций $$\eta(N)$$.
  • Разбить последовательность $$\{x_{i}\}$$ на две равные части: $$\{x_{i} \} = \{x_i\}_1U\{x_i\}_2$$ и повторить шаг 2 для каждой последовательности $$\{x_{i}\}_1$$ и $$\{x_{i}\}_2$$, подсчитав $$\eta_1(N/2)$$ и $$\eta_2(N/2)$$. Выбрать и запомнить $$\max[\eta_1(N/2), \eta_2(N/2)]$$.
  • Сравнить "старший" элемент упорядоченной последовательности $$x_{i1}\in{\langle}\{x_{i}\}_{1}{\rangle}$$ с младшим" элементом последовательности $$x_{i2}\in{\langle}\{x_{i}\}_{2}{\rangle}$$ и при необходимости выполнить транспозицию, переводящую элемент $$x_{i2}\in{\langle}\{x_{i}\}_{1}{\rangle}$$ и элемент $$x_{i1}\in{\langle}\{x_{i}\}_{2}{\rangle}$$.
  • Упорядочить модифицированные последовательности $${\langle}\{x_{i}}_{12}{\rangle}$$ и $${\langle}\{x_{i}}_{21}{\rangle}$$ и определить $$\max[\eta_1(N/2), \eta_2(N/2)]$$. Запомнить сумму $$\eta(N_1,N_2)=\max[\eta_{1}(N/2), \eta_{2} (N/2)]+\max[\eta_{12} (N/2), \eta_{21} (N/2)]$$.
  • Шаги 4 и 5 повторять до тех пор, пока $$x_{i1} \le x_{i2}$$.
  • Шаги 3-6 повторить для $$k = (4-256)$$, где $$k$$ - коэффициент распараллеливания алгоритма сортировки данных.
  • Условие останова алгоритма сформулировано в шестом пункте, из чего следует, что его размерность нарастает по $$k: x_{i1} \le x_{i2} ... \le x_{ik}$$. Это условие представляет простейший алгоритм управления многопроцессорной системой, в которой согласно условию четвертого шага запуск следующей итерации многопроцессорной сортировки осуществляется синхронно и синфазно по всем процессорам и после того, как завершил работу самый нагруженный из них. Возникающие при этом "простои" процессоров накапливаются в сумме $$\eta(\{N_{k} \})$$, которая вычисляется на пятом шаге. Поэтому отношение $$\eta(N)/\eta(\{N_k\})$$ характеризует реально полученный "средний" коэффициент распараллеливания вычислений, так как "объем выполненной работы" (число транспозиций) и в однопроцессорном, и в многопроцессорном вариантах один и тот же.

    Эмпирические данные говорят о том, что начиная с $$k = 4-5$$ один и более процессоров гарантировано начинают работать "вхолостую" и их количество возрастает с ростом $$k$$ до такой степени, что делает бессмысленным наращивание аппаратной платформы уже при $$k \ge 16$$.

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

    Таким образом, "представительность" задач сортировки состоит в том, что они позволяют исследовать пропускную способность сильно связанных многопроцессорных систем, не усложняя при этом вычислительное ядро алгоритма.

    Одним из главных ограничивающих коэффициент распараллеливания факторов связан с падением вычислительной устойчивости алгоритмов при их реализации на параллельных архитектурах (см. раздел 6.6 курса "Задачи и модели вычислительных наноструктур"). Поэтому одна из главных задач исследований и испытаний параллельных (Б)ВС состоит в том, чтобы определить вычислительную устойчивость всех решаемых задач.

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

    Методику исследования вычислительной устойчивости алгоритмов проще всего проиллюстрировать на примере программы суммирования членов псевдослучайной последовательности из $$N$$ элементов.

    Главными источниками погрешностей являются преобразователи десятичного кода в двоичный, денормализаторы в составе арифметических устройств плавающей запятой и шины данных. Все они имеют $$n$$ -битную разрядную сетку, конечность которой приводит:

  • к абсолютной погрешности представления исходных данных формата фиксированной запятой, которая возникает при преобразовании десятичных чисел в двоичный код конечной разрядности $$n: 0 \le \Delta X _{(1}) \le 2^{-n}$$ ;
  • к абсолютной погрешности арифметических преобразований, которая включает две составляющие:
  • абсолютную погрешность денормализации, которая характерна для данных формата плавающей запятой: $$0\le \Delta X _{(2)} \le 2^{-n(АКК)}$$, где $$n(АКК)$$ - разрядность регистра-аккумулятора операционного устройства процессора;
  • абсолютную погрешность округления, которая возникает при пересылке данных из регистра-аккумулятора в регистр общего назначения (РОН) или буферный регистр, для которых $$n(РОН) < n(АКК)$$ и поэтому $$0 \le \Delta X_{(2)} \le 2^{-n(РОН)}$$.
  • В данном случае объектом исследований являются:

  • Алгоритм сложения с накоплением суммы в однопроцессорной вычис лительной системе:$$For\,\, i\,\, from\,\, 1\,\, to\,\, N; \\ \Sigma_0=0;\\ \Sigma_{i+1}=\Sigma_i+x_{i+1};$$
  • 2. Алгоритм сложения с накоплением суммы в многопроцессорной вычислительной системе:$$For\,\, j\,\, from\,\, 1\,\, to\,\, k; \\ For\,\, i\,\, from\,\, 0\,\, to\,\, N/k; \\ \Sigma_{(j-1)k+0}=0;\\ \Sigma_{(j-1)k+i+1}=\Sigma_{(j-1)k+i}+x_{i+1}.$$
  • Первому алгоритму отвечает схема суммирования рис. 1.7-а, а второй алгоритм можно реализовать на двух типах аппаратных платформ, которые отличаются количеством операций пересылки частных сумм: с иерархической (рис. 1.7-б) и с последовательной (рис. 1.7-в) схемой накопления частных сумм, где количество сумматоров одинаково и равно $$2k -1$$, а время задержки разное и равно соответственно $$]log_{2} k[+1$$ и $$k$$ ( $$]log_{2} k [ $$ - старшее целое $$log_{2} k$$ ).

    Методика управления интенсивностью проявления источников погрешности при вычислении суммы членов псевдослучайной последовательности использует следующие факторы:

  • Абсолютная погрешность денормализации зависит от разности порядков слагаемых, которая определяется как накопленной суммой, так и дисперсией псевдослучайной последовательности. Величина накопленной суммы на $$i$$ -м шаге зависит от степени упорядоченности псевдослучайной последовательности $$\{x_{i}\}$$: хронологический порядок перечисления индексов $$i$$, перечисление индексов $$i$$ по возрастанию $$x_{i}$$, перечисление индексов $$i$$ по убыванию $$x_{i}$$.
  • Абсолютная погрешность округления зависит от числа внутренних и/или внешних пересылок промежуточных значений накопленной суммы, и она тем выше, чем больше коэффициент распараллеливания вычислений. В схеме рис. 1.7-а всего одна пересылка результата, в схемах рисунков 1.7-б и 1.7-в количество пересылок, в том числе и промежуточных сумм, определяется количеством сумматоров и равно $$2k-1$$.
  • (рис 1.7) Схемы накопления суммы

    Чтобы по этой методике исследовать погрешность вычисления суммы членов псевдослучайной последовательности из $$N$$ элементов в зависимости от различной интенсивности проявления источников погрешностей, достаточно:

  • С помощью датчика псевдослучайных чисел построить последовательность чисел $$\{x_{i}\}$$ мощности $$N$$.
  • Упорядочить по возрастанию последовательность $$\{x_{i}\}\Rigtharrow{\langle}x_{i}{\rangle}$$.
  • Упорядочить по убыванию последовательность $$\{x_{i}\}\Rigtharrow\{x_{i}\}$$..
  • Вычислить $$\Sigma$$ в однопроцессорном варианте для последовательностей $$\{x_{i}\}$$, $$\langle x_{i}\rangle$$ и $$\{x_{i}\}$$ и в двух форматах: $$float (\Sigma_{f})$$ и $$double (\Sigma_{db})$$.
  • Варьируя $$k = 2\div 512$$, вычислить суммы в многопроцессорном варианте в формате $$float: \{(\Sigma_f)_k\}$$ и построить зависимость $$\Delta_k = (\Sigma_f) _{k} -(\Sigma_f)_{0}$$.
  • Из шести возможных вариантов шага 4 наиболее истинное значение $$(\Sigma_f)_{0}$$ накопленной суммы дает упорядоченная по возрастанию последова-тельность, полученная в формате $$double$$, то есть $$(\Sigma_f)_{0}:= \Sigma_{db}(\langle x_{i}\rangle )$$, так как в этом случае оба вычислительных источника имеют минимальную интенсивность.

    Чтобы симулировать погрешность представления, шаг 1 необходимо выполнить сначала в формате $$double$$, а затем перейти к формату $$float$$.

    Типовой график зависимости абсолютной погрешности накопления суммы имеет вид случайного апериодического колебательного процесса (рис. 1.8), который говорит о следующем:

  • Колебательный характер обусловлен тем обстоятельством, что накопленные частные суммы могут принимать вид $$\Sigma_{k} = \Sigma^{-i}$$ с "единичны-ми" значениями в старших разрядах (например: 0,5, 0,25, 0,75 и т. д.), на которые не влияет ни денормализация, ни округление.
  • Случайный апериодический характер изменения абсолютной погрешности наиболее опасен потерей управления ходом вычислительного процесса с использованием операторов условных переходов. Поэтому при испытаниях и исследованиях вычислительной устойчивости (Б)ВС имеет смысл варьировать интенсивностью источников погрешностей при вычислении выражений, входящих в операторы $$if$$.
  • (рис 1.8) Типовой график зависимости абсолютной погрешности суммирования от коэффициента распараллеливания вычислений, выполненных с одинарной точностью

    Таким образом, для создания полноценных синтетических и исследовательских программ нет необходимости усложнять их операционное ядро, которое резко удорожает разработку инструментальных платформ оценки пропускной способности (Б)ВС по потокам инструкций и данных. Для этих целей достаточно в качестве неделимой единицы инструментальной платформы выбрать совокупность представительных задач с прозрачным операционным ядром, позволяющим управлять вычислительной нагрузкой на операционные, коммутационные и управляющие ресурсы ЭВМ и ресурсы ее памяти в соответствии с требованиями всей предметной области.

    Системотехнические выводы по лекции 1

  • Метрологические проблемы вычислительной техники носят как фундаментальный, так и чисто методический характер. Фундаментальная составляющая связана с отсутствием единой метрики, определяющей количество информации, а значит, и объем выполненной ЭВМ работы. Методическая составляющая связана с отсутствием эталонных ЭВМ, эталонных алгоритмов преобразования данных и стандартных процедур пересчета реальных алгоритмических затрат в затраты эталонного алгоритма. В итоге нарушается базовый принцип любого измерения, в результате чего измерительный прибор становится неотъемлемой частью измеряемого объекта (в данном случае операционной системы) и поэтому постоянно изменяет свою структурно-функциональную схему.
  • Согласно результатам третьей лекции курса "Задачи и модели вычислительных наноструктур" проблема создания единой метрики неразрешима в принципе. Действительно, теория вычислений допускает только экстенсиональную эквивалентность двух алгоритмов, то есть эквивалентность по результату, а не в рамках всего вычислительного процесса. С другой стороны, оценку алгоритмической сложности реальных компьютерных реализаций можно провести по А.Н. Колмогорову только с точностью до некоторой константы и при достаточно жестких ограничениях на используемые вычислительные и/или перечислительные алгоритмы, что характерно для алгоритмически ориентированных областей применения традиционных вычислителей.
  • Все без исключения инженерные методики оценки производительности фактически отталкиваются от измерения времени, затраченного на решение "хорошо известной пользователю" задачи. В результате сопоставление двух ЭВМ весьма и весьма субъективно, так как и замер времени, и оценка выполненных машиной инструкций, и распределение времени между системными и прикладными задачами носят достаточно субъективный характер.
  • Стандартные программные платформы оценки производительности и пропускной способности ЭВМ предоставляют пользователю только возможность создания тестовых программ, которые способны воспроизвести стабильную вычислительную нагрузку реальных задач только при использовании в них циклов $$for$$, так как при использовании циклов $$if$$ вычислительная нагрузка зависит от содержимого преобразуемых данных.
  • Дальнейшее развитие программных платформ оценки производительности ЭВМ скорее всего будет связано с созданием адаптивных средств, оперативно реагирующих и на специфику алгоритма решения задачи, и на специфику архитектуры ЭВМ, и на содержимое преобразуемых потоков данных.
  • Снижение трудозатрат на адаптацию испытательных и исследовательских программ требует структурного подхода, в рамках которого программные модули представительных задач выступают в качестве неделимых единиц. Совокупность таких структурных единиц инструментальной платформы оценки качества ВС должна обеспечить управляемое перераспределение вычислительной нагрузки на операционные, коммутационные и управляющие ресурсы, а также ресурс памяти исследуемой ВС, для чего требуется точная априорная оценка этих же видов ресурсов, затребованных вычислительными алгоритмами представительных задач. Поэтому операционное ядро каждой представительной задачи должно быть алгоритмически прозрачным, чтобы на его основе можно было априорно и достоверно оценить требуемую нагрузку на все виды используемых ресурсов.
  • Страницы:

    1.1. Методика оценки требуемой пропускной способности вычислительных систем, ориентированных на решение "критических" задач предметной области

    Реальная ценность вычислительных систем (ВС), ориентированных на решение "критических" задач предметной области, определяется качеством оценки требуемой пропускной способности по потокам инструкций и данных. При этом разработчику ВС известны следующие исходные данные, характеризующие предметную область:

  • алгоритм или совокупность возможных алгоритмов преобразования информации;
  • объемы, моменты поступления и точность представления входных данных;
  • точность, интервалы времени или циклы получения результатов вычислений.
  • Заказчика или покупателя таких ВС в первую очередь интересуют аппаратно-временные затраты на реализацию его алгоритмов, а системные издержки организации вычислений им воспринимаются как накладные расходы. Поэтому алгоритмические затраты должны быть удовлетворены в полном объеме, так как именно они определяют потребительскую ценность создаваемой ВС, а системные аппаратно-временные издержки необходимо минимизировать в ходе разработки, чтобы добиться приемлемого соотношения цены и качества.

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

    При таком подходе к проектированию или выбору (Б)ВС:

  • главной целью является поддержание темпа реального времени, диктуемого предметной областью;
  • главным ограничением является частота $$F_{c}$$ или время цикла $$\tau_c = 1/F_c$$ исполнения инструкции, достижимые в рамках освоенных или осваиваемых технологий производства аппаратуры;
  • варьируемыми параметрами при поиске компромисса в соотношении цены и качества являются "сложность" алгоритмов и вытекающие из нее точность и объемы преобразуемой информации.
  • Такая методика оценки качества (Б)ВС исходит из безусловной поддержки темпа реального времени, диктуемого предметной областью, и для его реализации прежде всего необходимо получить аналитическую оценку "длины" программы $$L_p$$ вычислительного алгоритма "критической" задачи, которую в традиционных вычислительных технологиях измеряют максимальным количеством ассемблерных инструкций, реально расходуемых на ее решение. В нетрадиционных вычислительных технологиях "длину" программы приходится измерять в тех (микро)программных единицах, для которых известен или задан цикл исполнения.

    Основная трудность оценки "длины" программы $$L_p$$ связана с нали-чием в вычислительном алгоритме операторов условных переходов типа $$if$$ которые ставят ее в прямую зависимость от содержимого обрабатываемых потоков данных, которые в данном случае необходимо рассматривать как случайные. Для (Б)ВС вносимая операторами $$if$$ "случайность" и вытекающая из нее неопределенность в длине программы ослабляется тем обстоятельством, что в высокоответственные применения оператор условных переходов должен мажорироваться оператором $$for$$, который, с одной стороны, призван лимитировать максимально допустимую по темпу реального времени продолжительность исполнения каждого цикла программы, а с другой стороны, должен повысить ее устойчивость к информационным сбоям, разрывая "бесконечные" циклы, чреватые потерей управления опасными технотронными комп лексами двойного назначения.

    Зная "длину" программы $$L_p$$, можно выбрать тип архитектуры, "иде-альной" в том смысле, что при этом были учтены только алгоритмические затраты, а системные издержки считались нулевыми. Для этого достаточно воспользоваться соотношениями (1.5)-(1.7) раздела 1.5 курса "Задачи и модели вычислительных наноструктур" и проверить неравенства: $$L < \max L(ОКОД) = \Delta T_0 /\tau_c$$, $$L < \max L(ОКМД) = T_{k} / \tau_c$$ или $$L < \max L(МКМД) = T _{0}/\tau_c $$, где $$\Delta T_{k}$$ - дискрет времени, диктуемый теоремой Котельникова, $$T_{k} = \Delta T_{k} * N$$ - цикл формирования циклически обрабатываемой выборки данных из $$N$$ операндов, а $$T _{0}$$ - допустимое время задержки в (Б)ВС. Если ни одно из этих неравенств не выполняется, то необходимо переходить на уровень распараллеливания отдельных ассемблерных инструкций, то есть к архитектурам с микрокомандным уровнем доступа, гарантирующим максимально возможное функциональное насыщенное каждого такта работы (Б)ВС. Как показывает практика, выйти за рамки "идеальной" архитектуры разработчику в дальнейшем не удается, и ему остается только разрабатывать комплекс мер, направленных на минимизацию системных аппаратно-временных издержек.

    Данная методика апробирована при создании спецпроцессоров обработки сигналов и изображений, как на основе заказных СБИС, так и на основе систолических и бит-матричных СБИС [70, 138-144]. Указанные аппаратные платформы поддерживают предметную область, для которой характерны [70]:

  • Обработка точек изображения, которая представляет собой преобразование полутонового изображения, выравнивание гистограмм, переквантование, отображение яркости и т. п.
  • Фильтрация сигналов и изображений, которая может осуществляться сравнением с эталоном, оконными методами, сверткой и/или корреляцией, линейной фазовой, медианной, винеровской, калманов-ской, адаптивной и т. п. фильтрацией.
  • Матричная алгебра, которая включает сингулярное (однозначное) разложение, геометрическое вращение, оценки максимальной энтропии или правдоподобия, вычисление псевдообращения и восстановление изображения, стохастическое оценивание параметров и т. п.
  • Преобразования сигналов и изображений, к которым в первую очередь относят преобразования Фурье, Хаара, Хафа, Адамара, Карунена - Лоэва и т. п.
  • Сортировка, которую можно выполнить методом "слияния", "пузырька", и т. п.
  • Признав, что циклы $$for$$ являются неотъемлемой составляющей таких (Б)ВС, решаемые ими задачи можно разбить на классы с характерной зависимостью количества арифметико-логических операций от количества операндов $$N$$ в циклически обрабатываемых потоках данных (табл. 1.1 [70]).

    Численные значения табл. 1.1 соответствуют параметрам "критических" задач, актуальных на конец 80-х годов прошлого столетия. Тем не менее уже тогда требовались (Б)ВС с производительностью порядка $$10^{12}-10^{15}$$ ассемблерных операций в секунду. Если принять во внимание, что цикл исполнения ЦПОС - и RISC -инструкций был уже постоянен и в тот период времени не превышал 1 ГГЦ, становится ясно, что суммарный коэффициент распараллеливания вычислений должен был находиться на уровне $$10^{4}-10^{6}$$ и был достижим только в архитектурах МКМД-типа с микрокомандным уровнем доступа.

    Требуемая производительность алгоритмов цифровой обработки сигналов и изображений
    Тип алгоритма Необходимая производительность
    Линейные, типа $$O(N)$$: $$10^{2} -10^{5}$$ MOPS
    Пространственная фильтрация
    Свертка
    Обнаружение контуров
    Второго порядка, типа $$O(N^2)$$: $$10^{3} 10^{7}$$ MOPS
    Сортировки
    Медианная фильтрация
    Классификация ближайшего соседа
    Третьего порядка, типа $$O(N^3)$$: $$10^{4}-10^{8}$$ MOPS
    Векторно-матричная алгебра
    Спектральные вычисления
    Адаптивная фильтрация

    Однако (Б)ВС решают не одну и не одни только "критические" задачи. Поэтому их операционный ресурс постоянно перераспределяется по ходу вычислений между решаемыми задачами, что требует учета системных издержек на организацию вычислений. Данное обстоятельство только подтверждает тот факт, что в любой нетрадиционной архитектуре (Б) ВС всегда найдется уровень управления фон-неймановского типа. В простейшем случае такое управление выполняется по жесткой циклограмме и связанные с ним издержки в основном сводятся к плановой обработке "прерываний", которые неминуемо вызывают "паразитные" перемещения программ и данных по иерархии запоминающих устройств (Б)ВС: регистры - КЭШ - ОЗУ - внешние ЗУ и обратно.

    Но циклограмма жестко регламентирует только порядок (пере)запу-ска задач, время решения которых может флуктуировать в достаточно больших пределах (1,5-3 раза и более) из-за наличия циклов по условию. Объясняется это тем, что с помощью мажорирующих циклов $$for$$ удается ограничить только максимально допустимое время выполнения этого цикла, а реальные временные затраты могут оказаться значительно меньше, если сработает оператор $$if$$. В результате трудно рассчитать как время обработки одного планового "прерывания", которое зависит от фазы выполнения прерванной задачи, так и количество таких "прерываний". Основным источником такой неопределенности являются паразитные перезагрузки памяти на участках кеш - ОЗУ - внешние ЗУ, что вынуждает брать в кавычки термин "прерывание".

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

    Чтобы компенсировать возникающие в реальных условиях временные простои, разработчики (Б)ВС стараются запускать в образующихся "паузах" тестовые программы, варьируя качеством их решения (глубиной и полнотой диагностики) в зависимости от наличного ресурса времени. Но такие меры, как правило, малоэффективны, так как именно программы диагностики тяготеют к массовому использованию операторов $$if$$, с помощью которых минимизируется пространство перебора тестов за счет информации, полученной на предыдущих фазах тестирования. В итоге требуемую пропускную способность по потокам инструкций и данных приходится определять исходя из самых худших условий запуска каждой последующей фазы вычислений, что приводит к 2-3-кратному превышению вычислительных затрат над затребованными алгоритмическими затратами.

    В случае ЭВМ общего назначения описанная ситуация резко усугубляется априорной неопределенностью сферы использования, что приводит к усложнению систем управления аппаратными ресурсами во время вычислений, которые сами становятся главными "пожирателями" этих же ресурсов, так как рассчитаны "на все случаи жизни". В результате системные временные затраты такого управления могут на 1-2 порядка превосходить аналогичные затраты на обслуживание алгоритма пользователя.

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

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

    При оценке качества вычислительной техники все используемые показатели рекомендуется разбивать на 2 группы [106]: требования и атрибуты, первые из которых представляют собой спецификацию того, что должна делать система, а вторые включают характеристики для предпочтительного выбора при прочих равных условиях. Требования задают необходимые условия, которым должна удовлетворять система, и они выражаются совокупностью как измеряемых, так и качественных показателей: пропускная способность, массо-габариты, потребляемая мощность, стоимость, отказоустойчивость, интеллектуальный уровень программной поддержки и т. п. К атрибутам, как правило, относят субъективные показатели, которые делают проект инвестиционно привлекательным, а созданное изделие - конкурентоспособным. К архитектурным атрибутам обычно относят: гибкость (масштабируемость), расширяемость и комплексируемость, которые в совокупности характеризуют открытость системы.

    При оценке пропускной способности по потокам инструкций и данных необходимо знать один или несколько показателей, характеризующих [106]:

  • время цикла выполнения команды (арифметико-логической, чтения-записи, ввода-вывода), которое в большей мере характеризует технологический уровень производства аппаратуры, чем потенциальные возможности ее использования;
  • время выполнения "взвешенной" смеси команд, которая отражает гистограмму их использования программами предметной области;
  • время решения представительной задачи, которая больше характеризует предметную область, чем используемую вычислительную технологию "собственных нужд", от которой и зависят системные временные издержки;
  • время решения испытательной программы, которая, с одной стороны, достаточно полно представляет особенности предметной области, а с другой стороны - особенности работы испытуемой машины, так как она должна быть написана с использованием инструментальной платформы испытуемой ЭВМ;
  • время решения синтетической программы, которая представляет собой комбинацию испытательной и представительной программы за счет того, что в первой учтены особенности работы подсистем ввода-вывода, управления памятью и другие системотехнические возможности испытуемой системы.
  • Пропускную способность (Б)ВС можно также оценить на основе аналитических, событийных или эмпирических моделей, а также прямым измерением характеристик составляющих блоков и устройств. Главные ограничения аналитических моделей связаны с трудностями описания взаимодействий аппаратуры и программного обеспечения, последнее из которых обычно приходится рассматривать как "черный ящик". Главные проблемы событийных и эмпирических моделей, а также прямого измерения состоят в сложности и стоимости их разработки.

    В табл. 1.2 приведены эмпирические данные качества применения каждого метода оценки производительности по состоянию на 1985 год [106]. Здесь 1 означает, что метод использовался, но оказался неадекватным, 2 - метод оказался недостаточно полезным, 3 - метод дал хорошие результаты и прочерк - метод не применялся. За прошедшие годы база апробации методов оценки расширилась, сами методики углубились и удешевились за счет создания специализированных инструментальных платформ их реализации.

    Показатели применимости метода оценки производительности (Б)ВС
    Метод оценки Оценка при выборе системы Расчет при разработке Измерение для реконфигурации
    Новая аппаратура Новые программы Создаваемая аппаратура Создаваемые программы Реконфигурация аппаратуры Реконфигурация программ
    Длительность цикла 1 - 1 - - -
    Смесь команд 1 - 1 - - -
    Представительные программы 2 1 2 1 - 1
    Аналитические модели 2 1 2 1 2 -
    Испытательные программы 3 3 2 2 2
    Синтетические программы 3 3 2 2 2 2
    Моделирование 3 3 3 3 3 3
    Прямое измерение 2 2 2 2 3 3

    Тем не менее, данные табл. 1.2 позволяют сделать следующие выводы, которые справедливы и для современных условий:

  • наиболее экономичную и достаточно достоверную оценку пропускной способности (Б)ВС по потокам инструкций и данных можно получить на основе комплексного использования различных методов и в первую очередь с помощью испытательных и синтетических программ, а к моделированию и измерениям имеет смысл прибегать при очень ответственных применениях информационных технологий, когда ошибка проекта грозит катастрофическими последствиями, по сравнению с которыми цена разработки отходит на второй план;
  • каждая представительная программа, включаемая в состав синтетической, должна быть "прозрачной" для априорной аналитической оценки требуемого операционного, коммутационного и управляющего ресурса, а также ресурса памяти;
  • "веса" представительных программ в синтетической смеси должны отражать специфику предметной области, а они должны допускать планомерное использование циклов $$if$$ и мажорирование циклами $$for$$ после включения в синтетическую смесь.
  • 1.2. Особенности измерения основных характеристик вычислительных систем

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

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

    В основе используемых в настоящее время методов оценки и сравнения производительности вычислительных систем лежит время.

    Компьютер, который выполняет определенный объем работы за меньшее время, считается более быстродействующим.

    Оценка временных характеристик выполняемых процессором работ - далеко не тривиальная задача.

    Для пользователя важно время, за которое решается его задача. Но практически нет программ, которые могут работать без некоторой операционной системы. В связи с эти возникают дополнительные накладные временные затраты. Поэтому при измерении производительности чаще всего используется сумма пользовательского и системного времени центрального процессора.

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

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

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

    В связи с этим в методиках оценки производительности используют разное время:

  • астрономическое;
  • время выполнения (execution time);
  • время ответа (response time);
  • прошедшее время (elapsed time), представляющее задержку выполнения задания и включающее: время работы процессора, время обращения к жесткому диску, время обращения к ОП, время выполнения операций ввода/вывода, накладные расходы операционной системы.
  • Для измерения времени, затрачиваемого процессором на выполнение данной программе, используется специальное время, которое называют временем центрального процессора (CPU time). Из этого времени исключено время ожидания выполнения ввода-вывода и время выполнения других программ. Необходимость применения этого параметра обусловлена тем, что в многопрограммном режиме происходит совмещение во времени процедур, обслуживающих задачи, которые используют разные ресурсы.

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

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

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

    Особенностью процессора как объекта измерения является то, что скорость взаимодействия функциональных устройств процессора чаще всего не зависит от динамических характеристик этих устройств, а задается частотой генератора тактовых импульсов. Поэтому время центрального процессора может быть вычислено двумя способами:

  • умножением количества тактов синхронизации необходимых для выполнения данной программы на длительность такта синхронизации,
  • либо делением количества тактов синхронизации для данной программы на частоту синхронизации.
  • Важной характеристикой процессора является среднее количество тактов синхронизации, необходимых для выполнения одной команды (CPI clock cycles per instruction). Этот параметр позволяет легко оценить время центрального процессора, необходимое для данной программы, зная количество выполняемых в программе команд.

    Производительность центрального процессора определяется тремя параметрами:

  • тактовой частотой;
  • средним количеством тактов на команду;
  • количеством выполняемых команд.
  • Все эти параметры тесно связаны между собой:

  • среднее количество тактов на команду зависит от функциональной организации и системы команд;
  • частота синхронизации зависит от уровня технологии производства аппаратных средств и функциональной организацией процессора;
  • количество выполняемых в программе команд определяется решаемой задачей, архитектурой системы и алгоритмом работы компиляторов. Для сравнения двух компьютеров по их производительности необходимо рассматривать все три компоненты.
  • В процессе поиска стандартной метрики для оценки производительности вычислительных систем было выбрано несколько единиц измерения.

    Одной из наиболее распространенных среди них является MIPS (Million Instruction Per Second). Она показывает количество команд программы, выполняемых в секунду.

    Производительность определяется как обратная ко времени выполнения величина, а более быстродействующий компьютер имеет более высокий MIPS-рейтинг.

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

    С понятием MIPS в свое время была связано еще две метрики, основанные на производительности эталонных компьютеров VAX 11/780 компании DEC и одной из моделей RS/6000 компании IBM. Производительность этих компьютеров определялась как 1 MIPS. Производительность тестируемых систем вычислялась относительно производительности этих компьютеров, которые являются эталонными. Приблизительное соотношение между этими величинами таково: 1 IBM MIPS равен 1.6 DEC MIPS.

    Использование эталонного компьютера сопряжено с серьезными трудностями:

  • необходимо постоянно воспроизводить или сохранять эталон;
  • требуется двойное программирование тестовых задач: на тестируемом и эталонном компьютере.
  • Использование измерения производительности компьютеров в MIPS не всегда объективно. Примером могут служить задачи, связанные с научно-техническими расчетами. В них широко применяется арифметика с плавающей точкой. Решение этих задач требует значительных вычислительных ресурсов. Вопрос оценки производительности используемых при их решении вычислительных систем всегда стоял очень остро. При этом достигнутые показатели производительности служили и служат показателем уровня разработок вычислительной техники.

    Поэтому для подобных приложений производительность процессора оценивалась и оценивается в FLOPS ( Fl oating point O perations P er S econd), который показывает, сколько операций с плавающей запятой выполняется компьютером в секунду.

    Современные компьютеры имеют достаточно высокий уровень производительности, поэтому в настоящее время используются производные величины от FLOPS: MFLOPS, GFOPS, TFLOPS, PFLOPS.

    Этот показатель в основном характеризует использование компьютеров в научно-технических приложениях. Он предназначен для оценки быстродействия при выполнении вычислительной системой операций плавающей арифметики. В противном случае его использование не всегда корректно.

    Этот показатель производительности, так же как и MIPS, зависит от конкретной выполняемой программы и архитектуры процессора.

    Однако у MFLOPS есть свои недостатки. Прежде всего, это связано с тем, что отсутствует совместимость операций с плавающей точкой на различных компьютерах.

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

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

    Тестовая смесь Dhrystone в настоящее время практически не применяется.

    Смесь состоит из ста команд. Из них 53 оператора присваивания, 32 команды управления, 15 вызовов функций. В качестве метрики используется количество Dhrystone в секунду. Тест очень короткий [301, 302].

    "Ливерморские циклы" представляют собой типичный набор фрагментов программ на языке FORTRAN. [301, 302] В этих программах реализованы разные вычислительные алгоритмы:

  • сеточные;
  • волновые;
  • последовательные.
  • Их выбор был основан на богатом опыте создания суперкомпьютеров и проведения сложнейших научных и инженерных расчетов Ливерморской национальной лаборатории им. Э. Лоуренса (Lawrence Livermore National Laboratory, LLNL) Министерства энергетики США

    При тестировании используется либо малый набор (14 циклов), либо большой набор (24 цикла).

    Коэффициент распараллеливания применяемых алгоритмов лежит в диапазоне от 0 до 1. Это позволяет использовать "Ливерморские циклы" для оценки производительности вычислительных систем, имеющих различную архитектуру. Тест практически не используется.

    Тесты LINPACK представляют собой программы я решения систем линейных алгебраических уравнений большой размерности. Они написаны на языке программирования FORTRAN [301, 302].

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

    Аргонская национальная лаборатория (Argonne National Lab) Министерства энергетики США регулярно публикует результаты тестирования различных вычислительных систем на тестах LINPACK.

    Тест LINPACK используется при составлении рейтинга самых высокопроизводительны компьютеров мира. Результаты размещаются на сайте http://www.top500.org/.

    В основе используемых в LINPACK алгоритмов лежит метод декомпозиции, широко применяемый при высокопроизводительных вычислениях. Достоинством тестов LINPACK является их структурированность. Для реализации элементарных операций над векторами, которые включаю умножение векторов на скаляр, сложение векторов, скалярное произведение векторов выделяется базовый уровень системы, называемый BLAS (Basic Linear Algebra Subprograms).

    Исходные данные для тестирования представляются в виде вещественных чисел двойной точности. Полученные результаты выражаются в MFLOPS.

    Тест LINPACK имеет два уровня.

    В тесте первого уровня LINPACK DP используется исходной матрицы размером 100*100. В тесте второго уровня LINPACK TPP исходная матрица имеет размерность 1000*1000.

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

    В этом случае полученные результаты могут существенно превышать реальные возможности системы.

    Применение тестов LINPACK TPP, LINPACK TPP для систем с массовым параллелизмом поводит к неадекватной оценки их производительности

    Для оценки производительности таких систем используется тест LINPACK HPC (Highly Parallel Computing), который обеспечивает полную загрузку вычислительных ресурсов MPP-системы, увеличивая размеры матрицы. Вариант этого теста разработан и для параллельных вычислительных систем.

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

    Анализ подходов к оценке производительности вычислительных систем позволяет сделать следующие выводы:

  • методика измерения производительности компьютеров во многом зависит от выбора единиц ее измерения;
  • инструментальные средства измерения производительности вычислительных систем должны быть адаптивными как к их архитектурным особенностям, так и классам решаемых с их помощью задач.
  • 1.3. Методы и средства оценки производительности вычислительных систем на основе стандартных инструментальных платформ

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

    Учитывая это, разработчики инструментальных средств измерения производительности вычислительных систем стремятся смоделировать работу типичных пользовательских приложений.

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

    Тесты SPEC

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

    Одной из таких организаций стала созданная в 1988 году корпорация SPEC (Standard Performance Evaluation Corporation) [263, 301].

    Цель корпорации состоит в разработке и сопровождении стандартизованных тестовых программ, предназначенных для оценки производительности создаваемых высокопроизводительных вычислительных машин.

    Для членства в SPEC достаточно подать заявку и оплатить вступительный взнос.

    Основное направление деятельности SPEC - подготовка тестов для оценки производительности основных подсистем компьютеров, которые могут использоваться, как разработчиками, так и потребителями вычислительной техники. Вся информация о предлагаемых наборах тестов публикуется.

    Чтобы воспользоваться тестами SPEC, необходимо приобрести соответствующую лицензию. Так как целью организации не является получение прибыли, стоимость лицензий покрывает только административные расходы.

    Можно выделить два базовых набора тестов SPEC CINT95, CFP95. С их помощью оценивается производительность компьютера и эффективность работы компиляторов. Тесты построены так, чтобы накладные расходы на работу ОС и выполнение операций ввода/вывода были пренебрежимо малы. Тесты ориентированы на ОС UNIX. При этом предусмотрена возможность их импорта на системные платформы Microsoft и других производителей.

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

  • Необходимостью увеличения времени выполнения теста. Время выполнения версии теста 1992 года сократилось до секунд, в результате снижалась точность измерения временных характеристик.
  • Необходимость увеличения объема кода теста. Тест 1992 года стал целиком размещаться в кэш памяти большого объема, что приводило к неадекватным оценкам производительности.
  • Необходимость приведения в соответствие с расширившейся сферой приложений вычислительной техники задач, включенных в тест.
  • Необходимостью совершенствования методов измерения времени.
  • Необходимостью создания новых инструментальных средств
  • Необходимостью стандартизации требований к компиляторам
  • В качестве метрик производительности выполнения операций целочисленной и вещественной арифметики используются:

  • скорость выполнения теста с оптимизированным (SPECint95 и SPECfp_95) и не с оптимизированным (SPECint base_95 и SPECfp base_95) режимом компиляции;
  • пропускная способность системы для многопроцессорных архитектур и многозадачных режимов работы, вычисляемая для оптимизированного (SPECint_rate95 и SPECfp_rate95) и не оптимизированного (SPECint_rate_base95 и SPECfp_rate_basefp95) режима работы.
  • Набор тестов CINT95

    Тест CINT95 предназначен для оценки производительности процессора при работе с целыми числами. В него входят восемь программ для решения задач из следующих областей приложения: искусственный интеллект, моделирование, программирование, компрессия, интерпретация языков, обработка, Shell-интерпретатор, базы данных.

    В качестве языка программирования используется Си.

    Набор тестов CFP95

    Тест CFP95 предназначен для оценки производительности процессора при работе с числами с плавающей точкой. В него входят десять программ для решения задач из следующих областей приложения: гидродинамика, предсказание погоды, квантовая физика, астрофизика, электромагнетизм, гидродинамика, моделирование, квантовая химия.

    В качестве языка программирования используется ФОРТРАН.

    SPECrate

    Тесты SPECint95 и SPECfp95 позволяют адекватно оценивать производительность процессоров при их работе в однозадачном режиме.

    Для многопроцессорных и многозадачных систем необходимо оценивать их пропускную способность, которая равна количеству заданий, выполняемых системой в единицу времени. Тесты SPECint95 и SPECfp95 для этого не предназначены.

    Тест SPECrate был создан для оценки производительности многопроцессорных систем. Алгоритм тестирования достаточно прост. Одновременно запускается несколько одинаковых тестовых программ, в качестве которых используются наборы Сint95 и Сfp95. Результатом оценки является количество задач конкретного типа, выполненных за заданное время. Их среднегеометрическое значение отражает пропускную способность тестируемой системы.

    Могут быть получены оценки SPECrate_int95, SPECrate_fp95, соответствующие целочисленным операциям и операциям с плавающей запятой. При тестировании измерения проводятся независимо по каждому тесту. Количество запускаемых копий теста зависит от архитектуры исследуемой системы. Измеряется время завершения последней копии тестовой программы.

    Для исключения влияния на результаты тестирования работы компилятора используются оценки: SPECrate_base_int95 и SPECrate_base_fp95.

    Результаты тестирования

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

    Возможны следующие варианты выполнения сравнительных оценок:

  • в заданной предметной области по решению конкретных задач;
  • комплексное сравнение с использованием итогового рейтинга, рассчитываемого как среднее геометрическое времен решения отдельных задач.
  • Тесты TPC

    В 1988 году по инициативе Омни Шерлин (Omni Serlin) был создан Комитет по тестам производительности обработки транзакций (Transaction processing Performance Council, TPC).

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

    Все решения в TPC принимает Совет Полного Состава (Full Council), который состоит из представителей всех компаний, входящих в TPC. Контроль за работой администрации TPC осуществляет Управляющий Комитет (Steering Committee), который переизбирается раз в год.

    Рабочими органами TPC являются постоянные и технические подкомитеты.

    В 1989 году были предложены основные правила проведения испытаний и публикации результатов тестирования и разработан тест TPC-A

    Эти правила действуют и в настоящее время. Для признания результатов официальными данными TPC необходимо выполнить ряд требований: полное соблюдения методики тестирования, результаты обязательно должны быть проверены аудитором TPC и опубликованы в открытом отчете.

    TPC определяет и управляет форматом нескольких тестов для оценки производительности OLTP (On-Line Transaction Processing) [264,265,301].

    Тест TPC-A

    Тест TPC-A был первым тестом, предложенным TPC.

    В его основе банковская операция помещения средств на депозит или их изъятие со счета.

    Результат измерения показывает, сколько подобных операций может быть выполнено в единицу времени. Транзакция TPC-A включает достаточно много различных действий: пересылку информации, чтение и запись файлов, арифметические операции. Тест TPC-A позволяет оценивать быстродействие системы как в локальной, так и в глобальной сети.

    Тест TPC-B

    Отличие теста TPC-B от TPC-А состоит в том, что он моделирует обработку аналогичных операций под управлением средств системного администрирования. Эмуляции терминалов и линий связи не выполняется. По сути, TPC-B характеризует рафинированные возможности СУБД в условиях интенсивной нагрузки. При публикации результатов используются единицы tps-B. Фактически это пакетная версия TPC-А. В настоящее время TPC тесты TPC-B и TPC-А не поддерживает.

    Тест ТСР-С

    Тестовый пакет TPC-C по своей сути аналогичен тестам TPC-A и TPC-B. Хотя в нем также выполняется моделирование обработки транзакций, по сложности он существенно превосходит тесы А и В.

    В нем моделируется достаточно сложная система, управляющая обработкой заказов.

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

    В тесте моделируется работа оператора при вводе данных с клавиатуры.

    В тесте предусмотрено выполнение следующих транзакций:

  • введение нового заказа через сложную экранную форму;
  • обновление базы данных, обусловленное платежом, 43%;
  • обновление базы данных, обусловленное поставкой;
  • получение справки о состоянии заказов, 4%;
  • получение справки по учету товаров, 4%
  • Тест обеспечивает измерение скорости транзакций по новым заказам, остальные транзакции выполняются в это время в фоновом режиме.

    В качестве модели БД теста используется модель БД оптового поставщика, содержащая следующие таблицы: товарные склады, район, покупатель, заказ, порядок заказов, новый заказ, статья счета, складские запасы и история.

    Система может масштабироваться за счет изменения количества товарных складов.

    Результаты тестирования:

  • $$tpmC$$ - пиковая скорость выполнения транзакций (максимальная пропускная способность системы (MQTh - Maximum Qualified Throghput);
  • $$$/tpmC$$ - нормализованная стоимость системы.
  • Стоимость представляет собой совокупную стоимость владения системой в течение пяти лет.

    Этот тест является основным продуктом Transaction Processing Performance Council.

    Организация постоянно стремится создавать тесты, которые отвечают потребностям бурно развивающегося рынка вычислительных систем. Было предпринято несколько попыток создания тестов для оценки производительности серверов (TPC-S), корпоративных систем (TPC-E), клиент-серверных архитектур TPC C/S. В основном они завершились неудачно.

    ТестTPC-W

    Тест предназначен для тестирования систем поддержки электронной коммерции.

    Тесты TPC-W предназначены для оценки производительности систем при решении задач.

    В тесте моделируются следующие нагрузки на систему:

  • интенсивные соединения с клиентами;
  • динамические Web-страницы;
  • использование consistent Web-объектов;
  • исполнение множества разнородных транзакций;
  • OLTP-модель;
  • сложная структура СУБД;
  • целостность транзакций;
  • конкурентный доступ к данным и изменение данных.
  • Тест поддерживает следующие профили взаимодействия с клиентами:

  • покупки;
  • просмотр;
  • ввод заказов.
  • Тест ТPC-D, TPC-H, TPC-R

    Эти тесты предназначены для оценки производительность коммерческих систем поддержки принятия решений.

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

    Поддержка теста ТPC-D прекращена с 1999 года.

    Тесты TPC-R аналогичны тестам TPC-H. Отличие состоит в том, что характер запросов в TPC-R известен, в TPC-H - нет. В связи с этим в тестах TPC-R разрешена оптимизация СУБД.

    В тестах используется две метрики:

  • производительность с указанием размера базы данных;
  • цена/производительность с указанием размера базы данных.
  • Во всех тестах TPC предусматривается два вида оценок:

  • производительность, выраженная в транзакциях в единицу времени (транзакций в секунду (tps) или транзакций в минуту (tpm));
  • стоимость одной единицы производительности tps или tpm. Стоимость рассчитывается как отношение затрат на приобретение
  • системы и ее эксплуатацию в течение пяти лет к производительности.

    Ни один тест TPC не может измерить производительность системы во всех возможных средах обработки транзакций. Тесты только помогают пользователю сравнить похожие системы.

    Тесты AIM

    Одной из независимых организаций, занимающихся оценкой производительности вычислительных систем, является компания AIM Technology [266, 301].

    Компания была основана в 1981 году. Сферой ее деятельности является разработка программного обеспечения для измерения производительности вычислительных систем, а также заказное тестирование информационных систем, использующих ОС UNIX.

    Используя методики оценок и тестовые смеси, разработанные AIM Technology, можно получить комплексную оценку тестируемой вычислительной системы. Вычислительная система оценивается по следующим параметрам:

  • Рейтинг производительности по AIM. За единицу этой величины принимается производительность эталонной вычислительной машины.
  • Максимальная пользовательская нагрузка. Определяет количество пользователей в системе, начиная с которого производительность системы становится меньше приемлемого уровня.
  • Индекс производительности утилит. Для его оценки используется тестовый пакет утилит AIM. Показывает возможности системы выполнять универсальные утилиты UNIX.
  • Максимальная пропускная способность. Используется для оценки производительности многопрограммных систем. Определяется как максимальное количество выполненных заданий в минуту.
  • Цена системы.
  • Тестовый набор AIM Technology - System Benchmark (Suite III) является основным тестовым набором.

    С его помощью можно получить следующие оценки:

  • скорость обменов с оперативной памятью,
  • скорость вычислений с вещественными и целыми числами,
  • скорость выполнение обменов данными между процессорами,
  • скорость вызовов функций языка Си,
  • быстродействие операций чтения/записи на диск.
  • Он позволяет выполнять анализ вычислительной системы без учета работы графического интерфейса и сетевых задержек.

    Компания AIM Technology предлагает специальные наборы тестовых смесей, позволяющие оценить возможности использование вычислительной системы в ряде прикладных областей:

  • разработка программного обеспечения;
  • автоматизации проектирования в машиностроении с использованием 3-мерной графики;
  • геоинформационные технологии;
  • стандартные офисные приложения (электронные таблицы, почта, текстовые редакторы);
  • многопользовательская среда;
  • среда центрального сервера для большого объема вычислений;
  • среда файлового сервера;
  • обработка транзакций в реляционной базе данных.
  • На основе приведенных данных можно утверждать:

  • современные программные инструментальные платформы, ориентированные на измерение характеристик вычислительных систем, поддерживают только процесс генерации тестов, ответственность за качество которых лежит на пользователе;
  • ни один программный тест не является адекватным реальному программному пакету пользователя и не отражает множество вариаций вычислительной нагрузки на компоненты исследуемой вычислительной системы;
  • все без исключения инженерные методики оценки производительности фактически отталкиваются от измерения времени, затраченного на решение "хорошо известной пользователю" задачи. В результате сопоставление двух ЭВМ весьма и весьма субъективно, так как и замер времени, и оценка выполненных машиной инструкций, и распределение времени между системными и прикладными задачами носят достаточно субъективный характер;
  • стандартные программные платформы оценки производительности и пропускной способности ЭВМ предоставляют пользователю только возможность создания тестовых программ, которые способны воспроизвести стабильную вычислительную нагрузку реальных задач только при использовании в них циклов $$for$$, так как при использовании циклов $$if$$ вычислительная нагрузка зависит от содержимого преобразуемых данных;
  • дальнейшее развитие программных платформ оценки производительности ЭВМ, скорее всего, будет связано с созданием адаптивных средств, оперативно реагирующих и на специфику алгоритма решения задачи, и на специфику архитектуры ЭВМ, и на содержимое преобразуемых потоков данных.
  • 1.4. Методика определения алгоритмических затрат на решение "представительных" задач, включаемых в проблемно-ориентированную инструментальную платформу оценки пропускной способности (Б)ВС

    Как видно из вышеизложенного, пользователь или покупатель компьютера сам должен синтезировать тестовые программы, чтобы созданная им синтетическая смесь достоверно представляла предметную область и в полной мере проверяла структурно-функциональные возможности (Б) ВС, вычислительные алгоритмы включаемых в нее представительных задач должны обеспечить планомерные вариации нагрузки от $$O(N)$$ до $$O(N^{3})$$ на операционный, коммутационный, управляющий и диагностический ресурс, а также ресурс памяти исследуемой или испытуемой (Б)ВС.

    Рассмотрим несколько алгоритмически "прозрачных" задач, позволяющих достаточно эффективно варьировать вычислительной нагрузкой в ЭВМ как последовательной, так и параллельной архитектуры.

    Задача о транзитивном замыкании относится к классу типа $$O(N^^{3})$$ и достаточно просто приводится к параллельному виду с помощью алгоритма Уошэлла - Флойда.

    Формулировка задачи. Пусть имеется ориентированный граф связности $$G(V,E) $$ с множеством вершин $$V $$ и множеством ребер E. Необходимо пориен-тированный граф рис. 1.1 [70] и ему соответствует матрица смежности:

    (рис 1.1)

    "Внутренний" параллелизм этой задачи в полной мере раскрывает рекурсивный алгоритм Уошэлла - Флойда [70]:

    $$For\,\, k\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ x_{ij}^k:= x_{ij}^{k-1} + x_{ik}^{k-1} * x_{kj}^{k-1},$$

    где $$k$$ - шаг рекурсии, $$+$$ - логическое сложение, $$*$$ - логическое умножение. В этом алгоритме три вложенных цикла $$for$$, реализация которых требует $$O(N^^{3})$$ шагов вычисления логического выражения. Для наглядности представим матрицу $$||А||$$ в виде таблицы, где "единичным" элементам соответствуют заштрихованные клетки, а "нулевым" - незаштри-хованные. Тогда последовательность вычислительных фаз алгоритма Уошэлла - Флойда примет вид:

    Здесь пунктирными линиями показаны значения, которые пробегают индексы $$i $$ и $$j $$ на каждом шаге рекурсии $$k$$.

    Результирующий граф $$G^{+}$$ имеет вид рис. 1.2, и ему соответствует матрица смежности:

    (рис 1.2)

    На рис. 1.2 пунктирными стрелками показаны ребра, порождаемые на каждом шаге рекурсии, откуда видно, что шаг рекурсии $$k$$ соответствует номеру вершины, через которую осуществляется транзитивное замыкание с учетом предыдущих шагов рекурсии.

    Таким образом, максимальный коэффициент векторно-конвейерного распараллеливания вычислений в задаче транзитивного замыкания может достигать значения $$N^{3}$$, а реально используемый зависит от структуры исходного графа $$G$$ и предоставляемого аппаратного ресурса. "Векторная" составляющая коэффициента распараллеливания вычислений ограничена размерами матрицы смежности ( $$i = j = N$$ ) и не может превышать величины $$N^{2}$$, а "конвейерная" составляющая определяется индексом $$k$$ и не может превышать $$N$$.

    Задача о кратчайшем пути аналогична задаче о транзитивном замыкании и состоит в определении кратчайшего пути между всеми парами узлов графа $$G(V,E,w)$$, где $$w_{ij}$$ - вес ребра, соединяющего вершину $$i$$ с вершиной $$j$$.

    В этом случае элементы матрицы $$||А||$$ определяются следующим образом:

  • $$a_{ij}$$ - расстояние из вершины $$i$$ в вершину $$j$$, если существует ребро из $$i$$ в $$j$$ ;
  • $$a_{ij} = \infty$$, если не существует ребра, связывающего $$i$$ с $$j$$ ;
  • $$a_{ij} = 0$$, если $$i = j$$.
  • Задача о кратчайшем пути заключается в вычислении матрицы $$||А^{+}||$$ кратчайших путей, в которых $$a^{+}_{ij}$$ есть длина такого пути из вершины $$i$$ к вершине $$j$$.

    Например, граф связности имеет вид рис. 1.3 и ему соответствует матрица $$||А^{0}|$$ | [70]:

    (рис 1.3)

    Тогда последовательность шагов алгоритма Уошэлла - Флойда примет вид:

    с той разницей, что операции $$+$$ соответствует выбор минимального элемента, а операции $$*$$ - простое сложение.

    Такая представительная задача позволяет исследовать затраты на управление ходом вычислительного процесса и издержки на организацию обмена с кеш-памятью. Для этого достаточно:

  • в задаче о кратчайшем пути:
  • с помощью датчика псевдослучайных чисел построить граф $$G(V,E,w)$$ и матрицу $$||А^{0}||$$ связности целочисленных или вещественных расстояний размером $$N*N$$ ;
  • принудительно присвоить диагональным элементам матрицы $$||А^{0}||$$ "нулевые" значения;
  • реализовать алгоритм Уошэлла - Флойда, варьируя $$N$$ в широких пределах, которые зависят от размеров кеш-памяти;
  • построить график зависимости времени решения задачи от $$N$$ ;
  • определить вытекающие из вычислительного алгоритма затраты на управление, пересылки данных и операционные затраты и, сравнив их с экспериментальными данными, оценить реальные системные временные издержки;
  • в задаче о транзитивном замыкании:
  • с помощью датчика псевдослучайных чисел построить матрицу $$||А^0||$$ связности целочисленных значений размером $$N*N$$ ;
  • принудительно присвоить диагональным элементам матрицы $$||А||$$ "единичные" значения и с помощью варьируемого извне параметра $$h$$ привести матрицу $$||А||$$ к двоичному виду по правилу:$$\hat{a_{ij}}= \begin{cases} 1, \text{ если } a_{ij} \ge h, \\ 0, \text{ если } a_{ij} < h. \end{cases}$$
  • реализовать алгоритм Уошэлла - Флойда в двух модификациях: по классической схеме и с оператором $$if$$ во втором цикле, благодаря которому не выполняется цикл по индексу $$j$$, если $$х_{ik}^{k-1}$$ или $$x_{ij}^{k-1}$$ ; вариации $$N$$ осуществить в широких пределах исходя из размеров кеш-памяти;
  • построить график зависимости времени решения задачи от $$N$$ в двух модификациях;
  • определить вытекающие из вычислительных алгоритмов затраты на управление, пересылки данных и операционные затраты и, сравнив их с экспериментальными данными, оценить реальные системные временные издержки;
  • вывести теоретическое условие, при котором модифицированный алгоритм должен выигрывать по времени в сравнении с классическим алгоритмом Уошэлла - Флойда и, варьируя параметром $$h$$, сопоставить с реально полученными данными.
  • Временные затраты на управление в (1.1), то есть затраты на организацию трех вложенных цикло в $$for$$, зависят от архитектуры устройства управления процессора и в худшем случае определяются соотношением $$T_{u} = (3N)^3\tau_c(p)$$, которое соответствует микропрограммному алгоритму работы простейшего целочисленного устройства управления и при условии, что команда сравнения является двухцикловой:

    Шаг 1. Прибавить "единицу" к содержимому $$j : j( t):=j(t-1)+1$$.

    Шаг 2. Если содержимое $$j(t) = N$$, то прибавить "единицу" к содержимому $$i: i(t):=i(t-1)+1$$ и перейти к шагу 1. В противном случае выполнить шаг 1.

    Шаг 3. Если содержимое $$i(t) = N$$, то прибавить "единицу" к содержимому $$k: k(t):=k(t-1)+1$$ и перейти к шагу 1. В противном случае выполнить шаг 1.

    Шаг 4. Если содержимое $$k(t) = N$$, то конец программы (END). В противном случае выполнить шаг 1.

    Здесь $$\tau_{c}(p)$$ - стандартный для всех ассемблерных инструкций цикл выполнения, который задается последовательностью синхроимпульсов (СИ).

    Если устройство управления процессора выполнить по схеме трехступенчатого конвейера (рис. 1.4), то временные затраты на управление станут линейными $$T_{u} = (N+3)\tau_{c}$$, где 3 такта задержки расходуются на "холостой ход" конвейера.

    (рис 1.4) Схема управления тремя вложенными циклами

    Алгоритмические временные затраты на коммутацию (пересылки данных в одноадресной ЭВМ) в (1.1) определяются организацией работы памяти. Если используется ассоциативная память (АЗУ), в которой операцию логического сложения можно выполнить непосредственным слиянием содержимого ячейки $$x_{ij}^{k-1}$$ с результирующим операндом $$х_{ij}^{k-1}* x_{kj}^{k-1}$$, то $$T_{АЗУ}= 3(N)^3\tau_{АЗУ}$$. В противном случае $$T_{ОЗУ}= 4(N)^3\tau_{ОЗУ}$$.

    В однопроцессорных ЭВМ операционные временные затраты на (1.1) определяются соотношением $$T_{ОУ}= 2(N)^3\tau_{ОУ}$$.

    Из приведенных данных видно:

  • В алгоритме Уошэлла - Флойда временные затраты на пересылки данных в 1,5-2 раза превышают затраты на обработку. Это вывод справедлив и без учета издержек на перезагрузку кеш-памяти, которая используется не только программой пользователя, но и системными программами даже в однозадачном режиме работы ЭВМ. Затраты на пересылки превосходят все остальные как за счет количества операций, так и за счет "средней" длительности каждой из них. "Средняя" длительность одной пересылки учитывает издержки на паразитное обновление кеш-памяти, и поэтому $$\tau_c(p) < \tau_{ОЗУ} $$, и только при полном совмещении цикла обработки одной страницы кеш-памяти с циклом обновления другой ее страницы $$\tau_c(p) = \tau_{ОЗУ}$$, но даже RISC -процессорах $$\tau_{ОЗУ}\ge 2\tau_c(p)$$.
  • Из всех видов временных затрат операционные затраты алгоритма Уошэлла - Флойда, которые, собственно, только и интересуют пользователя, оказались минимальными. Полученные данные говорят о том, что при решении задач типа транзитивного замыкания в принципе невозможно получить коэффициент использования физических возможностей процессора выше 10-15 %. Попытка минимизации операционных и жестко связанных с ними коммутационных затрат приводит к включению оператора $$if$$ во второй уровень вложенности цикла $$for$$ и при наличии оптимизирующего компилятора это выполняется автоматически:$$For\,\, k\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ if\,\,(x_{ik}^{k-1})=0)\to x_{ij}^{k}:=x_{ij}^{k} \text{ и } i:=i+1,\\ For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ x_{ij}^k:= x_{ij}^{k-1} + x_{ik}^{k-1} * x_{kj}^{k-1},$$ $$For\,\, k\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ if\,\,(x_{ij}^{k-1})=1)\to x_{ij}^{k}:=x_{ij}^{k} \text{ и } i:=i+1,\\ For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ x_{ij}^k:= x_{ij}^{k-1} + x_{ik}^{k-1} * x_{kj}^{k-1},$$
  • В вычислительном алгоритме (1.2) экономия от включения цикла $$if$$ зависит от количества элементов матрицы смежности $$||А^{k}||$$ с "нулевыми" значениями, а в (1.3) - от количества элементов с "единичными" значениями, которое возрастает с ростом индекса $$k$$. Поэтому по мере роста индекса $$k$$ в случае (1.2) экономия от включения цикла $$if$$ будет падать, а в случае (1.3) - возрастать, но в любом случае затраты на управление увеличатся на $$\Delta T_u = (2N)^3\tau_c(p)$$.

    Отсюда, в "пользовательском" варианте предпочтение следует отдавать вычислительному алгоритму по варианту (1.3), но в синтетические и испытательные программы для полноты эксперимента необходимо включать все три варианта, так как они моделируют различные условия (не) зависимости временных затрат от содержимого преобразуемых данных.

    Алгоритм Уошэлла - Флойда допускает только ОКМД-режим распараллеливания вычислений как по векторной, так и по конвейерной составляющей с коэффициентами $$\gamma_{v} =\overline{l,N^{2}}$$ и $$\gamma_{k} =\overline{l,N}$$ соответственно. Приведенные данные говорят о том, что минимально возможное время $$T_{АЗУ}= \tau_{АЗУ}$$ решения задачи транзитивного замыкания по классическому алгоритму Уошэлла - Флойда можно получить в специализированной параллельной архитектуре с максимальным коэффициентом векторно-конвейерного распараллеливания $$\gamma = \max{\gamma_{v}} * \max{\gamma_{k}} = N^{3}$$, который поддерживается полнодоступным ассоциативным ЗУ на $$N^{3}$$ портов и $$N^{3}$$ операционными устройствами, осуществляющими обмен данными с каждым портом ассоциативного ЗУ по двум входным и одной выходной однобитной шине данных. Во всех остальных архитектурах время решения за дачи лимитируется характеристиками ОЗУ, поддерживающими соответствующий коэффициент распараллеливания вычислений по потокам данных: $$\tau_{АЗУ} < T \le 4(N)^3\tau_{ОЗУ}$$.

    Задачи векторно-матричной алгебры перекрывают весь спектр размерностей задач табл. 1.1:

  • $$O(N^{3})$$, если выполняется умножение матриц $$||А||*||В|| = ||С||$$ ;
  • $$O(N^{2})$$, если выполняется умножение векторов $$А*В = С$$ ;
  • $$O(N)$$, если выполняется сложение двух векторов $$А+В = С$$.
  • Поэтому эти задачи стараются включать во все испытательные и синтетические программы для оценки пропускной способности ВС по потокам команд и данных практически всех параллельных архитектур.

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

  • Вычислительный алгоритм умножения матриц с поэлементным порядком формирования результирующей матрицы:$$For\,\, k\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ c_{ik}=\sum\limits_{j=1}^{N}{a_{ij}*b_{ij}},\\ \text{где } a_{ij} \in||A||,\,b_{jk} \in||B||,\,c_{ik} \in||C||.$$
  • Вычислительный алгоритм умножения матриц с "построчным" порядком формирования результирующей матрицы:$$For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ \langle c_{ik}{\rangle}=\sum\limits_{j=1}^{N}{a_{ij}}\prod\limits_{k=1}^{N}{{\langle}b_{jk}{\rangle}},$$

    где $${\langle}b_{jk}{\rangle}$$, $${\langle}с_{ik}{\rangle}$$ - соответственно строки матриц $$||B||$$ и $$||C||$$

  • Вычислительный алгоритм умножения матриц с порядком формиро вания результирующей матрицы "по столбцам":$$For\,\, j\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ {\langle}c_{ik}{\rangle}=\sum\limits_{j=1}^{N}{b_{jk}}\prod\limits_{k=1}^{N}{{\langle}a_{ji}{\rangle}},$$

    где $${\langle}a_{ij}{\rangle}$$, $${\langle}с_{ik}{\rangle}$$ - соответственно строки матриц $$||A||$$ и $$||C||$$

  • Изменение порядка формирования результирующей матрицы сопровождается изменением порядка вызова данных, который может либо совпадать, либо не совпадать с порядком их хранения в ОЗУ. В современных ЭВМ данные в ОЗУ чаще хранятся по строкам и реже по столбцам. Это значит, что при "чтении" данных по столбцам и больших размерах преобразуемых матриц, превышающих размеры доступной пользователю кеш-памяти, возрастают паразитные пересылки страниц между кеш-памятью и ОЗУ и, как следствие, увеличивается продолжительность "среднего" цикла обращения к памяти.

    Поэтому с помощью такой представительной задачи можно исследовать издержки на организацию обмена с кеш-памятью, для чего достаточно:

  • с помощью датчика псевдослучайных чисел построить матрицы $$||А||$$ и $$||В||$$ размером $$N*N$$ ;
  • реализовать алгоритмы поэлементного, "построчного" и "постолбцового" порядков формирования результирующей матрицы $$||C||$$, изменяя $$N $$ в широких пределах, зависящих от размеров кеш-памяти;
  • выполнить транспонирование матрицы $$||C||$$ после поэлементного ее формирования и определить временные затраты;
  • реализовать постолбцовое формирование матрицы $$||C||$$ с "построчным" порядком записи ее элементов;
  • определить вытекающие из каждого вычислительного алгоритма затраты на управление, пересылки данных и операционные затраты и сравнить их с экспериментальными данными.
  • Временные затраты на управление в задачах векторно-матричной алгебры аналогичны затратам задачи о транзитивном замыкании и в зависимости от архитектуры устройства управления процессора могут составлять либо $$T_{u} = (3N)^3\tau_c(p)$$, либо $$T_{u}= (N+3)\tau_c(p)$$.

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

    В изделиях микроэлектроники наибольшее распространение получили две схемы векторно-конвейерного распараллеливания ОКМД-типа на основе коллективов "скаляторных" операционных устройств, каждое из которых представляет последовательно соединенные умножитель на два входа и сумматор (рис. 1.5).

    (рис 1.5) Схемы соединения "скаляторных" устройств

    Продолжительность $$T_{ОУ}(c_{ik}) = 2N\tau_c(*)$$ цикла формирования элемента $$c_{ik}$$, результирующей матрицы схемы рис. 1.5-а более чем в 2 раза может превосходить продолжительность $$T_{ОУ}( c_{ik}) = \tau_c (*)+N\tau_c (+)$$ того же цикла схемы рис. 1.5-б. В первом случае темп работы двухступенчатого конвейера из умножителя и сумматора-накопителя регламентирует более медленный умножитель, а во втором случае фаза умножения выполняется по всем входным операндам одновременно и поэтому темп работы $$N$$ ступенчатого конвейера лимитирует только фаза суммирования. Но это справедливо для (полу)заказного исполнения "скаляторов", в рамках которого справедливо неравенство $$\tau_c (*) > \tau_c (+)$$, где $$\tau_c (*)$$ и $$\tau_{c}(+)$$ - соответственно достижимое время цикла срабатывания аппаратно реализованного умножителя и сумматора. В RISC -архитектурах по определению $$\tau_{c}(*) = \tau_{c}(+)$$ и темп вычисления элемента результирующей матрицы по схеме рис. 1.5-б определяется соотношением $$T_{ОУ}(c_{ik}) = (N+1) \tau_{c}(*)$$.

    В любом случае такой выигрыш оплачивается практически TV -кратным увеличением аппаратных затрат на схему рис. 1.5-б. Поэтому на практике большее распространение получила схема рис. 1.5-а, на основе которой можно варьировать коэффициентом распараллеливания $$\gamma$$ в пределах $$\gamma = \overline{1,N^2}$$, а не $$\gamma = \overline{1,N^3}$$.

    При вычислении одного элемента результирующей матрицы на одном "скаляторном" устройстве рис. 1.5-а удельные алгоритмические временные затраты на коммутацию (пересылки данных в одноадресной ЭВМ) для всех трех алгоритмов определяются соотношением $$T_{ОЗУ}(c_{ik}) = (2N+1)\tau_{ОЗУ}$$. Снизить эти затраты можно в схеме "скалятора" с $$N$$ аккумуляторами, образующими FIFO -регистровую цепочку. Для такой схемы $$T_{ОЗУ}(c_{ik}) = (N+2)\tau_{ОЗУ}$$ (рис. 1.6).

    (рис 1.6) Схема "скалятора" с N аккумуляторами

    "Скалятор" с $$N$$ аккумуляторами наиболее эффективен при построчном формировании элементов результирующей матрицы, так как в этом случае:

  • элемент $$a_{i}j$$ вызывается один раз и хранится в регистре умножителя в течение всего времени обработки строки $$(b_{jk})$$ ;
  • построчный порядок "чтения" элементов обеих матриц $$||А||$$ и $$||В||$$ совпадает с порядком их хранения в ОЗУ, что минимизирует количество паразитных перезагрузок кеш-памяти при "больших" размерах этих матриц.
  • Однако такой двукратный выигрыш во времени оплачивается $$N$$ -кратным ростом аппаратных затрат на FIFO -регистровую цепочку аккумуляторов.

    Из приведенных данных видно, что эффективное совмещение обработки одной области кеш-памяти с обновлением другой ее области можно получить, если $$T_{ОЗУ}(c_{ik}) = 2N\tau_c(*) \approx T_{ОЗУ}(c_{ik}) = (2N+1)\tau_{ОЗУ}$$, что осуществимо, если $$\tau_{c}(*) \approx \tau_{ОЗУ}$$. Последние условие как раз и предполагает отсутствие паразитных обновлений кеш-памяти за период вычисления матрицы $$||C||$$.

    Таким образом, включив в состав синтетических и испытательных программ все три варианта вычислительных алгоритмов умножения матриц, можно с различной степенью интенсивности симулировать паразитные обновления кеш-памяти по ходу вычислений. Это позволяет при одних и тех же исходных данных в процессе испытаний и исследований (Б)ВС варьировать общим временем решения задач векторно-матричной алгебры в пределах 20-40 %.

    Как показали эмпирические данные, в пользовательскую библиотеку вычислительных алгоритмов векторно-матричной алгебры, содержащую подпрограммы поэлементного умножения матриц и транспонирования, имеет смысл включить подпрограмму построчного умножения, что улучшает качество работы всего пакета на 20-30 %.

    Задача сортировки данных методом "пузырька" относится к классу задач типа $$O(N^{2}) \le; N(N-1)/2$$, и при ее распараллеливании возникают достаточно типичные издержки управления коллективом вычислителей, которые связаны с информационной зависимостью параллельных процессов и которые кардинальным образом снижают фактический коэффициент распараллеливания.

    Алгоритм сортировки методом "пузырька":

    $$For\,\, i\,\, from\,\, 1\,\, to\,\, N, \\ For\,\, j\,\, from\,\, i+1\,\, to\,\, N, \\ If\,\,x_{i}>x_j\Rigtharrow Tr(x_{i},x_j)$$

    где $$Tr(x_{i}, x_{j})$$ представляет собой транспозицию (перестановку) сравниваемых элементов $$x_i$$ и $$x_j$$.

    Чтобы исследовать издержки управления сортировкой данных методом "пузырька", связанные с ростом коэффициента распараллеливания вычислений, достаточно:

  • С помощью датчика псевдослучайных чисел построить последовательность чисел $$\{x_{i}\}$$ мощности $$N$$.
  • Упорядочить по возрастанию последовательность $$\{x_{i}\}\Rightarrow {\langle}x_{i}{\rangle}$$ методом "пузырька" и подсчитать количество выполненных транспозиций $$\eta(N)$$.
  • Разбить последовательность $$\{x_{i}\}$$ на две равные части: $$\{x_{i} \} = \{x_i\}_1U\{x_i\}_2$$ и повторить шаг 2 для каждой последовательности $$\{x_{i}\}_1$$ и $$\{x_{i}\}_2$$, подсчитав $$\eta_1(N/2)$$ и $$\eta_2(N/2)$$. Выбрать и запомнить $$\max[\eta_1(N/2), \eta_2(N/2)]$$.
  • Сравнить "старший" элемент упорядоченной последовательности $$x_{i1}\in{\langle}\{x_{i}\}_{1}{\rangle}$$ с младшим" элементом последовательности $$x_{i2}\in{\langle}\{x_{i}\}_{2}{\rangle}$$ и при необходимости выполнить транспозицию, переводящую элемент $$x_{i2}\in{\langle}\{x_{i}\}_{1}{\rangle}$$ и элемент $$x_{i1}\in{\langle}\{x_{i}\}_{2}{\rangle}$$.
  • Упорядочить модифицированные последовательности $${\langle}\{x_{i}}_{12}{\rangle}$$ и $${\langle}\{x_{i}}_{21}{\rangle}$$ и определить $$\max[\eta_1(N/2), \eta_2(N/2)]$$. Запомнить сумму $$\eta(N_1,N_2)=\max[\eta_{1}(N/2), \eta_{2} (N/2)]+\max[\eta_{12} (N/2), \eta_{21} (N/2)]$$.
  • Шаги 4 и 5 повторять до тех пор, пока $$x_{i1} \le x_{i2}$$.
  • Шаги 3-6 повторить для $$k = (4-256)$$, где $$k$$ - коэффициент распараллеливания алгоритма сортировки данных.
  • Условие останова алгоритма сформулировано в шестом пункте, из чего следует, что его размерность нарастает по $$k: x_{i1} \le x_{i2} ... \le x_{ik}$$. Это условие представляет простейший алгоритм управления многопроцессорной системой, в которой согласно условию четвертого шага запуск следующей итерации многопроцессорной сортировки осуществляется синхронно и синфазно по всем процессорам и после того, как завершил работу самый нагруженный из них. Возникающие при этом "простои" процессоров накапливаются в сумме $$\eta(\{N_{k} \})$$, которая вычисляется на пятом шаге. Поэтому отношение $$\eta(N)/\eta(\{N_k\})$$ характеризует реально полученный "средний" коэффициент распараллеливания вычислений, так как "объем выполненной работы" (число транспозиций) и в однопроцессорном, и в многопроцессорном вариантах один и тот же.

    Эмпирические данные говорят о том, что начиная с $$k = 4-5$$ один и более процессоров гарантировано начинают работать "вхолостую" и их количество возрастает с ростом $$k$$ до такой степени, что делает бессмысленным наращивание аппаратной платформы уже при $$k \ge 16$$.

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

    Таким образом, "представительность" задач сортировки состоит в том, что они позволяют исследовать пропускную способность сильно связанных многопроцессорных систем, не усложняя при этом вычислительное ядро алгоритма.

    Одним из главных ограничивающих коэффициент распараллеливания факторов связан с падением вычислительной устойчивости алгоритмов при их реализации на параллельных архитектурах (см. раздел 6.6 курса "Задачи и модели вычислительных наноструктур"). Поэтому одна из главных задач исследований и испытаний параллельных (Б)ВС состоит в том, чтобы определить вычислительную устойчивость всех решаемых задач.

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

    Методику исследования вычислительной устойчивости алгоритмов проще всего проиллюстрировать на примере программы суммирования членов псевдослучайной последовательности из $$N$$ элементов.

    Главными источниками погрешностей являются преобразователи десятичного кода в двоичный, денормализаторы в составе арифметических устройств плавающей запятой и шины данных. Все они имеют $$n$$ -битную разрядную сетку, конечность которой приводит:

  • к абсолютной погрешности представления исходных данных формата фиксированной запятой, которая возникает при преобразовании десятичных чисел в двоичный код конечной разрядности $$n: 0 \le \Delta X _{(1}) \le 2^{-n}$$ ;
  • к абсолютной погрешности арифметических преобразований, которая включает две составляющие:
  • абсолютную погрешность денормализации, которая характерна для данных формата плавающей запятой: $$0\le \Delta X _{(2)} \le 2^{-n(АКК)}$$, где $$n(АКК)$$ - разрядность регистра-аккумулятора операционного устройства процессора;
  • абсолютную погрешность округления, которая возникает при пересылке данных из регистра-аккумулятора в регистр общего назначения (РОН) или буферный регистр, для которых $$n(РОН) < n(АКК)$$ и поэтому $$0 \le \Delta X_{(2)} \le 2^{-n(РОН)}$$.
  • В данном случае объектом исследований являются:

  • Алгоритм сложения с накоплением суммы в однопроцессорной вычис лительной системе:$$For\,\, i\,\, from\,\, 1\,\, to\,\, N; \\ \Sigma_0=0;\\ \Sigma_{i+1}=\Sigma_i+x_{i+1};$$
  • 2. Алгоритм сложения с накоплением суммы в многопроцессорной вычислительной системе:$$For\,\, j\,\, from\,\, 1\,\, to\,\, k; \\ For\,\, i\,\, from\,\, 0\,\, to\,\, N/k; \\ \Sigma_{(j-1)k+0}=0;\\ \Sigma_{(j-1)k+i+1}=\Sigma_{(j-1)k+i}+x_{i+1}.$$
  • Первому алгоритму отвечает схема суммирования рис. 1.7-а, а второй алгоритм можно реализовать на двух типах аппаратных платформ, которые отличаются количеством операций пересылки частных сумм: с иерархической (рис. 1.7-б) и с последовательной (рис. 1.7-в) схемой накопления частных сумм, где количество сумматоров одинаково и равно $$2k -1$$, а время задержки разное и равно соответственно $$]log_{2} k[+1$$ и $$k$$ ( $$]log_{2} k [ $$ - старшее целое $$log_{2} k$$ ).

    Методика управления интенсивностью проявления источников погрешности при вычислении суммы членов псевдослучайной последовательности использует следующие факторы:

  • Абсолютная погрешность денормализации зависит от разности порядков слагаемых, которая определяется как накопленной суммой, так и дисперсией псевдослучайной последовательности. Величина накопленной суммы на $$i$$ -м шаге зависит от степени упорядоченности псевдослучайной последовательности $$\{x_{i}\}$$: хронологический порядок перечисления индексов $$i$$, перечисление индексов $$i$$ по возрастанию $$x_{i}$$, перечисление индексов $$i$$ по убыванию $$x_{i}$$.
  • Абсолютная погрешность округления зависит от числа внутренних и/или внешних пересылок промежуточных значений накопленной суммы, и она тем выше, чем больше коэффициент распараллеливания вычислений. В схеме рис. 1.7-а всего одна пересылка результата, в схемах рисунков 1.7-б и 1.7-в количество пересылок, в том числе и промежуточных сумм, определяется количеством сумматоров и равно $$2k-1$$.
  • (рис 1.7) Схемы накопления суммы

    Чтобы по этой методике исследовать погрешность вычисления суммы членов псевдослучайной последовательности из $$N$$ элементов в зависимости от различной интенсивности проявления источников погрешностей, достаточно:

  • С помощью датчика псевдослучайных чисел построить последовательность чисел $$\{x_{i}\}$$ мощности $$N$$.
  • Упорядочить по возрастанию последовательность $$\{x_{i}\}\Rigtharrow{\langle}x_{i}{\rangle}$$.
  • Упорядочить по убыванию последовательность $$\{x_{i}\}\Rigtharrow\{x_{i}\}$$..
  • Вычислить $$\Sigma$$ в однопроцессорном варианте для последовательностей $$\{x_{i}\}$$, $$\langle x_{i}\rangle$$ и $$\{x_{i}\}$$ и в двух форматах: $$float (\Sigma_{f})$$ и $$double (\Sigma_{db})$$.
  • Варьируя $$k = 2\div 512$$, вычислить суммы в многопроцессорном варианте в формате $$float: \{(\Sigma_f)_k\}$$ и построить зависимость $$\Delta_k = (\Sigma_f) _{k} -(\Sigma_f)_{0}$$.
  • Из шести возможных вариантов шага 4 наиболее истинное значение $$(\Sigma_f)_{0}$$ накопленной суммы дает упорядоченная по возрастанию последова-тельность, полученная в формате $$double$$, то есть $$(\Sigma_f)_{0}:= \Sigma_{db}(\langle x_{i}\rangle )$$, так как в этом случае оба вычислительных источника имеют минимальную интенсивность.

    Чтобы симулировать погрешность представления, шаг 1 необходимо выполнить сначала в формате $$double$$, а затем перейти к формату $$float$$.

    Типовой график зависимости абсолютной погрешности накопления суммы имеет вид случайного апериодического колебательного процесса (рис. 1.8), который говорит о следующем:

  • Колебательный характер обусловлен тем обстоятельством, что накопленные частные суммы могут принимать вид $$\Sigma_{k} = \Sigma^{-i}$$ с "единичны-ми" значениями в старших разрядах (например: 0,5, 0,25, 0,75 и т. д.), на которые не влияет ни денормализация, ни округление.
  • Случайный апериодический характер изменения абсолютной погрешности наиболее опасен потерей управления ходом вычислительного процесса с использованием операторов условных переходов. Поэтому при испытаниях и исследованиях вычислительной устойчивости (Б)ВС имеет смысл варьировать интенсивностью источников погрешностей при вычислении выражений, входящих в операторы $$if$$.
  • (рис 1.8) Типовой график зависимости абсолютной погрешности суммирования от коэффициента распараллеливания вычислений, выполненных с одинарной точностью

    Таким образом, для создания полноценных синтетических и исследовательских программ нет необходимости усложнять их операционное ядро, которое резко удорожает разработку инструментальных платформ оценки пропускной способности (Б)ВС по потокам инструкций и данных. Для этих целей достаточно в качестве неделимой единицы инструментальной платформы выбрать совокупность представительных задач с прозрачным операционным ядром, позволяющим управлять вычислительной нагрузкой на операционные, коммутационные и управляющие ресурсы ЭВМ и ресурсы ее памяти в соответствии с требованиями всей предметной области.

    Системотехнические выводы по лекции 1

  • Метрологические проблемы вычислительной техники носят как фундаментальный, так и чисто методический характер. Фундаментальная составляющая связана с отсутствием единой метрики, определяющей количество информации, а значит, и объем выполненной ЭВМ работы. Методическая составляющая связана с отсутствием эталонных ЭВМ, эталонных алгоритмов преобразования данных и стандартных процедур пересчета реальных алгоритмических затрат в затраты эталонного алгоритма. В итоге нарушается базовый принцип любого измерения, в результате чего измерительный прибор становится неотъемлемой частью измеряемого объекта (в данном случае операционной системы) и поэтому постоянно изменяет свою структурно-функциональную схему.
  • Согласно результатам третьей лекции курса "Задачи и модели вычислительных наноструктур" проблема создания единой метрики неразрешима в принципе. Действительно, теория вычислений допускает только экстенсиональную эквивалентность двух алгоритмов, то есть эквивалентность по результату, а не в рамках всего вычислительного процесса. С другой стороны, оценку алгоритмической сложности реальных компьютерных реализаций можно провести по А.Н. Колмогорову только с точностью до некоторой константы и при достаточно жестких ограничениях на используемые вычислительные и/или перечислительные алгоритмы, что характерно для алгоритмически ориентированных областей применения традиционных вычислителей.
  • Все без исключения инженерные методики оценки производительности фактически отталкиваются от измерения времени, затраченного на решение "хорошо известной пользователю" задачи. В результате сопоставление двух ЭВМ весьма и весьма субъективно, так как и замер времени, и оценка выполненных машиной инструкций, и распределение времени между системными и прикладными задачами носят достаточно субъективный характер.
  • Стандартные программные платформы оценки производительности и пропускной способности ЭВМ предоставляют пользователю только возможность создания тестовых программ, которые способны воспроизвести стабильную вычислительную нагрузку реальных задач только при использовании в них циклов $$for$$, так как при использовании циклов $$if$$ вычислительная нагрузка зависит от содержимого преобразуемых данных.
  • Дальнейшее развитие программных платформ оценки производительности ЭВМ скорее всего будет связано с созданием адаптивных средств, оперативно реагирующих и на специфику алгоритма решения задачи, и на специфику архитектуры ЭВМ, и на содержимое преобразуемых потоков данных.
  • Снижение трудозатрат на адаптацию испытательных и исследовательских программ требует структурного подхода, в рамках которого программные модули представительных задач выступают в качестве неделимых единиц. Совокупность таких структурных единиц инструментальной платформы оценки качества ВС должна обеспечить управляемое перераспределение вычислительной нагрузки на операционные, коммутационные и управляющие ресурсы, а также ресурс памяти исследуемой ВС, для чего требуется точная априорная оценка этих же видов ресурсов, затребованных вычислительными алгоритмами представительных задач. Поэтому операционное ядро каждой представительной задачи должно быть алгоритмически прозрачным, чтобы на его основе можно было априорно и достоверно оценить требуемую нагрузку на все виды используемых ресурсов.
  • Вернуться к учебному плану