<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Библиотека параллельной арифметики многократной точности для высокопроизводительных систем\ast</article-title>
      </title-group>
      <pub-date>
        <year>2015</year>
      </pub-date>
      <fpage>110</fpage>
      <lpage>122</lpage>
      <abstract>
        <p>Вятский государственный университет При решении больших задач на высокопроизводительных системах 64-битной арифметики с плавающей точкой IEEE часто оказывается недостаточно для получения корректных результатов. Возникает необходимость использования высокоточных вычислений. В этой работе рассмотрены актуальные приложения высокоточных вычислений. Представлен обзор существующего программного обеспечения. Обсуждаются требования к перспективным программным средствам. Рассмотрена новая библиотека высокоточной арифметики MF-Library. В этой библиотеке для представления чисел с плавающей точкой произвольной длины используется система остаточных классов. Это обеспечивает эффективное выполнение основных высокоточных арифметических операций с распараллеливанием обработки отдельных цифр мантиссы. MF-Library реализует концепцию потоковой безопасности, что позволяет использовать ее на системах с общей памятью. Представлены экспериментальные оценки эффективности MF-Library.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        важную роль играют полиномы Чебышева, которые также вычисляются с помощью
рекуррентных соотношений.
5. Продолжительное моделирование. Практически любой процесс физического
моделирования, выполняемого в течение длительного времени, в конечном итоге отходит от
реальности. Это связано с накоплением ошибок округления в дополнение к ошибкам,
связанным с дискретизацией по времени и пространству. Показательным примером
является задача численного исследования орбитальной эволюции небесных тел [
        <xref ref-type="bibr" rid="ref14 ref15">15,16</xref>
        ].
6. Экспериментальные математические расчеты. Многие результаты в этой
сравнительно молодой области научных исследований (например, формула Бэйли – Боруэйна –
Плаффа для вычисления числа \pi ) не могли быть получены без использования
вычислений с очень высокой точностью [
        <xref ref-type="bibr" rid="ref10 ref15">7, 16</xref>
        ].
      </p>
      <p>
        Приведенные области применения высокоточных вычислений характеризуются, как
правило, большой размерностью задач. Вместе с тем, даже при малом объеме вычислений в
машинной арифметике может быть получен результат, не содержащий ни одной значащей
цифры [
        <xref ref-type="bibr" rid="ref16 ref17 ref18">17–19</xref>
        ]. Таким образом, проблема обеспечения приемлемой точности вычислений
актуальна в настоящее время и с ростом объемов производимых вычислений, ее значение,
несомненно, будет возрастать.
2. Программное обеспечение высокоточных вычислений
Одним из способов повышения точности в настоящее время является 128-битный IEEE
формат [
        <xref ref-type="bibr" rid="ref19">20</xref>
        ], в котором поле мантиссы расширено до 113 разрядов. Однако аппаратная
поддержка этого формата требует значительных затрат [
        <xref ref-type="bibr" rid="ref15">16</xref>
        ] и, судя по всему, не предвидится
в ближайшей перспективе. Более распространенным вариантом является длинная
арифметика — программная обработка чисел, разрядность которых превышает стандартную
длину машинного слова вычислительной машины. В настоящее время существует
достаточно широкий спектр библиотек длинной арифметики. К наиболее известным относятся
следующие.
      </p>
      <p>
        1. QD [
        <xref ref-type="bibr" rid="ref20">21</xref>
        ]. Пакет расширенной точности, поддерживает два формата данных:
doubledouble (\aprox 32 десятичные цифры) и quad-double (\aprox 64 десятичные цифры). Имеет
высокоуровневые интерфейсы языков C++ и Fortran-90, что обеспечивает
конвертацию существующих программ с минимальным изменением исходного кода. Доступен
для скачивания по адресу: http://crd-legacy.lbl.gov/~dhbailey/mpdist.
2. ARPREC [
        <xref ref-type="bibr" rid="ref20">21</xref>
        ]. Пакет произвольной точности, включает процедуры арифметических
вычислений, а также многих алгебраических и трансцендентных функций.
Поддерживает вычисления с вещественными, целыми и комплексными числами. Имеет
интерфейсы C ++ и Фортран-90. Доступен по адресу: http://crd-legacy.lbl.gov/
~dhbailey/mpdist.
3. GMP [
        <xref ref-type="bibr" rid="ref21">22</xref>
        ]. Библиотека произвольной точности, имеет обширный набор
оптимизированных процедур для поддержки вычислений с целыми, рациональными и
вещественными числами. Режимы округления, совместимые со спецификациями IEEE-754, не
поддерживаются. Имеет интерфейс языка C. Доступна на сайте http://gmplib.org.
Представленные программные средства высокоточной арифметики являются в целом
более эффективными и надежными, чем их предшественники. Вместе с тем, возникают
новые требования, которые необходимо учитывать при разработке перспективного
высокоточного программного обеспечения, эффективно работающего на вычислительных системах
экзафлопсного класса. Рассмотрим эти требования.
      </p>
      <p>
        1. Высокая скорость. Данный параметр является основополагающим. К недостаткам
современного программного обеспечения высокоточной арифметики относится ярко
выраженная зависимость времени вычислений от точности. Отмечается, в частности,
что вычисления в формате double-double в среднем в 5 раз медленнее, чем в 64-битном
формате, в формате quad-double — в 25 раз медленнее. При использовании библиотек
произвольной точности время вычислений может возрастать в сотни и тысячи раз
[
        <xref ref-type="bibr" rid="ref15">16</xref>
        ]. Это недопустимо при решении многих крупных задач, критичных к ошибкам
округления и скорости вычислений.
2. Потоковая безопасность. При решении крупных задач расчеты многократной
точности могут выполняться параллельно с использованием Message Passing Interface (MPI).
Однако высокая производительность современных систем, построенных на базе
многоядерных процессоров, обеспечивается, во многом, за счет использования разделяемой
памяти. Поэтому важно иметь возможность распараллеливать высокоточные
вычисления в пределах одного узла, даже если MPI используется для параллелизма между
узлами. Это требует от программных средств потоковой безопасности, что
означает, среди прочего, отсутствие глобальных переменных, в которые происходит запись.
Из существующих программных пакетов высокоточных вычислений потоковая
безопасность задекларирована лишь в MPFUN2015 и GMP. Также библиотеки MPFR и
MPFR C++ предусматривают потоково-безопасный вариант сборки.
3. Поддержка современных параллельных архитектур. В основе большинства
суперкомпьютеров лежит гибридная архитектура, которая предполагает совместное
использование центральных (CPU) и графических (GPU) процессоров. Сегодня уже очевидно,
что вычислительные архитектуры экзафлопсной производительности будут
гибридными. Поэтому одно из главных требований к перспективным алгоритмам и
программному обеспечению арифметики многократной точности – высокая
эффективность при реализации как на CPU-, так и на GPU-узлах. Существующие же средства
ориентированы, главным образом, на универсальные процессоры, а GPU-реализации
представлены слабо. Из высокоточных библиотек, реализующих все арифметические
операции, тригонометрию и ряд других математических функций, отмечаются лишь
GARPREC и GQD [
        <xref ref-type="bibr" rid="ref25">26</xref>
        ], причем в основе GARPREC лежат весьма затратные
алгоритмы, а GQD поддерживает только расширенную точность (форматы “double-double” и
“quad-double”). Поэтому при решении прикладных задач расчеты многократной
точности выполняются на CPU, а вычислительные мощности GPU-узлов не задействуются,
что, с учетом дополнительных задержек на пересылку данных, влечет существенное
увеличение времени решения. Такое обстоятельство неприемлемо во многих случаях,
особенно при обработке в реальном времени.
Кроме этого, необходимы дополнительные исследования, чтобы оценить возможность
продуктивного использования для целей высокоточных вычислений многоядерных
ускорителей, таких как Intel MIC, и программируемых логических интегральных схем,
таких как FPGA.
4. Поддержка произвольного уровня точности и широкого перечня функций. Уже
сейчас некоторые развивающиеся приложения требуют очень высокого уровня точности
(10000, 50000 или более цифр). Поэтому перспективные средства высокоточной
арифметики должны использовать передовые структуры данных и алгоритмы на их основе,
которые остаются эффективными, в том числе и для очень высокой точности
вычислений. В этом направлении уже недостаточно реализации основных арифметических
операций с произвольной точностью, так как возникает удивительно широкий спектр
трансцендентных и специальных функций, требующих высокоточной оценки.
Выделяется, в частности следующий перечень функций, которые должны поддерживать
перспективные высокоточные пакеты [
        <xref ref-type="bibr" rid="ref15">16</xref>
        ]:
b\ulet основные трансцендентные функции – exp, log, sin, cos, tan, гиперболические
функции и соответствующие им обратные функции;
b\ulet гамма, дигамма, полигамма, неполная гамма, бета и неполные бета-функции;
b\ulet дзета-функция Римана, полилогарифмы и L-функция Дирихле;
b\ulet функции Бесселя (первый, второй и третий виды, модифицированные, и т.д.);
b\ulet гипергеометрические функции;
b\ulet функции Эйри;
b\ulet эллиптические интегралы;
b\ulet эллиптические функции Якоби и Вейерштрасса;
b\ulet тэта-функции.
      </p>
      <p>
        Ознакомиться с представленными критериями эффективности высокоточного
программного обеспечения, а также найти другие критерии, можно найти в работе [
        <xref ref-type="bibr" rid="ref15">16</xref>
        ], которая и
взята за основу изложенного материала.
sign
exp
int
int
ic_bot double
ic_top double
Базовый тип Описание
      </p>
      <p>Знак числа
Следует отметить, что в настоящее время значительно возрастает роль векторных
(SIMD) вычислений, в том числе и на центральных процессорах, длина векторных
регистров которых неизменно увеличивается. В связи с этим важным требованием является
возможность распараллеливания высокоточных арифметических операций на уровне
отдельных цифр многоразрядных мантисс. Но такая задача весьма трудоемка в рамках
модели позиционной длинной арифметики, которая предполагает в процессе вычислений учет
возможных переносов между соседними блоками цифр многоразрядной мантиссы. В
результате этого алгоритмы обработки длинных чисел сильно ветвятся и не распараллеливаются,
что противоречит основной концепции SIMD-вычислений. Распараллеливание на уровне
отдельных цифр мантиссы наиболее актуально при реализации операций с очень высокой
точностью, которые выполняются во много раз медленнее операций машинной точности.</p>
      <p>Далее рассматривается новая библиотека высокоточных вычислений, нацеленная на
удовлетворение перечисленных требований. В основе библиотеки лежит формат
представления длинных чисел, ориентированный на параллельную обработку.
коточных вычислений
3.1. Тип данных</p>
      <p>В библиотеке MF-Library для внутреннего представления длинных чисел с плавающей
точкой используется модулярно-позиционный формат (MF-формат) [27,28], описание полей
которого представлено в таблице 1.</p>
      <p>
        Таблица 1. MF-формат для представления чисел с плавающей точкой произвольной длины
residue long[n]
Мантисса числа в системе остаточных классов
Двоичный порядок (экспонента)
Нижняя граница интервально-позиционной характеристики
Верхняя граница интервально-позиционной характеристики
В MF-формате для представления длинной мантиссы M используется система
счисления с параллельной структурой — система остаточных классов (СОК) [
        <xref ref-type="bibr" rid="ref26">29, 30</xref>
        ]. В
соответствии с этим, мантисса представляется набором остатков residue1, residue2, . . . , residuen
по модулям СОК p1, p2, . . . , pn, где residuei \equiv
M mod pi. Обработка residuei по различным
модулям pi выполняется параллельно. Мантисса может принимать значения из
диапазона [0, P ), где P — произведение всех pi. Следовательно, варьирование количества модулей
позволяет задавать произвольную точность вычислений. Обеспечить достаточно большой
динамический диапазон, что важно в научных вычислениях, где часто требуется обработка
величин очень большого или очень малого масштаба, позволяет двоичный порядок (exp).
Значение числа в MF-формате определяется следующим выражением:
x = (- 1)\mathr{s}iathrm{g}\mathrm{n}
t\imes
b\igm|
b\igm|
b\igm| \sum
1l\eq i
l\eq n
residuei \cdot
      </p>
      <p>Bi\bigm|
b\igm|
b\igm| P
t\imes
2
m\athr{e}athrm{x}\mathrm{p} ,
где Bi = Pi \cdot | Pi- 1|pi, Pi = P/pi и |Pi- 1|pi – мультипликативная инверсия Pi по модулю pi.
что ic_bot \leq</p>
      <p>M/P \leq
обсуждаются в [27, 31].</p>
      <p>MF-формат обладает следующими основными характеристиками точности: машинный
эпсилон – \epsilo=n
2-\lfor
\mathrm{l}\athromathrm{g} 2(P - 1)\rflo , unit in the last place – ulp(x) = 2\mathr{e}athrm{x}\mathrm{p}
\-lfor
\mathrm{l}\athromathrm{g} 2((P - 1)/M)\rflo , где M –
десятичное значение мантиссы. Абсолютные и относительные ошибки округления ограничены,
соответственно, величинами ulp(x) и 2\epsiloпnри округлении мантиссы усечением [27]. Точность
вычислений (в терминах IEEE-754 точность соответствует разрядности мантиссы)
определяется половиной длины диапазона изменения мантиссы, т.е. величиной log2
s\urd P - 1.</p>
      <p>Дополнительно в MF-формат включена атрибутивная информация –
интервальнопозиционная характеристика (ИПХ) мантиссы, представленная двумя направленно
округленными двоичными числами с плавающей точкой – нижней (ic_bot) и верхней (ic_top)
границами. ИПХ не участвует в образовании значения числа, но позволяет в значительной
степени преодолеть основной недостаток СОК – высокую сложность немодульных
операций, таких как сравнение, определение знака, контроль переполнения, масштабирование и
пр. ИПХ локализует отношение величины мантиссы M к произведению модулей P так,
ic_top. Вопросы использования ИПХ в немодульных вычислениях
3.2. Структура и функциональность</p>
      <p>Структурно MF-Library включает в себя три слабосвязанных уровня, каждый из
которых объединяет однотипные модули (Рис. 1). Связь уровней реализуется посредством API,
который также доступен пользователю.</p>
      <p>НИЖНИЙ УРОВЕНЬ</p>
      <p>ПРОМЕЖУТОЧНЫЙ УРОВЕНЬ
Ядро
Подмодуль
МП</p>
      <p>формата
Арифметический</p>
      <p>подмодуль
Подмодуль IPC
Подмодуль
округления
Подмодуль
ввода-вывода
Подмодуль
служебных
констант
Основные
параметры
Служебные
подпрограммы
Управление
режимами
округления
Утилиты
модулярной
арифметики
Общие утилиты
Вспомогательный
многоразрядный</p>
      <p>модуль
(инициализация,
переход к другой</p>
      <p>точности)
Низкоуровневые
тесты
Математические
подпрограммы
Подмодуль
вычисления
математических
констант
Подмодуль
вычисления
элементарных
функций (sqrt,
log, exp, sin, cos,
Рис. 1. Структура MF-Library
Центральной частью пакета является модуль ядра. В подмодуле MF-формата объявлен
основной тип данных, реализованы функции по выделению и освобождению памяти, а
также подпрограммы инициализации основных статичных объектов, используемых другими
подмодулями. Арифметический подмодуль реализует следующие алгоритмы высокоточных
вычислений: сложение, вычитание, умножение, деление, выравнивание порядков,
сравнение. Подробное описание этих алгоритмов с оценками эффективности можно найти в [27,28].
Подмодуль IPC реализует алгоритмы вычисления и анализа интервально-позиционных
характеристик, необходимые для быстрого выполнения немодульных операций над
мантиссами. Подмодуль округления включает в себя подпрограммы модулярного
масштабирования степенью двойки, проверки необходимости округления и округления чисел. Подмодуль
ввода / вывода обеспечивает следующие возможности: ручной ввод MF-числа, установка
MF-числа из форматов double и mpfr_t (многоразрядный тип данных библиотеки MPFR),
установка случайного MF-числа, преобразование MF-числа в тип double (с возможной
потерей точности), форматированная печать. В подмодуле служебных констант объявлены
идентификаторы статичных объектов, вычисляемых при инициализации пакета. В
подмодуле основных параметров содержатся управляющие флаги и константы, определяющие все
аспекты работы пакета. К их числу относятся: точность вычислений, модули СОК, флаг
векторизации, флаг режима отладки, флаг работы в “тихом” режиме, в котором
игнорируются некоторые некритичные исключения арифметики с плавающей точкой.</p>
      <p>В модуле служебных подпрограмм содержатся утилиты для управления режимами
округления, генераторы случайных чисел, функции преобразования типов, базовые
алгоритмы модулярной арифметики: получение мультипликативной и аддитивной инверсии,
алгоритм Евклида, преобразование в позиционную систему, алгоритм генерации оснований
для заданной точности вычислений и пр. Для отладки ядра в состав пакета включен
модуль низкоуровневых тестов. Для автоматической конфигурации MF-Library и перехода на
другой базис СОК (при изменении точности вычислений) используется вспомогательный
модуль длинной позиционной арифметики (MPFR+GMP).</p>
      <p>Промежуточный уровень реализует итерационные методы высокоточного вычисления
математических констант и некоторых классов элементарных функций.</p>
      <p>На прикладном уровне реализованы высокоточные матричные, матрично-векторные и
векторные операции, входящие в состав BLAS (GEMM, GEMV и пр.), метод сопряженных
градиентов для решения больших систем уравнений и конечно-разностный метод решения
краевой задачи теплопроводности.</p>
      <p>В настоящее время завершена работа над нижним уровнем пакета. Ведутся работы по
расширению функциональности промежуточного и прикладного уровней. В результате этих
работ ожидается, что на промежуточном уровне будут реализованы все представленные в
предыдущем разделе функции, а также будут определены оптимизированные примитивы
для эффективного хранения и обработки плотных и разреженных матриц. На
прикладном уровне будут реализованы методы численного интегрирования, дифференцирования и
методы решения некоторых задач для дифференциальных уравнений.
3.3. Экспериментальная оценка MF-Library</p>
      <p>Для экспериментальной оценки корректности и эффективности методов каждого
уровня пакета MF-Library были разработаны и выполнены соответствующие тесты. Остановимся
на рассмотрении результатов некоторых из них1.</p>
      <p>
        Расчеты с катастрофической потерей точности. Исследовалась корректность
MFLibrary при решении задач, которые даже при незначительном объеме вычислений
сопровождаются возникновением катастрофических погрешностей. Такие задачи часто
используются для верификации высокоточных программных средств. Первая задача заключалась
в вычислении следующего полинома восьмой степени (S.M. Rump, 1988 [
        <xref ref-type="bibr" rid="ref16">17</xref>
        ]):
f (a, b) = 333.75b6 + a2(11a2b2 - b6 - 121b4 - 2) + 5.5b8 + a/(2b),
(1)
при a = 77617.0 и b = 33096.0. В качестве эталонного использовалось решение, полученное
с использованием 4096-битной арифметики библиотеки MPFR. Результаты представлены
в таблице 2. Более высокая точность MF-Library по сравнению с MPFR (256 бит)
объясняется использованием предвычислительной схемы округления [28], которая позволяет
использовать для представления мантисс весь динамический диапазон, а не его половину.
      </p>
      <p>1Во всех экспериментах точность вычислений составляла 239 бит (72 десятичные цифры). Для этого
СОК была задана 32 15-битными модулями, обеспечивающими представление 479-битных мантисс.
Таблица 2. Результаты вычисления полинома (1)
Тип данных (точность) Результат
Число верных цифр</p>
    </sec>
    <sec id="sec-2">
      <title>Float (24 бит)</title>
    </sec>
    <sec id="sec-3">
      <title>Double (53 бит)</title>
    </sec>
    <sec id="sec-4">
      <title>MPFR (64 бит) MPFR (128 бит) MPFR (256 бит)</title>
      <p>Параметры этого соотношения подобраны таким образом, что при точных вычислениях
lim xn = 5.0. Однако из-за влияния ошибок округления последовательность \{ xn\} отходит
nr\ightaow\infty
от верного ответа к неподвижной для данного рекуррентного соотношения точке x\ast = 100.0.
Номер итерации, с которой начинается такой переход, прямо пропорционален точности
вычислений. Результаты эксперимента представлены на Рис. 2.
Рис. 2. Результаты вычисления рекуррентного соотношения (2). Графики показывают, что
точность MF-Library сопоставима с точностью MPFR (256 бит).</p>
      <p>Эффективность векторизации. Исследованы операции сложения (add), вычитания
(sub), умножения (mult), сравнения (cmp), сложения с накоплением (aac, x \leftarow x + y),
вычитания с накоплением (sac, x \leftarow x - y), умножения с накоплением (mac, x \leftarow z + xy) и
деления (div). Выполнялось 107 итераций. Тестовые данные – псевдослучайные числа,
генерировались алгоритмом “Вихрь Мерсенна”. Тестовая конфигурация: Intel Core i5-3570K
Processor / 4 Cores / 8 Gb RAM / Intel C++ Compiler 13.0. Запуск MF-Library
выполнялся в двух конфигурациях: при установленном запрете на векторизацию (прописыванием
директив #pragma novector) и при использовании средств автоматической векторизации
компилятора Intel C++ Compiler (#pragma simd). Во втором случае векторизовались циклы
вычисления модулярных мантисс и интервально-позиционных характеристик (в пределах
одного вычислительного ядра). Результаты представлены на Рис. 3.
Рис. 3. Экспериментальные оценки времени выполнения операций многоразрядной арифметики в
MF-Library. Время деления, не представленное на графике, составляет в среднем 6.91 мкс и 6.33
мкс соответственно без векторизации и с векторизацией.</p>
      <p>Эффективность векторизации оценивалась по формуле</p>
      <p>E\pi (n) =</p>
      <p>S\pi (n)
\pi
=</p>
      <p>T1(n)
\pi T\pi (n)
,
где S\pi (n) = T1(n)/T\pi (n) – полученное ускорение, T1(n) — время вычислений без
векторизации, T\pi (n) — время вычислений с векторизацией, \pi — число пар операндов, которые могут
быть обработаны параллельно с использованием векторных инструкций в пределах одного
вычислительного ядра (для используемого процессора \pi = 4).</p>
      <p>Средняя эффективность векторизации (за исключением деления) составила 0.60. Это
означает, что MF-Library обеспечивает эффективное использование более половины
доступных SIMD-ресурсов вычислительного ядра. При векторизации деления получено ускорение
лишь в 1.09 раза (эффективность 0.27). Это связано с необходимостью затратного
преобразования модулярных мантисс в двоичную систему. В дальнейшем планируется использовать
более эффективный алгоритм деления.</p>
    </sec>
    <sec id="sec-5">
      <title>BLAS-операции. Быстродействие MF-Library исследовано при выполнении операций</title>
      <p>обобщенного матричного умножения (GEMM, третий уровень BLAS) и обобщенного
векторного умножения (GEMV, второй уровень BLAS). В качестве аналога использовался пакет</p>
    </sec>
    <sec id="sec-6">
      <title>MPFR, являющийся одним из наиболее быстрых в своем классе. Исходные данные для</title>
      <p>всех операндов (матриц, векторов и скаляров) были представлены псевдо-случайными
239битными числами с плавающей точкой, что способствовало большей представительности
теста. Тестовая конфигурация: Intel Core i7-4702MQ (Haswell) / 4 Gb RAM / Intel C++
Compiler 13.0. Были рассмотрены последовательные и параллельные алгоритмы, что, ко
всему прочему, позволяет оценить потоковую безопасность MF-Library. При выполнении
операции GEMM (C \leftarow \alphaAB + \beta C ) матрицы A, B, C были плотными, их порядок n
изменялся с шагом 50 в интервале от 100 до 1000. Корректность выполнения операции
оценивалась по норме \| C\| 1. Полученные результаты представлены на Рис. 4. Среднее ускорение
450
400
350
300
MF-Library по сравнению с MPFR составило 1.9 раза и 2.3 раза соответственно при
последовательных и параллельных вычислениях. При распараллеливании скорость вычислений
возросла в 5.3 раза.</p>
      <p>При выполнении GEMV (y \leftarow \alphaAx + \beta y ) векторы x, y и матрица A также были плотно
заполнены. Размер векторов варьировался в диапазоне от 500 до 1500 с шагом 100.
Корректность операции оценивалась по норме \| y\| 1. Результаты экспериментов представлены
на Рис. 5. В данном случае по сравнению с MPFR получено ускорение 2.4 раза и 2.6 раза
соответственно при последовательных и параллельных вычислениях. При
распараллеливании скорость MF-Library увеличилась в среднем в 4 раза.</p>
      <p>MF-Library (serial)
MPFR (serial)
MF-Library (parallel)
MPFR (parallel)
MF-Library (serial)
MPFR (serial)
MF-Library (parallel)</p>
      <p>MPFR (parallel)
900
800
700
600
)s500
m
(e400
m
iT300
200
100
0
400 500 600 700 800 900 1000 1100 1200 1300 1400 1500</p>
      <p>n
Рис. 5. Зависимость времени
высокоточного выполнения операции GEMV от размера
векторов n
Рис. 4. Зависимость времени
высокоточного выполнения операции GEMM от порядка
матриц n.</p>
      <p>В работах [27, 28] представлены результаты других экспериментов по исследованию
эффективности библиотеки MF-Library.
4. Выводы</p>
      <p>С ростом производительности вычислительных систем и размерности решаемых
задач возрастает значимость вычислений многократной точности. Уже сейчас имеется целый
ряд актуальных приложений, которые требуют оперировать числами с разрядностью, на
несколько порядков превосходящей длину машинного слова. Следует полагать, что с
течением времени количество таких приложений будет увеличиваться. В связи с этим, проблема
обеспечения приемлемой точности отмечается многими исследователями, как одна из
наиболее актуальных проблем программного обеспечения экзафлопсных суперкомпьютеров.</p>
      <p>Современный этап развития вычислительной техники приводит к новым требованиям,
предъявляемым к высокоточному программному обеспечению. К числу основных из таких
требований относятся высокая скорость, потоковая безопасность и эффективное
использование современных параллельных архитектур. В этой статье рассмотрен новый
программный пакет высокоточных вычислений MF-Library, нацеленный на удовлетворение этих
требований. В основе пакета лежит модулярно-позиционный способ представления длинных
чисел, изначально ориентированный на параллельную обработку. Алгоритмы, заложенные
в MF-Library, лишены недостатков аналогов, связанных с необходимостью затратной
обработки переносов между соседними цифрами длинной мантиссы, и соответствуют
архитектуре современных центральных процессоров, позволяя эффективно использовать как
многоядерность, так и возможности SIMD-обработки в пределах ядра. Благодаря потоковой
безопасности, MF-Library может эффективно использоваться на параллельных системах с
общей памятью, что подтверждается представленными результатами экспериментов.
В настоящий момент ведутся работы по расширению функциональности MF-Library.
Одновременно с этим начата работа по созданию версии пакета для графических
процессоров. Конечной целью исследований является создание унифицированного
алгоритмического и программного обеспечения, позволяющего эффективно выполнять высокоскоростные
параллельные расчеты с плавающей точкой многократной точности на современных и
перспективных высокопроизводительных системах с гибридной архитектурой.
Литература
A parallel multiple-precision arithmetic library for high
performance systems
Konstantin Isupov and Knyazkov Vladimir
Keywords: computer arithmetic, precision, rounding errors, residue number system,
modularpositional format, program library
The IEEE 64-bit floating-point arithmetic is often not sufficient to correctly solve large
problems on high performance systems. In this case, high-precision computations should be
used. In this paper an actual high-precision applications are presented. A review of the
existing software is given. The requirements to prospective high-precision software are
discussed. A new multiple-precision arithmetic library MF-Library is considered. A residue
number system is used to represent arbitrary-length floating-point numbers in this library.
This provides effective implementation of main high-precision arithmetic operations with
parallel processing of significand digits. MF-Library implements the thread-safety concept
that allows you to use it in shared memory systems. Results of an experimental study on the
efficiency of MF-Library are presented.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          4. MPFR [
          <volume>23</volume>
          ].
          <article-title>Расширение GMP, обеспечивающее вычисления многократной точности с возможностью использования одного из четырех режимов округления, соответству- ющих стандарту IEEE-754. Точность может быть установлена отдельно для каждой переменной. Нормализованные числа не поддерживаются. Выпускается под лицензией GNU LGPL</article-title>
          .
          <article-title>Доступна по адресу</article-title>
          : http://www.mpfr.org.
          <article-title>Обладает высоким быстро- действием, по сравнению со многими аналогами</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          5. NTL [
          <volume>24</volume>
          ]. Портативная C+
          <article-title>+ библиотека для решения задач теории чисел. Включа- ет структуры данных и алгоритмы обработки целых чисел любой длины, векторов, матриц и полиномов над целыми числами и над конечными полями, а также арифме- тику с плавающей точкой произвольной точности. Достоинство NTL - согласованный интерфейс с большим разнообразием классов, представляющих математические объ- екты</article-title>
          . Доступна по адресу http://www.shoup.net/ntl/doc/tour-intro.html.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          6. MPFUN2015 [25].
          <article-title>Пакет произвольной точности, являющийся развитием MPFUN90</article-title>
          .
          <article-title>Имеет интерфейс языка Фортран-90, планируется частичная поддержка интерфейса C++</article-title>
          .
          <article-title>Поддерживает вещественные и комплексные типы данных. К основным заде- кларированным преимуществам пакета относится потоковая безопасность. Для со- хранения приемлемой производительности при работе в режиме крайне высокой точ- ности используются алгоритмы на базе быстрого преобразования Фурье. В состав пакета входят подпрограммы вычисления алгебраических, трансцендентных и неко- торых специальных функций, таких как гамма-функция, неполная гамма-функция, дзета-функция</article-title>
          . Доступен по адресу: http://www.davidhbailey.com/dhbsoftware.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <article-title>3. MF-Library - программная библиотека параллельных высо-</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <source>0 100 200 300 400 500 600 700 800 900 1000 n</source>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          1.
          <string-name>
            <surname>Collange</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Defour</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Graillat</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Iakymchuk</surname>
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Reproducible</surname>
          </string-name>
          and
          <article-title>Accurate Matrix Multiplication for High-Performance Computing // 16th GAMM-IMACS International Symposium on Scientific Computing, Computer Arithmetic and Validated Numerics (SCAN</article-title>
          <year>2014</year>
          ),
          <source>September 21-26</source>
          ,
          <year>2014</year>
          , Wu¨rzburg, Germany, Book of Abstracts.
          <year>2014</year>
          . P.
          <volume>42</volume>
          -
          <fpage>43</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          3.
          <string-name>
            <surname>Frolov</surname>
            <given-names>A.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bailey</surname>
            <given-names>D.H.</given-names>
          </string-name>
          <string-name>
            <surname>Highly</surname>
          </string-name>
          <article-title>Accurate Evaluation of the Few-Body Auxiliary Functions</article-title>
          and
          <string-name>
            <surname>Four-Body</surname>
            <given-names>Integrals</given-names>
          </string-name>
          // Journal of Physics B:
          <string-name>
            <surname>Atomic</surname>
            , Molecular and
            <given-names>Optical</given-names>
          </string-name>
          <string-name>
            <surname>Physics</surname>
          </string-name>
          .
          <year>2003</year>
          . Vol.
          <volume>36</volume>
          , No. 9. Р.
          <year>1857</year>
          -
          <fpage>1867</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bailey</surname>
            <given-names>D.H.</given-names>
          </string-name>
          <string-name>
            <surname>High-Precision</surname>
          </string-name>
          Floating-Point Arithmetic in Scientific Computation // Computing in Science and Engineering.
          <year>2005</year>
          . Vol.
          <volume>7</volume>
          , Issue 3. P.
          <volume>54</volume>
          -
          <fpage>61</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          5.
          <string-name>
            <surname>Barrowes</surname>
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Е</surname>
          </string-name>
          .
          <article-title>On the Asymptotic Expansion of the Spheroidal Wave Function and its Eigenvalues for Complex Size Parameter / B</article-title>
          .E.
          <string-name>
            <surname>Barrowes</surname>
          </string-name>
          [et al.] // Studies in Applied Mathematics.
          <year>2004</year>
          . Vol.
          <volume>113</volume>
          ,
          <string-name>
            <surname>Issue</surname>
          </string-name>
          <article-title>3</article-title>
          . Р.
          <volume>271</volume>
          -
          <fpage>301</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          7.
          <string-name>
            <surname>Bailey</surname>
            <given-names>D.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barrio</surname>
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Borwein</surname>
            <given-names>J.M.</given-names>
          </string-name>
          <string-name>
            <surname>High-Precision</surname>
            <given-names>Computation</given-names>
          </string-name>
          : Mathematical Physics and Dynamics // Applied Mathematics and Computation.
          <year>2012</year>
          . Vol.
          <volume>218</volume>
          , Issue 20. P.
          <volume>10106</volume>
          -
          <fpage>10121</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          8.
          <string-name>
            <surname>Robey</surname>
            <given-names>R.W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Robey</surname>
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aulwes</surname>
            <given-names>R</given-names>
          </string-name>
          . In Search of Numerical Consistency in Parallel Programming // Parallel Computing.
          <year>2011</year>
          . Vol.
          <volume>37</volume>
          ,
          <string-name>
            <surname>Issue</surname>
          </string-name>
          4-5. Р.
          <volume>217</volume>
          -
          <fpage>229</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          10.
          <string-name>
            <surname>Yang J.-F.</surname>
          </string-name>
          ,
          <string-name>
            <surname>Fan C.-P. Compact</surname>
          </string-name>
          <article-title>Recursive Structures for Discrete Cosine Transform // IEEE Transactions on CAS-II: Analog and Digital Signal Processing</article-title>
          .
          <year>2000</year>
          . Vol.
          <volume>47</volume>
          , Issue 4. P.
          <volume>314</volume>
          -
          <fpage>321</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          14.
          <string-name>
            <surname>He</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ding</surname>
            <given-names>C</given-names>
          </string-name>
          .
          <article-title>Using Accurate Arithmetics to Improve Numerical Reproducibility and Stability in Parallel Applications /</article-title>
          / Journal of Supercomputing.
          <year>2001</year>
          . Vol.
          <volume>18</volume>
          , No. 3. Р.
          <volume>259</volume>
          -
          <fpage>277</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          15.
          <string-name>
            <surname>Lake</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Quinn</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Richardson D.C.</surname>
          </string-name>
          <article-title>From Sir Isaac to the Sloan survey: Calculating the Structure and Chaos due to Gravity in the</article-title>
          <source>Universe // 8th ACM - SIAM Symposium on Discrete Algorithms</source>
          ,
          <year>1997</year>
          , Philadelphia, USA, Proceedings. SIAM.
          <year>1997</year>
          .
          <volume>10</volume>
          р.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          16.
          <string-name>
            <surname>Bailey</surname>
            <given-names>D.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Borwein</surname>
            <given-names>J.M.</given-names>
          </string-name>
          <string-name>
            <surname>High-Precision</surname>
            <given-names>Arithmetic</given-names>
          </string-name>
          : Progress and Challenges, http://www.davidhbailey.com/dhbpapers/hp-arith.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          17.
          <string-name>
            <surname>Rump S.M.</surname>
          </string-name>
          <article-title>Algorithms for Verified Inclusions - Theory and Practice</article-title>
          . In: Moore,
          <string-name>
            <surname>R.E</surname>
          </string-name>
          . (ed.) Reliability in Computing, pp.
          <fpage>109</fpage>
          -
          <lpage>126</lpage>
          . Academic Press, New York (
          <year>1988</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          18.
          <string-name>
            <surname>Kahan</surname>
            <given-names>W. How</given-names>
          </string-name>
          <article-title>Futile are Mindless Assessments of Roundof in Floating-Point Computation</article-title>
          , https://www.cs.berkeley.edu/~wkahan/Mindless.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          19.
          <string-name>
            <surname>Ghazi</surname>
            <given-names>K.R.</given-names>
          </string-name>
          , Lef`evre V., Th´eveny
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Zimmermann</surname>
          </string-name>
          <string-name>
            <given-names>P.</given-names>
            <surname>Why</surname>
          </string-name>
          and How to Use Arbitrary Precision // Computing in Science and Engineering.
          <year>2010</year>
          . Vol.
          <volume>12</volume>
          , No. 3. P.
          <volume>62</volume>
          -
          <fpage>65</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          20.
          <article-title>IEEE Standard for Floating-Point Arithmetic</article-title>
          .
          <source>Introduced</source>
          <year>2008</year>
          -
          <volume>08</volume>
          -
          <fpage>29</fpage>
          . New York : Institute of Electrical and Electronics Engineers,
          <year>2008</year>
          . 70 p.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          21.
          <string-name>
            <surname>High-Precision Software</surname>
          </string-name>
          Directory, http://crd-legacy.lbl.gov/~dhbailey/mpdist.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          22.
          <string-name>
            <surname>The GNU Multiple Precision Arithmetic Library</surname>
          </string-name>
          , https://gmplib.org.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          23.
          <string-name>
            <surname>Fousse</surname>
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hanrot</surname>
            <given-names>G.</given-names>
          </string-name>
          , Lef`evre V.,
          <string-name>
            <given-names>P´elissier P.</given-names>
            ,
            <surname>Zimmermann</surname>
          </string-name>
          ,
          <string-name>
            <surname>P.</surname>
          </string-name>
          : MPFR:
          <string-name>
            <given-names>A</given-names>
            <surname>Multiple-Precision Binary</surname>
          </string-name>
          Floating-Point
          <source>Library With Correct Rounding // ACM Transactions on Mathematical Software</source>
          .
          <year>2007</year>
          . Vol.
          <volume>33</volume>
          , No.
          <volume>2</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          24.
          <string-name>
            <surname>NTL</surname>
          </string-name>
          :
          <article-title>A Library for doing Number Theory</article-title>
          , http://www.shoup.net/ntl.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          25. MPFUN2015:
          <string-name>
            <given-names>A</given-names>
            <surname>Thread-Safe Arbitrary Precision Computation Package (Full Documentation</surname>
          </string-name>
          ), http://www.davidhbailey.com/dhbpapers/mpfun2015.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          26.
          <string-name>
            <surname>Lu</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>He</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Luo</surname>
            <given-names>Q</given-names>
          </string-name>
          .
          <source>Supporting extended precision on graphics processors // 6th International Workshop on Data Management on New Hardware (DaMoN</source>
          <year>2010</year>
          ), June 7,
          <year>2010</year>
          , Indianapolis, Indiana, USA, Proceedings.
          <year>2010</year>
          . P.
          <volume>19</volume>
          -
          <fpage>26</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          30.
          <string-name>
            <surname>Garner H.L. The Residue</surname>
          </string-name>
          Number System // IRE Transactions on Electronic Computers.
          <year>1959</year>
          . Vol. EC-
          <volume>8</volume>
          , No. 2. P.
          <volume>140</volume>
          -
          <fpage>147</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>