2. Компьютерная алгебра: Символьные и алгебраические вычисления. Пер. с англ./ Под ред. Б. Бух-бергера, Дж. Коллинза, Р. Лооса. М.: Мир, 1986.
3. Данилевский А.М. О численном решении векового уравнения // Матем. сб. 1937. Т.2(44). N1. 169-
172.
Pereslavtseva O.N. Experiments with a parallel algorithm for calculation of the characteristic polynomial for polynomials matrixes. Experiments with a parallel algorithm for calculation of the characteristic polynomial for polynomials matrixes on the MVS and TSU clusters are stated and discussed.
Key words: calculation of a characteristic polynomial, parallel algorithm.
Поступила в редакцию 20 ноября 2009г.
УДК 004.421
УМНОЖЕНИЕ ФАЙЛОВЫХ ПОЛИНОМОВ1
© А. Г. Поздникин
Ключевые слова: файловый полином, умножение файловых полиномов, параллельный алгоритм.
Предлагается параллельный алгоритм умножения полиномов, которые не помещаются в оперативную память. Такие полиномы назовём файловыми полиномами, т. к. они хранятся в файлах на жёстком диске. Приводятся и обсуждаются результаты с параллельным алгоритмом вычисления произведения файловых полиномов.
1 Введение
Большинство математических систем позволяют производить операции с полиномами, которые хранятся в оперативной памяти компьютера. А когда полином не помещается в оперативную пямять, такие системы оказываются непригодными. Так как объёмы используемой оперативной памяти обычно меньше дисковой, то можно хранить полиномы в файлах на жёстком диске. Полином, записанный в файл на жёстком диске в определённом формате, будем называть файловым.
1Работа выполнена при поддержке программы «Развитие потенциала высшей школы» (проект 2.1.1/1853)
В работе [1] описан формат хранения файловых полиномов, рассмотрены алгоритмы, реализующие выполнение основных арифметических операций с ними, и приведены результаты экспериментов. Очевидно, что время выполнения операций с файловыми полиномами, особенно операции умножения, очень быстро растет с ростом степеней исходных полиномов. Поэтому возникает задача разработки эффективного параллельного алгоритма умножения файловых полиномов.
2 Параллельный алгоритм умножения файловых полиномов
Рассматриваемый алгоритм умножения файловых полиномов является рекурсивным. В основе алгоритма лежит дихотомическое деление полиномов на части. Деление полинома на части происходит до тех пор, пока части станут таких размеров, которые позволяют выполнить умножение в оперативной памяти. Графом алгоритма является бинарное дерево. На листах дерева происходит умножение частей полиномов. В параллельном алгоритме деление на части происходит одновременно с распределением процессоров. Если свободные процессоры заканчиваются, а умножение частей полиномов по-прежнему не возможно произвести в памяти, то выполняется вызов однопроцессорного рекурсивного алгоритма.
Рассмотрим параллельный алгоритм умножения файловых полиномов А и В. Граф алгоритма изображен на рис. 1.
А В А * В = а,В+• а2В [0; 3]
Рис. 1. Граф параллельного алгоритма умножения полиномов А и В и распределение четырех процессоров на узлах данного дерева
Выбирается больший из полиномов и делится на две части, которые будут занимать в оперативной памяти примерно равные объёмы. Пусть в нашем случае полином А > В, т. е. занимает большее количество памяти, чем В. На первом шаге делим полином А на две части ах и а2 , т. е. А = аг + а2 ■ Интервал с номерами процессоров [0;3] делится на два интервала [0;1] и [2;3]. Получим два узла на слое, на которых необходимо выполнить операции умножения а\ * В и «2 * В. Эти операции не могут быть выполнены в оперативной памяти, поэтому необходимо продолжать деление полиномов на части. Для этого сравниваем а\ с полиномом В, а2 с полиномом В и выбираем из них большие. Пусть В > а! и В > а2. Тогда делим В на части Ь17 Ь2 и на следующем слое на каждом процессоре вычисляем произведения ах * Ь\, * Ь2, а2 * &ъ а2*Ь2 . Пусть мы достигли
листовых вершин, когда данные операции возможно произвести в оперативной памяти соответственно на процессорах 0, 1, 2, 3. Следующими шагами станет подъём. Сначала это сумма полиномов а\ * В = а\ * Ъ\ + а\ * Ь2 и а2 * В = а2 * 61 + а2 * Ь2 . Результатом умножения станет сумма А*В = а,1*В + а2*В.
3 Эксперименты
По приведенному выше алгоритму был разработан программный комплекс. Эксперименты проводились на кластере из 14 процессоров Intel Xeon 3 ГГц, 1 Гб. В экспериментах использовались полиномы от двух переменных, полученные случайным образом, с целыми 8 -разрядными коэффициентами, с количеством мономов 16 * 104. Принято, что максимально допустимое количество мономов в полиномах, когда операцию умножения возможно произвести в оперативной памяти, равно 104 .
Ускорением вычислений при переходе от по-процессорного кластера, где время вычислений равно Го, к k-процессорному кластеру, где время вычислений равно Тк, к> п о , принята функция а(Тк) — (Т0/Тк - 1 )/{к/щ - 1) * 100% .
Результаты экспериментов приведены в табл. 1. К примеру, при переходе от однопроцессорной машины к двухпроцессорному кластеру ускорение равно 88,64 %. При переходе от однопроцессорных вычислений к четырехпроцессорным ускорение равно 89,84 % . Когда мы используем 6, 10, 12, 14 процессоров, ускорение заметно снижается. Это связано с тем, что числа 6, 10, 12, 14 не являются степенями двойки, а у нас используется граф алгоритма в виде бинарного дерева.
Таблица 1
Значения времени выполнения операции умножения полиномов на п процессорах и ускорения вычислений на п процессорах по сравнению с вычислениями на одном процессоре
Число процессоров 1 2 4 6 8 10 12 14
Время умножения, с 11156 5914 3019 2753 1688 1701 1754 1660
Ускорение 88,64 89,84 61,05 80,13 61,76 48,73 44
На следующих графиках представлена зависимость времени вычислений от количества процессоров и ускорение вычислений на п процессорах по сравнению с вычислениями на одном процессоре.
Рис. 2. График зависимости времени выполнения операции умножения полиномов от количества процессоров
Рис. 3. Ускорение выполнения операции умножения на п процессорах по сравнению с умножением на одном процессоре
4 Заключение
Реализованный параллельный алгоритм умножения файловых полиномов показал свою эффективность и может быть применён в задачах, которые используют умножение полиномов больших размеров. Так как в основе алгоритма лежит дихотомическое деление полиномов на части, для вычислений рекомендуется использовать количество процессоров п = 2к, где к — натуральное число. Оптимальное число процессоров для быстрого умножения файловых полиномов можно подобрать экспериментально, учитывая ускорение вычислений.
ЛИТЕРАТУРА
1. Поздникин А.Г. Файловые полиномы. Вестник Тамбовского университета. Сер. Естественные и технические науки. Том 14, вып. 4, 2009. С.783-785.
2. Малашонок Г.И. О проекте параллельной компьютерной алгебры. Вестник Тамбовского университета. Сер. Естественные и технические науки. Том 14, вып. 4, 2009. С.744-748.
Pozdnikin A.G. Multiplication of file polynomials. An algorithm for multiplication of file polynomials is described. Experimental results with that parallel algorithm on TSU cluster are stated.
Key words: file polynomials, multiplication of file polynomials, parallel algorithm.
Поступила в редакцию 20 ноября 2009г.