<!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>Параллельный алгоритм поиска локально похожих подпоследовательностей временного ряда для ускорителей на базе архитектуры Intel MIC\ast</article-title>
      </title-group>
      <pub-date>
        <year>2015</year>
      </pub-date>
      <fpage>332</fpage>
      <lpage>344</lpage>
      <abstract>
        <p>В работе рассматривается задача поиска локально похожих подпоследовательностей временного ряда. Необходимо найти все подпоследовательности ряда, расстояние от которых до заданного поискового запроса минимально среди всех соседних подпоследовательностей, отстоящих от запроса не более чем на заданное пороговое значение. В качестве расстояния (меры схожести) используется динамическая трансформация шкалы времени (Dynamic Time Warping, DTW), которая на сегодня признается лучшей мерой для большинства приложений временных рядов. Вычисление DTW, однако, является затратной операцией, несмотря на существующие алгоритмические техники сокращения вычислений. Имеющиеся подходы к вычислению DTW с помощью многоядерных ускорителей задействуют архитектуры GPU и FPGA, оставляя без внимания потенциал архитектуры Intel Many Integrated Core. В работе предлагается параллельный алгоритм решения указанной задачи, использующий как центральный процессор, так и многоядерный сопроцессор Intel Xeon Phi. Реализация основана на технологии параллельного программирования OpenMP и режиме выполнения приложения, при котором часть кода и данных выгружается на сопроцессор. Алгоритм предполагает использование на стороне процессора очереди подпоследовательностей, данные о которых выгружаются на сопроцессор для вычисления DTW, что обеспечивает высокую интенсивность вычислений, выполняемых на сопроцессоре. Приведены результаты экспериментов, подтверждающих эффективность разработанного алгоритма.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        ней границы расстояния [
        <xref ref-type="bibr" rid="ref4">6</xref>
        ], повторное использование вычислений [
        <xref ref-type="bibr" rid="ref15">16</xref>
        ], индексирование [
        <xref ref-type="bibr" rid="ref9">11</xref>
        ],
раннее прекращение заведомо нерезультативных вычислений [
        <xref ref-type="bibr" rid="ref13">14</xref>
        ] и др. Тем не менее,
вычисление DTW по-прежнему занимает существенную часть времени работы алгоритмов. В
силу этого актуальными являются исследования, посвященные использованию
параллельных вычислений для решения данной задачи на кластерных системах [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ], многоядерных
процессорах [
        <xref ref-type="bibr" rid="ref16">17</xref>
        ], FPGA и GPU [
        <xref ref-type="bibr" rid="ref15 ref18 ref19">16, 19, 20</xref>
        ]. В этой связи представлется недооцененным
потенциал многоядерных ускорителей на базе архитектуры Intel Many Integrated Core [
        <xref ref-type="bibr" rid="ref5">7</xref>
        ] для
решения задач поиска похожих подпоследовательностей временных рядов.
      </p>
      <p>В данной статье предлагается параллельный алгоритм поиска локально похожих
подпоследовательностей временного ряда для узла, оснащенного многоядерным сопроцесором
Intel Xeon Phi. Статья организована следующим образом. Раздел 2 содержит
формальное определение задачи и краткое описание архитектуры и модели программирования Intel
Xeon Phi, а также обзор работ по теме исследования. В разделе 3 описан предложенный
алгоритм. Результаты экспериментов представлены в разделе 4. В заключении суммируются
полученные результаты и указываются направления будущих исследований.
2. Контекст исследования и обзор работ
2.1. Формальная постановка задачи</p>
      <p>Временной ряд (time series) T — упорядоченная последовательность t1, t2, ..., tN (где
N — длина последовательности) вещественных значений, каждое из которых ассоциировано
с отметкой времени.</p>
      <p>Подпоследовательность (subsequence) Tim временного ряда T представляет собой
непрерывное подмножество T , начинающееся с позиции i, и имеющее длину m,
т.е. Tim = ti, ti+1, . . . , ti+m- 1, где 1 \leq
i
l\eq</p>
      <p>N и i + m \leq</p>
      <p>N .</p>
      <p>Запрос (query) Q — временной ряд, поиск которого необходимо осуществить во
временном ряде T . Пусть n — длина запроса, n \l</p>
      <p>N .</p>
      <p>
        Задача поиска локально похожих подпоследовательностей (local-best-match subsequence
search) [
        <xref ref-type="bibr" rid="ref18">19</xref>
        ] определяется следующим образом. Пусть D является мерой схожести, \scrE &gt; 0 —
пороговое значение меры и L означает результирующее множество подпоследовательностей.
      </p>
      <p>Tim удовлетворяет следующим условиям:
Тогда Tim \in L \leftrighaow
1. m = n;
2. D(Tim, Q) &lt; \scrE ;
3. i =</p>
      <p>argmin
j\in \{i- 1,i,i+1\}</p>
      <p>D(Tjm, Q).</p>
      <p>Динамическая трансформация шкалы времени (Dynamic Time Warping, DTW)
представляет собой меру схожести двух временных рядов. Расстояние на основе DTW между
2.2. Архитектура и модель программирования сопроцессора Intel Xeon Phi
Многоядерный сопроцессор Intel Xeon Phi состоит из 61 ядра на базе архитектуры
x86, соединенных высокоскоростной двунаправленной шиной, где каждое ядро
поддерживает 4\times гипертрединг и содержит 512-битный векторный процессор. Каждое ядро имеет
собственный кэш 1 и 2 уровня, при этом обеспечивается когерентность кэшей всех ядер.
Сопроцессор соединяется с хост-компьютером посредством интерфейса PCI Express.
Поскольку сопроцессор Intel Xeon Phi основан на архитектуре Intel x86, он поддерживает те
же программные инструменты и модели программирования, что и ординарный процессор
Intel Xeon.</p>
      <p>Сопроцессор поддерживает следующие режимы запуска приложений: native, ofload и
symmetric. В режиме native приложение выполняется независимо исключительно на
сопроцессоре. В режиме ofload приложение запускается на процессоре и выгружает
вычислительно интенсивную часть работы (код и данные) на сопроцессор. Режим symmetric
позволяет сопроцессору и процессору взаимодействовать в рамках модели обмена сообщениями
(Message Passing Interface).
2.3. Работы по тематике исследования</p>
      <p>
        В настоящее время DTW рассматривается научным сообществом как наилучшая мера
схожести для большинства приложений интеллектуального анализа временных рядов [
        <xref ref-type="bibr" rid="ref4">6</xref>
        ],
несмотря на большие временн ы´е затраты, связанные с ее вычислением [
        <xref ref-type="bibr" rid="ref17 ref7">9,18</xref>
        ]. Исследования,
посвященные ускорению вычисления DTW, представлены следующими работами.
      </p>
      <p>
        Алгоритм SPRING [
        <xref ref-type="bibr" rid="ref14">15</xref>
        ] использует технику повторного использования вычислений.
Однако, данная техника ограничивает приложение алгоритма, поскольку повторное
использование данных предполагает использование последовательностей, не подвергаемых
нормализации. В работе [
        <xref ref-type="bibr" rid="ref9">11</xref>
        ] для ускорения вычислений используется техника индексирования,
которая требует заранее задавать длину поискового запроса, что не всегда приемлемо.
Авторами работы [
        <xref ref-type="bibr" rid="ref8">10</xref>
        ] предложен многомерный индекс для поисковых запросов с различными
длинами. Техника отбрасывания заведомо непохожих подпоследовательностей на основе
оценки нижней границы расстояния предложена в работе [
        <xref ref-type="bibr" rid="ref6">8</xref>
        ]. Алгоритм UCR-DTW [
        <xref ref-type="bibr" rid="ref13">14</xref>
        ]
интегрирует большое количество существующих техник ускорения вычислений DTW и
является на сегодня, вероятно, самым быстрым последовательным алгоритмом поиска похожих
подпоследовательностей.
      </p>
      <p>Вышеперечисленные алгоритмы направлены на сокращение количества вызовов
процедуры вычисления DTW, но не ускорения процедуры вычисления DTW как таковой. Однако,
в силу своей вычислительной сложности, вычисление DTW по-прежнему занимает
существенную часть времени выполнения поиска подпоследовательностей. Данное
обстоятельство стимулировало исследования, направленные на использование параллельного
аппаратного обеспечения для распределения вычислений DTW для разных подпоследовательностей
на разные вычислительные устройства.</p>
      <p>
        В работе [
        <xref ref-type="bibr" rid="ref16">17</xref>
        ] подпоследовательности, начинающиеся с разных позиций временного
ряда, направляются для вычисления DTW на различные процессоры Intel Xeon. В работе [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ]
разные поисковые запросы распределяются на разные ядра процессора, и каждая
подпоследовательность пересылается на различные ядра для сравнения с запросами. Реализация на
GPU [
        <xref ref-type="bibr" rid="ref19">20</xref>
        ] распараллеливает создание матрицы трансформации шкалы времени, однако путь
трансформации вычисляется последовательно. В работе [
        <xref ref-type="bibr" rid="ref15">16</xref>
        ] предложена GPU-реализация,
использующая те же идеи, что и в работе [
        <xref ref-type="bibr" rid="ref16">17</xref>
        ]. Реализация для FPGA, описанная в
работе [
        <xref ref-type="bibr" rid="ref15">16</xref>
        ], предлагает наивный поиск похожих подпоследовательностей, не использующий
предварительную обработку данных. Приложение, осуществляющее поиск, генерируется
с помощью инструмента C-to-VHDL и ввиду отсутствия знания внутреннего устройства
FPGA не может быть применено к задачам большой размерности. Для преодоления
указанных проблем в работе [
        <xref ref-type="bibr" rid="ref18">19</xref>
        ] предложен потоково-ориентированнный фреймворк, в
котором реализован крупнозернистый параллелизм путем повторного использования данных
различных вычислений DTW.
      </p>
      <p>
        В данной работе на базе последовательного алгоритма поиска наиболее похожей
подпоследовательности временного ряда [
        <xref ref-type="bibr" rid="ref13">14</xref>
        ] нами разработан алгоритм поиска локально похожих
подпоследовательностей, который затем распараллелен с помощью технологии OpenMP и
адаптирован для многоядерного сопроцессора Intel Xeon Phi на основе идей, предложенных
нами ранее в работах [
        <xref ref-type="bibr" rid="ref10 ref2">4, 12</xref>
        ].
3. Параллельный алгоритм для сопроцессора Intel Xeon Phi
В данном разделе описаны этапы разработки параллельного алгоритма поиска
локально похожих подпоследовательностей для многоядерного сопроцессора Intel Xeon Phi. В
разделе 3.1 описан последовательный алгоритм решения данной задачи, построенный на
основе алгоритма UCR-DTW [
        <xref ref-type="bibr" rid="ref13">14</xref>
        ]. Раздел 3.2 содержит описание распараллеливания
последовательного алгоритма с помощью технологии OpenMP. В разделе 3.3 описана адаптация
алгоритма, полученного на предыдущем шаге, для исполнения на сопроцессоре Intel Xeon
Phi.
зом:
3.1. Последовательный алгоритм
      </p>
      <p>
        Разработанный нами последовательный алгоритм поиска локально похожих
подпоследовательностей представлен на рис. 1. Алгоритм получил название lbm-UCR-DTW,
поскольку базируется на алгоритме UCR-DTW [
        <xref ref-type="bibr" rid="ref13">14</xref>
        ]. Оригинальный алгоритм использует
каскад оценок динамической трансформации шкалы времени для отбрасывания заведомо
непохожих подпоследовательностей (составная деятельность Lower Bounding на рис. 1).
Мы полагаем, что | L| \leq
      </p>
      <p>K, т.е. результирующее множество содержит не более K
подпоследовательностей, где K является параметром алгоритма. Данное ограничение является
практически полезным ввиду возможного лимита оперативной памяти для хранения
найденных подпоследовательностей и не ограничивает общность, поскольку мы можем
рассмотреть случай K = \infty .</p>
      <p>Переменная алгоритма bsf (best-so-far) используется для хранения текущей лучшей
оценки расстояния от подпоследовательностей до запроса и вычисляется следующим
обраbsf =</p>
    </sec>
    <sec id="sec-2">
      <title>Update result</title>
    </sec>
    <sec id="sec-3">
      <title>Init</title>
    </sec>
    <sec id="sec-4">
      <title>Sliding</title>
    </sec>
    <sec id="sec-5">
      <title>Read Next</title>
    </sec>
    <sec id="sec-6">
      <title>Init</title>
      <p>else</p>
    </sec>
    <sec id="sec-7">
      <title>Update Result</title>
      <p>else</p>
      <p>else
Local Min
Condition
CL ≠ EMPTY ∧
CM ≠ EMPTY ∧
CR ≠ EMPTY ∧
distM &lt; ε ∧
distM &lt; distL ∧
distM &lt; distR
i := 0
dist := ∞
CL := EMPTY
CM := EMPTY
CR := EMPTY
bsf := ε</p>
      <p>LB_Kim(Tin, Q)
Таким образом, схема работы алгоритма кратко может быть представлена следующим
образом. Считанная подпоследовательность проверяется с помощью каскада оценок
вспомогательного алгоритма Lower Bounding. Если подпоследовательность не отбрасывается как
заведомо непохожая, то вычисляется DTW до запроса. Затем вспомогательный алгоритм
Sliding выполняет обновление переменных CL, CM , CR и соответсвующих им расстояний
distL, distM , distR. Если выполнено условие локального минимума, то вспомогательный
алгоритм Update Result обновляет результирующее множество L. Алгоритм заканчивает
работу, когда исчерпаны все подпоследовательности исходного временного ряда.
3.2. Параллельный алгоритм для процессора</p>
      <p>На основе последовательного алгоритма, предложенного в предыдущем разделе, нами
разработан параллельный алгоритм для процессора, представленный на рис. 2.</p>
      <p>Для распараллеливания используется технология программирования OpenMP.
Временной ряд разбивается на промежутки равной длины, каждый из которых обрабатывается
отдельной OpenMP-нитью. Для того, чтобы избежать потери результирующих
подпоследовательностей, находящихся на стыке промежутков, разбиение на промежутки
осуществляется с перекрытием, равным длине запроса. Это означает, что начало каждого промежутка,
lbm-UCR-DTW lbm-UCR-DTW ... lbm-UCR-DTW
result = min_dist(result, res1, ..., resCPU_THREADS)
Output
result
3.3. Параллельный алгоритм для сопроцессора
Параллельный алгоритм для процессора и сопроцессора Intel Xeon Phi представлен на
Основная идея данного параллельного алгоритма заключается в том, что сопроцессор
используется только для вычислений DTW, а процессор выполняет вычисление каскада
оценок, подготавливая подпоследовательности для сопроцессора, и вычисление DTW, если
сопроцессор полностью занят. Процессор поддерживает очередь кандидатов (т.е.
подпоследовательностей, для каждой из которых сопроцессор должен вычислить DTW).</p>
      <p>Элементами очереди являются кортежи вида (i, A), соответствующие
подпоследовательности-кандидату Tin. Здесь A представляет собой массив длины n, содержащий оценки</p>
      <p>CPU
Swap Buf_1
and Buf_2</p>
      <p>Read data
in Buf_1
else
Get (subsequence, dist) from phi_result
DTW_distances[subsequence] := dist
result = min_dist(result,  1, ...,  CPU_THREADS)
result = find_local_min(result, DTW_distances)
else [eBmupf_ty2]isClose file</p>
      <p>
        Output
result
Рис. 3. Параллельный алгоритм для процессора и сопроцессора Intel Xeon Phi
LBKeogh для каждой позиции подпоследовательности, который используется для
заблаговременной отмены вычисления DTW [
        <xref ref-type="bibr" rid="ref13">14</xref>
        ].
      </p>
      <p>При заполнении очереди она выгружается на сопроцессор для выполнения вычислений
DTW. Максимальное количество элементов в очереди является параметром алгоритма и
вычисляется как C \cdot h c\dot W , где C — количество ядер сопроцессора, доступных для
вычислений (например, для Intel Xeon Phi SE10X C = 60), h — фактор гипертрединга сопроцессора
(h = 4 для ранее упомянутой модели сопроцессора), W — количество кандидатов,
обрабатываемых одной нитью сопроцессора, которое является параметром алгоритма.</p>
      <p>Работа алгоритма может быть описана следующим образом. Одна из нитей процессора
объявляется мастером, остальные — рабочими. Сначала мастер отправляет буфер с
текущим фрагментом временного ряда на сопроцессор. Как только очередь заполняется, мастер
выгружает ее на сопроцессор, а сопроцессор выполняет вычисление DTW для
соответствующих подпоследовательностей.</p>
      <p>Вспомогательный алгоритм lbm-UCR-DTW*, изображенный на рис. 4, реализует
поведение рабочего. Рабочий выполняет вычисление каскадных оценок для
подпоследовательности. Если подпоследовательность не похожа на запрос, то рабочий отбрасывает ее, иначе
подпоследовательность добавляется в очередь. Если очередь заполнена, и данные,
загруженные ранее на сопроцессор, еще не обработаны, то рабочий вычисляет DTW
самостоятельно. При этом реализация поиска локально похожих подпоследовательностей
идеологически близка последовательному алгоритму, описанному в разделе 3.1. Результаты
вычислений DTW рабочий сохраняет в разделяемом массиве для последующего поиска локально
похожих подпоследовательностей.</p>
      <p>После выгрузки кандидатов на сопроцессор для каждого кандидата выполняется
вычисление DTW, и пары «индекс-расстояние» выгружаются обратно на процессор.</p>
      <p>После того, как вычисления на процессоре и сопроцессоре завершены, выполняется
поиск локально похожих подпоследовательностей в разделяемом массиве, заполненном
ранее.
Init
else
else</p>
      <p>else
[Queue.IsFull]
dist := DTW(Tin, Q)</p>
      <p>[pruned]</p>
      <p>Sliding
DTW_distances[i] := dist</p>
      <p>else
4. Вычислительные эксперименты</p>
      <p>Для оценки разработанного алгоритма мы выполнили эксперименты на узле
суперкомпьютера «Торнадо ЮУрГУ»1, спецификации которого представлены в табл. 1.</p>
      <p>Таблица 1. Спецификация узла суперкомпьютера «Торнадо ЮУрГУ»
Спецификации
Модель
Количество ядер
Тактовая частота, ГГц
Количество нитей на ядро
Пиковая производительность, TFLOPS
Процессор</p>
      <p>Сопроцессор
Intel Xeon X5680 Intel Xeon Phi SE10X
6
2
3.33</p>
      <p>Serial</p>
      <p>Parallel, CPU
Parallel, CPU+Xeon Phi</p>
      <p>6000
Рис. 5. Производительность на синтетических данных
чае, когда запросы имеют меньшую длину, наш алгоритм показывает производительность,
сходную с параллельным алгоритмом для процессора (не использующим сопроцессор).</p>
      <p>Вторая серия экспериментов исследует производительность разработанного
алгоритма на реальных данных ЭКГ, состоящих из 20 млн. точек (около 22 час. ЭКГ, снятой с
дискретизацией 250 Гц).</p>
      <p>Serial</p>
      <p>Parallel, CPU</p>
      <p>Parallel, CPU+Xeon Phi
1000</p>
      <p>1500
Длина запроса</p>
      <p>2000
Рис. 6. Производительность на реальных данных
Результаты экспериментов на реальных данных показаны на рис. 6. Разработанный
алгоритм показывает в почти три раза б´ольшую производительность, чем параллельный
алгоритм, не использующий сопроцессор.</p>
      <p>Влияние порогового значения \scrE на время работы алгоритма показано на рис. 7. Данный
эксперимент производился с использованием параллельного алгоритма поиска локально
похожих подпоследовательностей для процессора и сопроцессора Intel Xeon Phi. В качестве
данных эксперимента использовались синтетический и реальный временные ряды,
рассмотренные в предыдущих экспериментах. Как и ожидалось, с увеличением порогового значения
\scrE время выполнения увеличивается.
с
я, 2000
и
н
е
н
ол 1500
п
ы
в
я
ем 1000
р
В
500
0</p>
      <p>В данной статье описаны проектирование и реализация параллельного алгоритма
поиска локально похожих подпоследовательностей временного ряда, использующего в
качестве мероы схожести динамическую трансформацию шкалы времени, для архитектуры Intel
Many Integrated Core.</p>
      <p>На основе последовательного алгоритма поиска самой похожей подпоследовательности
временного ряда, комбинирующего известные на сегодня техники редукции вычислений,
разработан последовательный алгоритм решения указанной задачи.</p>
      <p>На следующем шаге разработки выполнено распараллеливание полученного алгоритма
на основе технологии OpenMP. Временной ряд разбивается на промежутки равной длины,
обрабатываемые отдельными OpenMP-нитями. Для исключения потерь результирующих
подпоследовательностей, находящихся на стыке промежутков, разбиение осуществляется с
частичным нахлестом соседних промежутков.</p>
      <p>Наконец, алгоритм, полученный на предыдущем шаге, адаптирован для выполнения
вычислений как на центральном процессоре, так и на многоядерном сопроцессоре Intel
Xeon Phi. Сопроцессор используется только для вычисления расстояний между
подпоследовательностями и запросом. Процессор выполняет отбрасывание заведомо непохожих
подпоследовательностей и подготовку подпоследовательностей для обработки сопроцессором,
вычисляя расстояния лишь при отсуствии другой работы. Взаимодействие процессора и
сопроцессора реализовано с помощью режима ofload , когда часть кода и данных
выгружается на сопроцессор. Высокая интенсивность вычислений, выполняемых на сопроцессоре,
достигается за счет использования на стороне процессора очереди подпоследовательностей,
данные о которых выгружаются на сопроцессор для вычисления динамической
трансформации шкалы времени.</p>
      <p>Эксперименты, проведенные на синтетических и реальных данных, показали
эффективность разработанного алгоритма и его превосходство над последовательным алгоритмом и
параллельным алгоритмом, использующим только процессор.</p>
      <p>В качестве возможного направления дальнейших исследований интересными
представляются следующие задачи: модернизация разработанного алгоритма для случая, когда
процессор оснащен несколькими сопроцессорами Intel Xeon Phi, и расширение разработанного
алгоритма для кластерной системы, каждый вычислительный узел которой оснащен
сопроцессором Intel Xeon Phi.
Литература
Parallel algorithm for local-best-match time series subsequence
similarity search on the Intel MIC architecture
Aleksander Movchan and Mikhail Zymbler
Keywords: time series data mining, subsequences similarity search, parallel algorithm,
OpenMP, Intel Xeon Phi
The paper touches upon the problem of local-best-match time series subsequence similarity
search that assumes that a query sequence and a longer time series are given, and the task is to
find all the subsequences whose distance from the query is the minimal among their
neighboring subsequences whose distance from the query is under specified threshold. The
Dynamic Time Warping (DTW) is used as a distance metric, which currently is recognized as
the best similarity measure for most time series applications. However, computation of DTW
is an expensive operation, in spite of the existing sophisticated software approaches. Existing
hardware approaches to DTW computation involve GPU and FPGA architectures and ignore
the potential of Intel Many Integrated Core architecture. The paper proposes a parallel
algorithm for solving this problem using both the CPU and Intel Xeon Phi many-core
coprocessor. The implementation is based on the OpenMP parallel programming technology
and offload execution mode, where part of the code and data is transmitted to the coprocessor.
The algorithm utilizes a queue of subsequences on the processor side, which are uploaded to
the coprocessor for the DTW computations. The results of experiments confirms the
effectiveness of the algorithm.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          2.
          <string-name>
            <surname>Дышаев</surname>
            <given-names>М.М.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Соколинская</surname>
            <given-names>И</given-names>
          </string-name>
          .М.
          <article-title>Представление торговых сигналов на основе адаптивной скользящей средней Кауфмана в виде системы линейных неравенств // Вестник ЮУрГУ</article-title>
          . Серия:
          <article-title>Вычислительная математика и информатика</article-title>
          .
          <year>2013</year>
          . Т.
          <volume>2</volume>
          , № 4. C.
          <volume>103</volume>
          -
          <fpage>108</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          4.
          <string-name>
            <surname>Мовчан</surname>
            <given-names>А.В.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Цымблер</surname>
            <given-names>М</given-names>
          </string-name>
          .Л.
          <article-title>Нахождение похожих подпоследовательностей временного ряда с помощью многоядерного сопроцессора Intel Xeon Phi // Параллельные вычислительные технологии (ПаВТ'</article-title>
          <year>2015</year>
          )
          <article-title>: труды международной научной конференции (Екатеринбург, 31 марта - 2 апреля 2015 г</article-title>
          .).
          <source>Челябинск: Издательский центр ЮУрГУ</source>
          ,
          <year>2015</year>
          . С.
          <volume>212</volume>
          -
          <fpage>224</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          5.
          <string-name>
            <surname>Berndt</surname>
            <given-names>D.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cliford</surname>
            <given-names>J</given-names>
          </string-name>
          . Using Dynamic Time Warping to Find Patterns in Time Series // Knowledge Discovery in
          <source>Databases: Papers from the 1994 AAAI Workshop</source>
          , Seattle, Washington,
          <year>July 1994</year>
          . AAAI Press,
          <year>1994</year>
          . P.
          <volume>359</volume>
          -
          <fpage>370</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          6.
          <string-name>
            <surname>Ding</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Trajcevski</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scheuermann</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Keogh</surname>
            <given-names>E</given-names>
          </string-name>
          .
          <source>Querying and Mining of Time Series Data: Experimental Comparison of Representations and Distance Measures // Proceedings of the VLDB Endowment</source>
          ,
          <year>2008</year>
          . Vol.
          <volume>1</volume>
          , No. 2. P.
          <volume>1542</volume>
          -
          <fpage>1552</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          7.
          <string-name>
            <surname>Duran</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klemm</surname>
            <given-names>M</given-names>
          </string-name>
          .
          <source>The Intel Many Integrated Core Architecture // 2012 International Conference on High Performance Computing and Simulation</source>
          ,
          <string-name>
            <surname>HPCS</surname>
          </string-name>
          <year>2012</year>
          , Madrid, Spain,
          <source>July 2-6</source>
          ,
          <year>2012</year>
          . IEEE,
          <year>2012</year>
          . P.
          <volume>365</volume>
          -
          <fpage>366</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          8.
          <string-name>
            <surname>Fu A.W-C.</surname>
          </string-name>
          ,
          <string-name>
            <surname>Keogh</surname>
            <given-names>E.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lau</surname>
            <given-names>L.Y.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ratanamahatana</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wong R.C</surname>
          </string-name>
          .-W. Scaling and Time Warping in Time Series Querying //
          <source>Proceedings of the 31st International Conference on Very Large Data Bases, Trondheim, Norway, August 30 - September 2</source>
          ,
          <year>2005</year>
          . P.
          <volume>649</volume>
          -
          <fpage>660</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          9.
          <string-name>
            <surname>Fu A.W-C.</surname>
          </string-name>
          ,
          <string-name>
            <surname>Keogh</surname>
            <given-names>E.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lau</surname>
            <given-names>L.Y.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ratanamahatana</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wong R.C</surname>
          </string-name>
          .-W. Scaling and Time Warping in Time Series Querying // VLDB Journal.
          <year>2008</year>
          . Vol.
          <volume>17</volume>
          , No. 4. P.
          <volume>899</volume>
          -
          <fpage>921</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          10.
          <string-name>
            <surname>Keogh</surname>
            <given-names>E.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wei</surname>
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xi</surname>
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vlachos</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lee</surname>
            <given-names>S.H.</given-names>
          </string-name>
          , Protopapas P.
          <article-title>Supporting Exact Indexing of Arbitrarily Rotated Shapes and Periodic Time Series under Euclidean</article-title>
          and Warping Distance Measures // VLDB Journal.
          <year>2009</year>
          . Vol.
          <volume>18</volume>
          , No. 3. P.
          <volume>611</volume>
          -
          <fpage>630</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          11.
          <string-name>
            <surname>Lim S</surname>
          </string-name>
          .-H.,
          <string-name>
            <surname>Park</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim S</surname>
          </string-name>
          .
          <article-title>-</article-title>
          <string-name>
            <surname>W. Using</surname>
          </string-name>
          <article-title>Multiple Indexes for Eficient Subsequence Matching in Time-series Databases // Database Systems for Advanced Applications</article-title>
          , 11th International Conference, DASFAA 2006, Singapore,
          <source>April 12-15</source>
          ,
          <year>2006</year>
          ,
          <source>Proceedings. Lecture Notes in Computer Science</source>
          . Vol.
          <volume>3882</volume>
          . Springer,
          <year>2006</year>
          . P.
          <volume>65</volume>
          -
          <fpage>79</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          12.
          <string-name>
            <surname>Miniakhmetov</surname>
            <given-names>R.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Movchan</surname>
            <given-names>A.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zymbler M.L. Accelerating</surname>
          </string-name>
          <article-title>Time Series Subsequence Matching on the Intel Xeon Phi Many-core</article-title>
          <source>Coprocessor // Proceedings of the 38th International Convention on Information and Communication Technology, Electronics and Microelectronics</source>
          , MIPRO'
          <year>2015</year>
          , Opatija, Croatia, May
          <volume>25</volume>
          -29,
          <year>2015</year>
          . IEEE,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          P.
          <fpage>1675</fpage>
          -
          <lpage>1680</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          13.
          <string-name>
            <surname>Pearson</surname>
            <given-names>K.</given-names>
          </string-name>
          <article-title>The Problem of the Random Walk /</article-title>
          / Nature.
          <year>1905</year>
          . Vol.
          <volume>72</volume>
          , No.
          <year>1865</year>
          . P.
          <volume>294</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          14.
          <string-name>
            <surname>Rakthanmanon</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Campana</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mueen</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Batista</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Westover</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhu</surname>
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zakaria</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <source>Keogh E. Searching and Mining Trillions of Time Series Subsequences under Dynamic Time Warping // The 18th ACM SIGKDD Conference on Knowledge Discovery and Data Mining</source>
          , Beijing, China,
          <fpage>12</fpage>
          -
          <issue>16</issue>
          <year>August</year>
          ,
          <year>2012</year>
          . ACM,
          <year>2012</year>
          . P.
          <volume>262</volume>
          -
          <fpage>270</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          15.
          <string-name>
            <surname>Sakurai</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Faloutsos</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yamamuro</surname>
            <given-names>M. Stream</given-names>
          </string-name>
          <article-title>Monitoring under the Time Warping Distance //</article-title>
          <source>Proceedings of the 23rd International Conference on Data Engineering, ICDE</source>
          <year>2007</year>
          ,
          <article-title>The Marmara Hotel</article-title>
          , Istanbul, Turkey,
          <source>April 15-20</source>
          ,
          <year>2007</year>
          . P.
          <volume>1046</volume>
          -
          <fpage>1055</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          16.
          <string-name>
            <surname>Sart</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mueen</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Najjar</surname>
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Keogh</surname>
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Niennattrakul</surname>
            <given-names>V</given-names>
          </string-name>
          .
          <article-title>Accelerating Dynamic Time Warping Subsequence Search with GPUs</article-title>
          and FPGAs // The 10th IEEE International Conference on Data Mining, Sydney,
          <string-name>
            <surname>NSW</surname>
          </string-name>
          , Australia,
          <fpage>13</fpage>
          -
          <lpage>17</lpage>
          December,
          <year>2010</year>
          . IEEE,
          <year>2010</year>
          . P.
          <volume>1001</volume>
          -
          <fpage>1006</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          17.
          <string-name>
            <surname>Srikanthan</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kumar</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gupta</surname>
            <given-names>R</given-names>
          </string-name>
          .
          <article-title>Implementing the Dynamic Time Warping Algorithm in Multithreaded Environments for Real Time</article-title>
          and Unsupervised Pattern Discovery // Computer and Communication Technology (ICCCT), Allahabad, India,
          <fpage>15</fpage>
          -
          <lpage>17</lpage>
          September,
          <year>2011</year>
          . IEEE Computer Society,
          <year>2011</year>
          . P.
          <volume>394</volume>
          -
          <fpage>398</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          18.
          <string-name>
            <surname>Takahashi</surname>
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yoshihisa</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sakurai</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kanazawa M. A Parallelized Data Stream Processing System Using Dynamic Time</surname>
          </string-name>
          Warping Distance // 2009 International Conference on Complex,
          <source>Intelligent and Software Intensive Systems, CISIS</source>
          <year>2009</year>
          , Fukuoka, Japan, March
          <volume>16</volume>
          -19,
          <year>2009</year>
          . IEEE Computer Society,
          <year>2009</year>
          . P.
          <volume>1100</volume>
          -
          <fpage>1105</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          19. Wang
          <string-name>
            <given-names>Z.</given-names>
            ,
            <surname>Huang</surname>
          </string-name>
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Wang</surname>
          </string-name>
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Li</surname>
          </string-name>
          <string-name>
            <given-names>H.</given-names>
            ,
            <surname>Wang</surname>
          </string-name>
          <string-name>
            <given-names>Y.</given-names>
            ,
            <surname>Yang</surname>
          </string-name>
          <string-name>
            <surname>H</surname>
          </string-name>
          .
          <source>Accelerating Subsequence Similarity Search Based on Dynamic Time Warping Distance with FPGA // Proceedings of the 2013 ACM/SIGDA International Symposium on Field Programmable Gate Arrays, FPGA '13</source>
          , Monterey, CA, USA, February
          <volume>11</volume>
          -
          <issue>13</issue>
          ,
          <year>2013</year>
          . ACM,
          <year>2013</year>
          . P.
          <volume>53</volume>
          -
          <fpage>62</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          20. Zhang Y.,
          <string-name>
            <surname>Adl</surname>
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Glass</surname>
            <given-names>J.R.</given-names>
          </string-name>
          <string-name>
            <surname>Fast Spoken Query Detection Using</surname>
          </string-name>
          Lower-bound
          <source>Dynamic Time Warping on Graphical Processing Units // Proceedings of the 2012 IEEE International Conference on Acoustics, Speech and Signal Processing</source>
          ,
          <string-name>
            <surname>ICASSP</surname>
          </string-name>
          <year>2012</year>
          , Kyoto, Japan, March
          <volume>25</volume>
          -30,
          <year>2012</year>
          . IEEE,
          <year>2012</year>
          . P.
          <volume>5173</volume>
          -
          <fpage>5176</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>