<!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>ИСПОЛЬЗОВАНИЕ ВОЗМОЖНОСТЕЙ OPENMP ДЛЯ УСКОРЕНИЯ РАСЧЕТОВ В ПАКЕТЕ ПРИКЛАДНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ADEPT*</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Federal Research Center Computer Science and Control of the Russian Academy of Sciences</institution>
          ,
          <addr-line>Moscow</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <fpage>202</fpage>
      <lpage>208</lpage>
      <abstract>
        <p>В данной работе приводится пример использования возможностей OpenMP Application Programming Interface для ускорения расчетов матрицы первых производных векторфункции (матрицы Якоби) при решении задач о наименьших квадратах методом ЛевенбергаМарквардта. Вычисление матрицы Якоби производится с помощью методологии быстрого автоматического дифференцирования, при этом применяется пакет прикладного программного обеспечения Adept версии 1.0. Для ускорения расчетов использовано директивное многопоточное программирование c динамическим распределением вычислений между потоками и технология SIMD (Single Instruction Multiple Data) - принцип компьютерных вычислений, позволяющий обеспечить параллелизм на уровне данных. Вышеупомянутые технологии позволили в полной мере задействовать особенности архитектуры современных процессоров Intel, такие как многоядерность/многопоточность, расширение системы команд микропроцессоров Intel/AMD - Advanced Vector Extensions (AVX/AVX2), обрабатывающее данные в формате с плавающей запятой в группах длиной 256 бит, и FMA (Fused Multiply-Add) - технологию, предназначенную для выполнения совмещенной операции умножения-сложения. В результате, при минимальных трудозатратах, время вычисления матрицы первых производных вектор-функции на четырех ядерном процессоре удалось ускорить в 12 раз, по сравнению с вычислениями в однопоточном варианте.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>of labor, the time for calculating the matrix of the first derivatives of the vector function on four core
processors was 12 times faster, compared to calculations in a single-threaded version.</p>
      <p>OpenMP; SIMD; the Jacobi matrix; the least-squares problem; the Levenberg-Marquardt method.
  +1 =   +     ,




   = −    .</p>
      <p>+1 =   +   ,
( 

  +    )  = −    .</p>
      <p>
        (
        <xref ref-type="bibr" rid="ref1 ref7">1</xref>
        )
(
        <xref ref-type="bibr" rid="ref2 ref8">2</xref>
        )
(
        <xref ref-type="bibr" rid="ref9">3</xref>
        )
(
        <xref ref-type="bibr" rid="ref10">4</xref>
        )
(
        <xref ref-type="bibr" rid="ref11 ref3">5</xref>
        )
(
        <xref ref-type="bibr" rid="ref12 ref12 ref4 ref4">6</xref>
        )
(
        <xref ref-type="bibr" rid="ref13 ref13 ref5 ref5">7</xref>
        )
Для метода Гау-сНсьаютона:
Для метода Левенбе-рМгарквардта:
где  ( )= ∑
      </p>
      <p>=1   ( )  ( ). Сделав
получаем следующие
итерационные
схемы</p>
      <p>методов.
предположения
о</p>
      <p>том, что сла г(ае)мо(е )доминирует нда Q(x),
где 0 &lt;   ≤ 1 – шаг метод а, - направление поиска, определяемое из решения системы уравнений
направление
поиска, определяемое</p>
      <p>из решеснтиеямысиуравнений
где I – единичная
матрица , – некоторая
неотрицательная
константа, своя для каждог о - шага,
развитием
производные функций по вектоzриамu:</p>
      <p>=
i-е, -еj компоненты
Предположим,</p>
      <p>что
компоненты</p>
      <p>вектораu и
виде:
векторzоив u как   ,   ,   ,  
каждый
предыдущи е ,

.</p>
      <p>,   =
ве ктопраоследовательно
выражается
только
через
ет. 1≤j&lt;i.,
тогда
формулы-(9()8) можно
записать
в следующем
Якоби)
Здесь
и
 ( ,  )∙  = 0,
далее
индTекосбозначает транспонирование,
нижние
индексы z, u обозначают</p>
      <p>
        частные
(
        <xref ref-type="bibr" rid="ref14 ref6">8</xref>
        )
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)

Φ
 
( ,  )
 +    (z, u),
      </p>
      <p>=    (z, u)+ ∑ Φ</p>
      <p>( ,  )∙   .

восстановления
начальных
данных
для
одномерного
уравнения
перено
пассивной
примеси в жидкости
движущеойсстяоянсныпм значением скорости:
соответствующее решени∗е( ,  )системы
(12-()14), при
Задачи,
подобные
этой,
обычно
решаются</p>
      <p>численно с помощью некоторого метода спуска, к
концентрацию
 ̅( ,  ), где ( ,  ∈  ).</p>
      <p>примеси
Ее</p>
      <p>можно
некоторых
оптимальное
экспериментальных</p>
      <p>упралвение  ∗( )=  1∗( ) и
минимальное значение.
Векторизация и многопоточность
  =  (  ,   ),  ̅ =  ̅(
 0 =  1 =   =  (</p>
      <p>,   ),   =  ℎ,   =  ,
 ),  0 =  2 =  2(  ),
0 ≤  ≤  , 0 ≤  ≤  .
Архитектура
универсальных микропросцоерсов
постоянно
развивается. Например, в процессоры</p>
      <p>Intel,
вслед
(англ.</p>
      <p>за
single
многопоточностью
и
многоядерностью
последовательно
были
добавлены
технологии</p>
      <p>SI
instruction,
multiply – оdдaиtaночный
поток
команд,
множественный поток данных),
такие
как MMX, SSE, SSE2, SSE3, SSSE3, SSE4.x, AVX, AVX2, AVX-512.</p>
      <p>Не
вдаваясь
в
подробности
скажем,
что</p>
      <p>технология AVX2 (поддерживается c 2013 года в
Intel</p>
      <p>4
процессоров</p>
      <p>C–orHeaswell)
работает
с
256
битными
регистрами
и
позволяет
орбабатывать</p>
      <p>FMA3
(англ.</p>
      <p>числа
Fused
с
двойной
точностью
(или
8
чисел
с
одинарной
точностью).</p>
      <p>M-Auldtdip,ly умножени-есложение
с
однократным
округлением).
Вслед
за
изменением
архитектуры
микропроцессоров
возникает
необходимоситцьиромвоадтиьф
программное
обеспечение, с
целью
адаптации его
для более
эффективного использов
Найти   , решив
Положить   +1 =   +</p>
      <p>и −</p>
      <p>k= 0,0 = 0.01,  = 10−20
#pragma omp for – данная
конструкция указывает
компилятору
на
необходимость
многопоточно
исполнения
цикла.</p>
      <p>По
умолчанию
компилятор
заранее
разбивает n цстиактличенскаих
групп
и
формирует n потоков
исполнения,
гnде– количество
логических
процессоров
в
системе (или число,
указанное</p>
      <p>пользователем).
#pragma omp for schedule(dynamic) – разновидность
предыдущей
конструкции,
указывающая
что
разбиение
цикла
будет
происходить
динамически,
в
процессе
выполнения.</p>
      <p>имеют
скеунды
и
различное
т.д., то
время
исполнения,
на-пяриимтеерр,ац1и–я 1</p>
      <p>секунда,-я 2 итерация 2
использование
Если   +1 &lt;  ,
10. Если   +1 &lt;   ,
  +1 = 0.1  ,  = 
11.</p>
      <p>Если   &gt; 1020,
 +1;   +1
то
то
то
завершить работу.</p>
      <p>положить
+ 1, и</p>
      <p>перейти к шагу 3.
завершить</p>
      <p>работу.
12. Если   +1 ≥   , то полож и ть+1 = 10  , и перейти к шагу 5.
}
Используя ключи компилятора -ftree-vectorizer-verbose=3 -fopt-info-vec-all=rezv.txt, можно увидеть, что
векторизация данных циклов не производится. То есть преимущества современной архитектуры
процессора не используются.</p>
      <p>Заменим данные конструкции на
а) if(flag_extra)
for (int i = 0; i &lt; n_extra; i++)</p>
      <p>…
else
#pragma omp simd
for (int i = 0; i &lt; ADEPT_MULTIPASS_SIZE; i++)</p>
      <p>…
б) int n_non_zero = 0;
if(flag_extra)
for (int i = 0; i &lt; n_extra; i++) {
…
if(a[i] != 0) n_non_zero = 1;
}
else
#pragma omp simd reduction(|:n_non_zero)
for (int i = 0; i &lt; ADEPT_MULTIPASS_SIZE; i++) {
…
n_non_zero |= (a[i] != 0);
}
Здесь епременная цикла для большинства блоков изменяется от 0 до фиксированного знач
ADEPT_MULTIPASS_SIZE, и включена принудительная векторизация директ#иpвrоaйgma omp simd. В
случае б) необходимо, кроме этого, выполнять редукцию пnе_рnеoмnе_zнeнrоoй.</p>
      <p>В рзеультате, после подбора парамеAтDрEаPT_MULTIPASS_SIZE (рис.1), получаем ускорение расчетов
почти в 2 раза.</p>
      <p>
        Таблица 5. Время вычислений при использовании SIMD
Шаг/Время сек
Вычисление функции
Вычисление матрицы Якоби
Вычисление коэффициентов системы уравнений
(
        <xref ref-type="bibr" rid="ref13 ref13 ref5 ref5">7</xref>
        )
Решение системы уравнений (
        <xref ref-type="bibr" rid="ref13 ref13 ref5 ref5">7</xref>
        )
Всего
процессоре, имеющем 8 логических ядер. При этом трудозатраты по модификиацкилиаднпогаокета пр
программного обеспечения минимальны и ограничиваются использованием ключей компилятора
добавлением/изменением нескольких директив OpenMP.
      </p>
      <p>В работе не был затронут вопрос распараллеливания методов решения систем линейных урав
Пути ускореиня могут быть следую–щиисепользование параллельных версий пакета LaPack, применение
параллельных версий метода сопряженных градиентов. В ряде случаев будет эффективн
использование двойственных постановок задач квадратичного программирования.
Благодарности
Работа выполнена при поддержке РФФИ, пр-0о7е-к0т045186.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Евтушенко</surname>
            <given-names>Ю. Г.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Зубов</surname>
            <given-names>В</given-names>
          </string-name>
          . И.
          <article-title>Об обобщенной методологии быстрого автоматического дифференцирования</article-title>
          .
          <source>Жу вычислительной математики и математической физики</source>
          ,
          <year>2016</year>
          , vol.
          <volume>56</volume>
          <fpage>7</fpage>
          -
          <lpage>(</lpage>
          11816),2. pp.
          <fpage>184</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Зубов</surname>
            <given-names>В</given-names>
          </string-name>
          . И.
          <article-title>Применение методологии быстрого автоматического дифференцирования к решению обратно коэффициентной задачи для уравнения теплопроводности</article-title>
          .
          <source>Журнал вычислительной математики и математической физики</source>
          ,
          <year>2016</year>
          , vol.
          <volume>56</volume>
          (
          <issue>10</issue>
          ), -
          <fpage>p1p7741</fpage>
          .
          <fpage>760</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          5.
          <string-name>
            <surname>Hogan R. J. Fast</surname>
          </string-name>
          reverse
          <article-title>-mode automatic differentiation using expression</article-title>
          templates in C++ //ACM Transactions on Mathematical
          <source>Software (TOMS)</source>
          .
          <source>- 2014</source>
          . -
          <fpage>Т</fpage>
          .
          <year>40</year>
          . -
          <fpage>№</fpage>
          . 4. -
          <fpage>С</fpage>
          .
          <year>26</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          6.
          <string-name>
            <surname>Anderson</surname>
            <given-names>E.</given-names>
          </string-name>
          et al.
          <source>LAPACK Users' guide. - Society for Industrial and Applied Mathematics</source>
          ,
          <year>1999</year>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          7. OpenMP 4.5 Complete
          <string-name>
            <surname>Specifications</surname>
          </string-name>
          (
          <year>Nov 2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          8.
          <string-name>
            <surname>Лупин</surname>
            <given-names>С. А.</given-names>
          </string-name>
          ,
          <source>Посыпкин М. А. Технологии параллельного программирования: Учеб. Пос</source>
          . -нСиеер..
          <source>МВы.: сшФ. ороубмраз Инфра-М. - 2008</source>
          , vol.
          <volume>208</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Evtushenko</given-names>
            <surname>Ju</surname>
          </string-name>
          . G.,
          <string-name>
            <surname>Zubov</surname>
            <given-names>V. I.</given-names>
          </string-name>
          <article-title>Ob obobshhennoj metodologii bystrogo avtomaticheskogo differencirovanija</article-title>
          .
          <source>Zhurnal vychislitel'noj matematiki i matematicheskoj fiziki</source>
          ,
          <year>2016</year>
          , vol.
          <volume>56</volume>
          (
          <issue>11</issue>
          ), pp.
          <fpage>1847</fpage>
          -
          <lpage>1862</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          2.
          <string-name>
            <surname>Zubov</surname>
            <given-names>V. I.</given-names>
          </string-name>
          <article-title>Primenenie metodologii bystrogo avtomaticheskogo differencirovanija k resheniju obratnoj kojefficientnoj zadachi dlja uravnenija teploprovodnosti</article-title>
          .
          <source>Zhurnal vychislitel'noj matematiki i matematicheskoj fiziki</source>
          ,
          <year>2016</year>
          , vol.
          <volume>56</volume>
          (
          <issue>10</issue>
          ), pp
          <fpage>1760</fpage>
          -
          <lpage>1774</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          3.
          <string-name>
            <surname>Gill</surname>
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mjurrej</surname>
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rajt</surname>
            <given-names>M.</given-names>
          </string-name>
          <article-title>Prakticheskaja optimizacija</article-title>
          .
          <article-title>- 1985.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Evtushenko</given-names>
            <surname>Ju</surname>
          </string-name>
          . G. Optimizacija i bystroe avtomaticheskoe differencirovanie //M.:
          <article-title>Nauchnoe izdanie VC RAN</article-title>
          .
          <article-title>- 2013.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          5.
          <string-name>
            <surname>Hogan R. J. Fast</surname>
          </string-name>
          reverse
          <article-title>-mode automatic differentiation using expression</article-title>
          templates in C++ //ACM Transactions on Mathematical
          <source>Software (TOMS)</source>
          .
          <source>- 2014</source>
          . - V.
          <year>40</year>
          . - N. 4. - p.
          <fpage>26</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          6.
          <string-name>
            <surname>Anderson</surname>
            <given-names>E.</given-names>
          </string-name>
          et al.
          <source>LAPACK Users' guide. - Society for Industrial and Applied Mathematics</source>
          ,
          <year>1999</year>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          7. OpenMP 4.5 Complete
          <string-name>
            <surname>Specifications</surname>
          </string-name>
          (
          <year>Nov 2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          8.
          <string-name>
            <surname>Lupin</surname>
            <given-names>S. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Posypkin</surname>
            <given-names>M.</given-names>
          </string-name>
          <article-title>A. Tehnologii parallel'nogo programmirovanija: Ucheb</article-title>
          . Pos. Ser. Vyssh. obraz-nie. M.:
          <string-name>
            <given-names>Forum</given-names>
            <surname>Infra-M</surname>
          </string-name>
          .
          <article-title>- 2008</article-title>
          , vol.
          <volume>208</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <article-title>Сведения об авторе: Горчаков Андрей Юрьевич, кандидат физик-оматематичесикх наук, ведущий прикладных проблем оптимизацииВычислительного центра им</article-title>
          .
          <article-title>Федеральный исследовательский центр «Информатика и управление» наук, andrgor12@gmail.com математик отдела А.А. Дородн,ицына Российской академии Note on the author: Gorchakov Andrei Yu</article-title>
          .,
          <source>Candidate of Physical and Mathematical Sciences, Leading mathematician, Dorodnicyn Computing Centre</source>
          , Federal Research Center Computer Science and
          <article-title>Control of the Russian Academy of Sciences, andrgor12@gmail</article-title>
          .com
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>