О представлении матриц кватернарными деревьями

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

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

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

Предлагаемая методика базируется на ранее установленных нами фактах о существенной зависимости характера кинетики роста популяции микроорганизмов от распределения клеток по фазам клеточного цикла в начальный момент времени. Однако для реализации методики предполагается разработать новую, отличную от наших предыдущих работ математическую модель, в которой происходит замена реальных объектов (микроорганизмов или клеток) их компьютерными аналогами, наделенными необходимыми свойствами (объектно-ориентированный подход). По нашему мнению, такой подход является наиболее физичным и адекватным реальной ситуации. В ходе выполнения проекта, наряду с реализацией компьютерной технологии, будут разработаны алгоритмы и программа такой модели, проведена ее параметрическая идентификация на основе экспериментальных данных, проведено исследование с ее помощью таких феноменов, как различный характер кинетики роста асинхронных и синхронизированных культур, выполнены оценки влияния распределения микроорганизмов по фазам клеточного цикла в популяции на ход кинетических кривых, оценки возможной «невоспроизводимое™» реальных кинетических экспериментов из-за неучета фазовой гетерогенности, проведены расчеты погрешностей идентификации распределения микроорганизмов по фазам клеточного цикла.

О ПРЕДСТАВЛЕНИИ МАТРИЦ КВАТЕРНАРИЫМИ ДЕРЕВЬЯМИ © Г.И. Малашонок, М.С. Зуев

ВВЕДЕНИЕ

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

Таким естественным форматом может служить формат кватернарного дерева (ОТ). Дерево строится следующим образом. Если порядок матрицы 2", то она может быть разбита на четыре квадратных блока порядка 2"~\ которые также могут быть разбиты на четыре равных блока, и так вплоть до элементов. Если блокам поставить в соответствие вершины, а ребрами соединить вершины, соответствующие блокам, с вершинами, соответствующими его подблокам, то в результате получим кватернарное дерево (см. также [1]). Отметим, что при необходимости всякая матрица может быть дополнена до матрицы размера 2" введением дополнительных нулевых или единичных элементов.

Четырем блокам матрицы соответствуют четыре ребра, исходящих из корневой вершины. Эти ребра нумеруются числами 0, I, 2, 3. В двоичной записи этих чисел первый двоичный разряд соответствует номеру блочной строки, а второй - номеру блочного столбца, при этом нумерация начинается с нуля.

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

Таким образом, для матрицы порядка 2" путь от корневой вершины до отдельного элемента состоит из п ребер и может быть записан с помощью п чисел в четверичной системе счисления. Если йу - ненулевой элемент матрицы, г = (гу2 ... г'„),у = (/Уг ...у,,) - двоичная запись чисел г и у, то путь от корневой вершины к этому элементу образуют ребра с номерами гу',, г'2/2, ..., /,г/„ в двоичной записи.

КОДИРОВАНИЕ КВАТЕРНАРНОГО ДЕРЕВА

Формат кватернарного дерева предполагает хранение матрицы в виде двух векторов - вектора коэффициентов СоеАЧ, состоящего из всех ненулевых элементов матрицы, и информационного вектора 1пМ, отвечающего за строение дерева. При этом в векторе СоеШ сначала расположены все элементы первого блока матрицы, затем все элементы второго блока,

затем третьего и в конце располагаются все элементы четвертого блока. И аналогично для подблоков.

Информационный вектор складывается из информационных блоков (октав), соответствующих вершинам дерева, и содержит восемь целых чисел (w0, W-j).

Будем различать концевые и неконцевые вершины дерева. Концевые вершины соответствуют блокам размера 2x2, а неконцевые - всем остальным.

СОСТАВ ОКТАВЫ, СООТВЕТСТВУЮЩЕЙ НЕКОНЦЕВОЙ ВЕРШИНЕ

Числа w0, ..., w3 равны количеству элементов в векторе InM, которые содержат информацию о поддереве

0, ..., 3, соответственно.

Числа w4, ..., w7 равны количеству ненулевых элементов матрицы, которые расположены в блоках, соответствующих поддеревьям 0, ..., 3, соответственно. Отметим, что если блок ; нулевой, то оба числа w,- и W/+4 равны нулю.

СОСТАВ ОКТАВЫ, СООТВЕТСТВУЮЩЕЙ КОНЦЕВОЙ ВЕРШИНЕ

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

Если элементами матрицы являются полиномы, то числа w0, ..., w3 равны длине информационного вектора соответствующего полинома, а числа w4, ..., vv7 равны длине вектора коэффициентов соответствующего полинома. При этом у нулевого полинома длина информационного вектора и вектора коэффициентов всегда равны нулю.

Если элементами матрицы являются скаляры, то все числа Wo, ..., w3 равны нулю, а числа w4, ..., w7 равны соответственно 0, если соответствующий скаляр равен нулю, или 1, в противном случае.

Пример.

Например, кватернарное дерево InM = (8,0,8,8,3,0,4,3 ;0,0,0,0,0,1,1,1 ;0,0,0,0,1,1,1,1 ;0,0,0,0,1,1,0,1),

CoefM = (1,1,3,4,5,6,3,6,3,5) соответствует матрице

ДРУГИЕ ФОРМЫ ХРАНЕНИЯ МАТРИЦ

Самыми распространенными формами хранения матриц являются стандартная построчечная форма хранения всех коэффициентов матрицы (DM), которая применяется для хранения плотных матриц, а также построчечная форма хранения ненулевых коэффициентов матрицы и их индексов (SM), которая применяется для хранения разреженных матриц. Обозначения QT, DM и SM происходят от названий: quaternary tree, density matrix и sparse matrix.

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

Формат QT предназначен, в первую очередь, для параллельных вычислений. Однако самостоятельный интерес представляет реализация последовательных матричных алгоритмов в QT формате и сравнение их со стандартными матричными алгоритмами для DM и SM форматов.

Кроме того, интерес представляет сравнение стандартных алгоритмов умножения с алгоритмом Штрас-сена умножения матриц.

Для проведения экспериментов были составлены 4 программы в среде Java по стандартным алгоритмам умножения в каждом из трех форматов и алгоритм Штрассена в DM формате, и проводились серии экспериментов на AMD-1700 (256 Мб). Приведем результаты этих исследований.

Сравнение алгоритмов умножения матриц одного размера, но разной плотности. В этой серии экспериментов сравнивалось время умножения матриц, элементами которых являются полиномы над конечным полем Z/pZ. Исследовался случай матриц размера 32x32 над полиномами 50 порядка над конечным полем Z/pZ. Число р выбиралось так, чтобы каждый элемент поля можно было записать в одном машинном слове.

В экспериментах изменялась плотность матриц -отношение числа ненулевых элементов матрицы к общему числу элементов матрицы, и сравнивалось время вычисления произведения матриц. Результаты приведены на рисунках 1-2.

На рисунках 1 и 2 по обеим осям откладываются плотности сомножителей в процентах. На рис. 2 приведен увеличенный фрагмент первого рисунка около начала координат.

Рис. 1. Выбор лучшего алгоритма умножения матриц в соответствии с плотностью сомножителей. Плотность меняется в пределах 0-100 %

Область IV. Область, в которой алгоритм умножения 8М-матриц опережает алгоритм умножения ОМ-матриц. Опережение в 2 раза достигается на нижней границе.

Область V. Область, в которой алгоритм умножения БМ-матриц опережает алгоритм умножения ОМ-матриц в 2-10 раз и опережает алгоритм умножения ОТ-матриц в 1-1,4 раза.

Область VI. Область, в которой алгоритм умножения ОТ-матриц опережает алгоритм умножения 8М-матриц в 1-2 раза и опережает алгоритм умножения ОМ-матриц в примерно в 50 раз.

Область VII. Область, в которой алгоритм умножения ОТ-матриц опережает алгоритм умножения 8М-матриц в 2-Ю раз и опережает алгоритм умножения ОМ-матриц в 50-300 раз.

Рис. 2. Выбор лучшего алгоритма умножения матриц в соответствии с плотностью сомножителей. Плотность сомножителей изменяется в пределах 0-2 %

ОМ

зм

классическое

ЭМ, кл

I ОТ.

эм

-от

умножен

умножен

ое умножени

ическое умноже

ие(36 - 8Є

чиє (С

ие Штрассена

%)

е (0,5-36

%)

4 8

16

32

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

Определены следующие области.

Область I. В этой области алгоритм Штрассена опережает стандартные алгоритмы для всех форматов. Выигрыш, по сравнению со стандартным алгоритмом для ОМ-матриц, достигает 1,45 в том случае, когда плотности сомножителей равны 100 %.

Области II и III. В этих областях стандартный алгоритм умножения ОМ-матриц опережает все алгоритмы. Но максимальный выигрыш по сравнению с алгоритмом умножения БМ-матриц составляет только 8 % на верхней границе области 11. Выигрыш в 2 раза по сравнению с алгоритмом Штрассена на нижней границе области II и более 2 раз в области III.

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

случайные полиномы 10-го порядка. Размеры матриц менялись в пределах от 4-го до 64-го порядка, а также изменялась плотность матриц.

Результаты экспериментов представлены на рис. 3. Здесь на горизонтальной оси откладывается порядок матриц, а на вертикальной оси - плотность матриц. Выделены четыре области. В области матриц высокой плотности (начиная с 86 % для матриц 64-го порядка) преимущество имеет алгоритм Штрассена. В области, где плотность выше 36 %, преимущество имеет стандартный алгоритм умножения ОМ-матриц, но он слабо выигрывает у алгоритма умножения 8М-матриц, выигрыш порядка нескольких процентов. В области, где плотность матриц ниже 36 %, преимущество у алгоритма умножения 8М-матриц, а начиная с плотности 0,5 %, преимущество у алгоритма умножения ОТ-матриц.

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

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

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

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

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

Для матриц над областями первого типа алгоритм Штрассена всегда проигрывает стандартному алгоритму.

Для плотных матриц над областями первого типа (начиная, примерно с 50 %) лучший формат хранения - это ЭМ, для матриц средней плотности (примерно 0,5-50 %) лучшим форматом является БМ, а для разреженных матриц (менее 0,5 %) лучший формат - это ОТ.

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

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

ЛИТЕРАТУРА

1. Малашонок Г.И., Красиков А.В. Пакет процедур для работы с биматрицами // Вести. ТГУ. Сер. Естеств. и техн. науки. VII Державинские чтения. Тамбов, 2002. Т. 7. Вып. I. С. 76.

БЛАГОДАРНОСТИ: Работа выполнена при частичной поддержке грантов Минобразования № 02-2.0-98, РФФИ № 04-07-90268-Ь, «Университеты России» № 04.01.051 и «Научный потенциал» № 23-03-24.

О НЕКОТОРЫХ ПОДХОДАХ К ПОСТРОЕНИЮ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ

© Г.И. Малашонок, Ю.Д. Валеев

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

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

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

Можно выделить четыре этапа при выполнении параллельной программы такого типа.

1. Разделение задачи. Главный процессор, получив основную задачу, делит ее на п подзадач, где п - количество процессоров.

2. Распределение задачи. Одна часть задачи остается на главном процессоре, а остальные части раздаются другим процессорам.

3. Вычисление подзадач. Каждый процессор решает свою подзадачу и посылает результат главному процессору.

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

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

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

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

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

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