Одной из независимых организаций, занимающихся оценкой производительности вычислительных систем, является компания AIM Technology [266, 301].
Компания была основана в 1981 году. Сферой ее деятельности является разработка программного обеспечения для измерения производительности вычислительных систем, а также заказное тестирование информационных систем, использующих ОС UNIX.
Используя методики оценок и тестовые смеси, разработанные AIM Technology, можно получить комплексную оценку тестируемой вычислительной системы. Вычислительная система оценивается по следующим параметрам:
Тестовый набор AIM Technology - System Benchmark (Suite III) является основным тестовым набором.
С его помощью можно получить следующие оценки:
Он позволяет выполнять анализ вычислительной системы без учета работы графического интерфейса и сетевых задержек.
Компания AIM Technology предлагает специальные наборы тестовых смесей, позволяющие оценить возможности использование вычислительной системы в ряде прикладных областей:
На основе приведенных данных можно утверждать:
Как видно из вышеизложенного, пользователь или покупатель компьютера сам должен синтезировать тестовые программы, чтобы созданная им синтетическая смесь достоверно представляла предметную область и в полной мере проверяла структурно-функциональные возможности (Б) ВС, вычислительные алгоритмы включаемых в нее представительных задач должны обеспечить планомерные вариации нагрузки от \[ O(N) \] до \[ O(N^{3}) \] на операционный, коммутационный, управляющий и диагностический ресурс, а также ресурс памяти исследуемой или испытуемой (Б)ВС.
Рассмотрим несколько алгоритмически "прозрачных" задач, позволяющих достаточно эффективно варьировать вычислительной нагрузкой в ЭВМ как последовательной, так и параллельной архитектуры.
Задача о транзитивном замыкании относится к классу типа \[ O(N^^{3}) \] и достаточно просто приводится к параллельному виду с помощью алгоритма Уошэлла - Флойда.
Формулировка задачи. Пусть имеется ориентированный граф связности \[ G(V,E) \] с множеством вершин \[ V \] и множеством ребер E. Необходимо пориен-тированный граф рис. 1.1 [70] и ему соответствует матрица смежности:
"Внутренний" параллелизм этой задачи в полной мере раскрывает рекурсивный алгоритм Уошэлла - Флойда [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 пунктирными стрелками показаны ребра, порождаемые на каждом шаге рекурсии, откуда видно, что шаг рекурсии \[ k \] соответствует номеру вершины, через которую осуществляется транзитивное замыкание с учетом предыдущих шагов рекурсии.
Таким образом, максимальный коэффициент векторно-конвейерного распараллеливания вычислений в задаче транзитивного замыкания может достигать значения \[ N^{3} \] , а реально используемый зависит от структуры исходного графа \[ G \] и предоставляемого аппаратного ресурса. "Векторная" составляющая коэффициента распараллеливания вычислений ограничена размерами матрицы смежности ( \[ i = j = N \] ) и не может превышать величины \[ N^{2} \] , а "конвейерная" составляющая определяется индексом \[ k \] и не может превышать \[ N \] .
Задача о кратчайшем пути аналогична задаче о транзитивном замыкании и состоит в определении кратчайшего пути между всеми парами узлов графа \[ G(V,E,w) \] , где \[ w_{ij} \] - вес ребра, соединяющего вершину \[ i \] с вершиной \[ j \] .
В этом случае элементы матрицы \[ ||А|| \] определяются следующим образом:
Задача о кратчайшем пути заключается в вычислении матрицы \[ ||А^{+}|| \] кратчайших путей, в которых \[ a^{+}_{ij} \] есть длина такого пути из вершины \[ i \] к вершине \[ j \] .
Например, граф связности имеет вид рис. 1.3 и ему соответствует матрица \[ ||А^{0}| \] | [70]:
Тогда последовательность шагов алгоритма Уошэлла - Флойда примет вид:
с той разницей, что операции \[ + \] соответствует выбор минимального элемента, а операции \[ * \] - простое сложение.
Такая представительная задача позволяет исследовать затраты на управление ходом вычислительного процесса и издержки на организацию обмена с кеш-памятью. Для этого достаточно:
Временные затраты на управление в (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 такта задержки расходуются на "холостой ход" конвейера.