Danilkin Fiodor Alekseevich, doctor of technical science, professor, [email protected], Russia, Tula, Tula State University,
Novikov Aleksey Vladimirovich, candidate of technical science, docent, [email protected] , Russia, Tula, Tula State University,
УДК 004.415.52
СИСТЕМА АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММОГО КОДА
Е.И. Дараган
Рассмотрены особенности анализа производительности программного кода, программ. Описан и представлена реализация метода оценки стоимости выполнения операций программного кода для абстрактной вычислительной системе.
Ключевые слова: программа, код, стоимость, операция.
Иерархическая структура, присущая всем алгоритмам и всегда воплощенная в программах, является хорошим источником для рационального использования ресурсов. Все современные языки программирования обязательно не только отражают, но и подчеркивают иерархическую структуру алгоритмов. Выделение, подчеркивание иерархий, реализация принципа структурного и объектно- ориентированного программирования способствует пониманию правильного выполнения алгоритма, упрощению разработки программы.
Разбиение на частные, элементарные подпрограммы обеспечивается представлением алгоритма в виде одного или нескольких взаимодействующих процессов. Процессы - логически завершенные, преимущественно значительные по объему вычисления, на которые необходимо разбить выполняемый алгоритм. При формировании процессов основополагающими являются требования оптимальной сегментации программ для распределения вычислений между средствами вычислительной среды и распределения в ней ресурсов при параллельной выполнении нескольких процессов.
Одновременно между процессами существуют два вида зависимости: процессы могут быть явно зависимы (влияют на выполнение друг друга, могут порождать или прекращать другие процессы) и зависимость может быть реализована на уровне операционной системы. Для первого случая характерно, что процессы,объединённые в рамках одной задачи, используют закрепленную для этой задачи общую память. Данная характе-
ристика рассмотренной зависимости позволяет осуществлять построение достаточно сложных программных систем. Для второго типа зависимостей характерно параллельное выполнение нескольких процессов. В данном случае, управление памятью, синхронизация и распределение нагрузок между ресурсами системы выполняется централизованно.
В многопроцессорной системе одновременно могут выполняться, т.е. находиться в активном состоянии, несколько процессов. Их число ограничено количеством процессоров в вычислительной среде. Процесс представляет собой элементарную программу. Каждая программа формируется определенным наром команд, совокупность и порядок которых реализуют конкретно взятый алгоритм функционирования программной системы.
Существует ряд важных характеристик, в соответствии с которыми оцениваются программы: правильность, точность, надежность, сопровождаемость, стоимость разработки, модифицируемость. В данной статье внимание будет уделено производительности программ,а также рассмотрена методика оценки производительности программ для различных конфигураций абстрактной вычислительной системы. Определим понятие программы.
В [1] программой называется описание вычислительного метода на языке программирования. В данном определении ключевыми являются термины вычислительный метод и язык программирования. Под вычислительным методом понимается процедура, обладающая всеми характеристиками алгоритма, за исключением конечности. Алгоритм является конечным набором правил, точно определяющий последовательность операций или шагов, которые необходимо выполнить для решения искомой задачи.
Особое место в анализе программы занимает определение показателей трудности ее выполнения. Трудность зависит от различных факторов. Основными из них являются время выполненияи стоимость выполнения операций, алгоритма.Одним из главных вопросов при анализе производительности программы, каким образом программа расходует время своего выполнения? Для ответа на этот вопрос,необходимо определить в исходной программе множество состояний [2, 3], в которых может находиться программа во время своего выполнения. Если Э = (51,52 . - такое
множество, то поведение программы можно описать последовательностью состояний, в которых нахожится программа при выполнении, и временем нахождения в каждом из состояний.
Формально это описание можно представить как последовательность
где ^-продолжительность >ого интервала выполнения состоянииБу
Если для двух ] и к = 1,2, ..., п определить
то общее время, потраченное на состояние Б; во время выполнения программы можно получить
г
]=1
где г - число интервалов, на которое разделяется все время выполнения. Общее время выполнения определяется по формуле (1)
и
I
Составляющая программу информация может быть разделена на части -блоки. В любой заданный момент выполнения программы обрабатывается один из этих блоков. Очевидно, что минимальным размером блока составляет выполнение единичной операции присваивания значений, запись в память. В течение любого интервала времени обычно выполняется только некоторое подмножество блоков. В этом случае состоянием программы можно считать ссылку на некоторый блок или на некоторое конкретное подмножество блоков. Время выполнения можно разбить на интервалы, соответствующие каждому из этих состояний. Последовательность состояний, определяемая блоками, является описанием схемы обращений (информационный граф [4]).
Понятие стоимости выполнения операции включает в себя некую абстрактную оценку сочетания эффективности и производительности при выполнении шага алгоритма, блока программы. Для просто применения данного понятия предлагается использовать классификацию операций, которые могут быть произведены в программном коде:
1 .Арифметические операции;
2.Вызовы подпрограмм и функций;
3. Операции с памятью;
4. Логические операции.
Для каждой категории характерны определенные наборы операций, которые могут быть выполнены в абстрактной вычислительной системе. Стоить отметить, что указанные выше категории являются лишь основными и не далеко не исчерпывающими. Для каждой отдельно взятой вычислительной системы могут быть сформированы свои категории операций или данное понятие может отсутствовать. Категории, введенные раннее, описывают систему группировки операций и задания для каждой группы определенных особенностей расчета характеристик производительности.
Представленные категории операций легли в основу автоматизированного анализа программного кода на предмет оценки производительности. Ключевым звеном системы является понятие конфигурации - набор характеристик абстрактной вычислительной среды, используемых при расчетах стоимости выполнения как отдельных операций, так и программного кода в целом.
Конфигурация характеризуется наличием в ней таких характеристик как: количество процессоров, количество ядер на каждый доступный для использования процессор. Для каждого процессора имеется возможность привязки категории операции и стоимости выполнения с точностью до операции. Ниже представлена структурная схема разработанной системы, в частности таблицы базы данных (рис. 1).
OperatіonSubcategory (measure)
Ç idjOperationSubcategory Name Operand Categoryjd
Configuration (measure)
Ç id_Configuration Name
ProcessorCount
Active
CPULinks (measure)
Operat і onCategory (measure) L Ç id_CPULinks CPUJd
Ç id OperationCategory
Name OparationSubCategoryJd Cost
CPU (measure)
$ id_CPU Name CoreCount Configurationjd
Рис.1. Структурная схема базы данных
Табличный способ хранения описанных выше данных представляет возможность хранить в системе практически неограниченное количество конфигурацию системы, что дает возможность проводить анализ различных вариантов конфигурирования системы под конкретно взятый алгоритм.
Рис.2. Пример информационного графа программы
Система интегрирована в с модулями, описанными в [5]. В дополнение к процессупостроения графа информационных зависимостей [4] (рис. 2),предлагается следующая методика: в построенном дереве состояний, последовательно, вне зависимости от порядкового номера состояний, осуществлять анализ кода программы. Анализ заключается в выявлении в нем основных операций, которые были определены в системе и включены в активную конфигурацию. В системе имеется возможность просмотра детализированной информации о каждом из выделенных на этапе анализа кода состояний (рис. 3).
Рис. 3. Пример расчета стоимость выполнения операций алгоритма в абстрактной вычислительной системе
В совокупности с методиками и средствами моделирования сетей Петри-Маркова [6]инструментальное средство, а также алгоритмы и методы, заложенные в ее реализацию, позволяют проводить анализ стоимостных характеристик алгоритмов, представленных в виде программного кода. Постановка оптимизационной задачи, решающей проблему оптимального распределения обработки состояний программного кода между процессорами абстрактной вычислительной среды, и ее решение позволит решить задачу распараллеливания вычислений последовательного алгоритма.
Список литературы
1. Кнут Д., Грэхем Р. Конкретная математика. Основаниеинформа-тики. Concrete Mathematics.A Foundation for Computer Science. М.: Мир; Бином. Лаборатория знаний, 2006. 703 с.
2. Арапбаев Р.Н. Анализ зависимостей по данным: тесты на зависимость и стратегии тестирования // Диссертация на соискание ученой степени кандидата физико-математических наук.
3. Дараган Е.И. Параллельные вычисления и верификация программ // Известия ТулГУ. Серия: Технические науки. Вып. 5. Тула: Изд. ТулГУ,
2012. С. 95-101.
4. Ивутин А.Н., Дараган Е.И. Построение схемы распараллеливания последовательного алгоритма программы // ИзвестияТулГУ. Серия: Технические науки. Вып. 5. Тула: Изд. ТулГУ, 2012. С. 101-109.
5. Ивутин А.Н., Дараган Е.И. Автоматизированый анализ последовательного кода программы // Известия ТулГУ. Серия: Технические науки. Вып. 10. Тула: Изд. ТулГУ, 2012. С. 184-189.
6. Ивутин А.Н., Дараган Е.И. Построение схемы распараллеливания последовательного алгоритма программы // ИзвестияТулГУ. Серия: Технические науки. Вып. 5. Тула: Изд. ТулГУ, 2012. С. 101-109.
Дараган Евгений Игоревич, аспирант, evgenie. daragan@,mail. ru, Россия, Тула, Тульский государственный университет
THE SYSTEM PERFORMANCE ANALYSIS SOFTWARE E.I. Daragan
The features of the analysis of the performance of code programs. Described is a method implementation and evaluation of the cost of operations code for the abstract computing system.
Key words: program code, the cost of the operation.
Daragan Evgeniy Igorevich, postgraduate, evgenie. daragan@mail. ru, Russia, Tula, Tula State University
УДК 004.93
О ЛОКАЛИЗАЦИИ ОТРИЦАТЕЛЬНЫХ СОБСТВЕННЫХ ЗНАЧЕНИЙ В МАТРИЦАХ ПАРНЫХ СРАВНЕНИЙ
С.Д. Двоенко, Д.О. Пшеничный
В интеллектуальном анализе часто вместо результатов измерений исходных признаков на объектах данные сразу же представлены парными сравнениями объектов между собой. В отсутствие исходных признаков условием корректного погружения множества в метрическое пространство является неотрицательная определенность матрицы парных близостей его элементов друг к другу. В этом случае близости интерпретируются как скалярные произведения. Предложено корректировать нарушенную метрику путём минимальных изменений элементов матрицы парных сравнений с использованием оптимальной перестановки её строк и столбцов.
Ключевые слова: метрика, детерминант, скалярное произведение, расстояние, близость, сходство, различие, собственные числа.
Введение. Рассмотрим экспериментальные данные, представленные парными сравнениями элементов конечного множества между собой в виде квадратной матрицы. Если она положительно определена, то её определитель и все собственные значения положительны. Следовательно, суще-
94