<!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 Xeon Phi\ast</article-title>
      </title-group>
      <pub-date>
        <year>2015</year>
      </pub-date>
      <fpage>632</fpage>
      <lpage>641</lpage>
      <abstract>
        <p>Южно-Уральский государственный университет В работе описана параллельная версия алгоритма кластеризации Partitioning Around Medoids для сопроцессора Intel Xeon Phi. Распараллеливание выполнено на основе OpenMP. Циклические операции преобразованы для выполнения векторизации. Алгоритм использует матрицу предвычисленных расстояний, которая хранится в памяти сопроцессора. Представлены результаты вычислительных экспериментов, подтверждающие эффективность разработанного алгоритма.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>2. Контекст исследования и обзор работ
2.1. Обзор работ</p>
      <p>
        Существует большое количество работ по кластерному анализу. Классические
алгоритмы кластеризации k-Means и k-Medoids были описаны в [
        <xref ref-type="bibr" rid="ref10 ref5">5, 10</xref>
        ]. Оригинальный алгоритм
PAM был предложен в [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        Следующие работы посвящены ускорению алгоритмов кластеризации с помощью
параллельных аппаратных средств. В статье [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] сравниваются реализации k-Means для FPGA
и GPU. Авторы [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] описывают улучшения алгоритма k-Means для уменьшения передачи
данных между CPU и GPU. В [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] предложена техника для улучшения распределения
данных по потокам GPU в алгоритме k-Means. Реализация алгоритма k-Means для фреймворка
Hadoop с применением графических ускорителей описана в [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. В работе [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] описана
реализация нескольких алгоритмов кластеризации для GPU, включая k-Medoids. Фреймворк
для кластеризации генетических данных на GPU с помощью алгоритма k-Medoids описан
в [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>
        По нашему мнению потенциал ускорителей на архитектуре Intel MIC для решения
задач кластеризации недооценен. Насколько нам известно существует только одна
работа [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], посвященная адаптации алгоритма плотностной кластеризации DBSCAN для
архитектуры Intel MIC. В данной работе описана техника ускорения алгоритма кластеризации
Partitioning Around Medoids с помощью многоядерного сопроцессора Intel Xeon Phi.
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).
3. Описание алгоритма Partitioning Around Medoids
Введем следующие обозначения для формального описания алгоритма PAM [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Пусть
O = \{ o1, o2, . . . , on\} — это множество кластеризуемых объектов, где каждый объект — это
кортеж, состоящий из p вещественных чисел. Пусть k количество кластеров, k \l n, C =
\{ c1, c2, . . . , ck\} множество медоидов, Cs\ubet O, и \rho : O \times C \rightaow R — это метрика расстояния.
      </p>
      <p>Алгоритм PAM является разновидностью метода наискорейшего подъема. На каждой
итерации выбирается пара медоид ci и не-медоид oj такая, что замена медоида на не-медоид
дает лучшую кластеризацию из возможных. Оценка кластеризации выполняется с помощью
целевой функции, вычисляемой как сумма расстояний от каждого объекта до ближайшего
медоида:
(1)
Вход : Множество объектов O, количество кластеров k
Выход: Множество кластеров C
1 Инициализировать C ; // фаза BUILD
2 repeat// фаза SWAP
3 Вычислить Tmin ;
4 Поменять местами cmin и omin;
5 until Tmin &lt; 0;</p>
      <p>Рис. 1. Псевдокод алгоритма PAM
Псевдокод алгоритма PAM представлен на рис. 1. PAM состоит из двух фаз: BUILD
и SWAP. В фазе BUILD выполняется первичная кластеризация, в которой
последовательно выбирается k объектов в качестве медоидов. Первый объект c1 — это объект, сумма
расстояний от которого до всех остальных объектов является наименьшей:
n
c1 = arg min \sum \rho (oh, oj).</p>
      <p>1l\eq hl\eq n j=1
Затем выбирается следующий объект, минимизирующий целевую функцию. Для этого
производится вычисление целевой функции относительно ранее выбранных объектов c и
каждого из невыбранных объектов o:</p>
      <p>n
c2 = arg min \sum min(\rho (c1, oj), \rho (oh, oj)),
1l\eq hl\eq n j=1</p>
      <p>n
c3 = arg min \sum min( min (\rho (cl, oj)), \rho (oh, oj)),
1l\eq hl\eq n j=1 1l\eq ll\eq 2</p>
      <p>n
ck = arg min \sum min( min (\rho (cl, oj)), \rho (oh, oj)).</p>
      <p>1l\eq hl\eq n j=1 1l\eq ll\eq k- 1
...
Эта процедура повторяется, пока не будет выбрано k объектов.</p>
      <p>В фазе SWAP алгоритм PAM пытается улучшить множество медоидов C. Алгоритм
выполняет поиск пары объектов (cmin, omin), минимизирующих целевую функцию. Для этого
перебираются все пары объектов (ci, oh), где ci — это медоид, а oh не-медоид.
Вычисляется изменение целевой функции при исключении ci из множества медоидов и включении oh
вместо него. Обозначим это изменение как Tih, а минимальное значение Tmin достигается на
паре (cmin, omin). Если Tmin &gt; 0, тогда множество C не может быть улучшено, и алгоритм
завершается.</p>
      <p>Для описания вычисления Tih введем следующие обозначения. Пусть D = \{ d1, d2, . . . , dn\}
— это множество расстояний от каждого объекта до ближайшего медоида. Пусть S =
\{ s1, s2, . . . , sn\} — это множество расстояний от каждого объекта до второго ближайшего
медоида. Пусть Cjih — это вклад не-медоида oj в Tih при замене ci на oh. В этом случае Tih
определяется как сумма Cjih:</p>
      <p>n
Tih = \sum Cjih.</p>
      <p>
        j=1
Псевдокод вычисления Cjih представлен на рис. 2 [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
Вход : oj, ci, oh, dj, sj
Выход: Cjih
1 if \rho(oj, ci) &gt; dj and \rho(oj, oh) &gt; dj then
2 Cjih \leftarow 0
3 else if \rho(oj, ci) = dj then
4 if \rho(oj, oh) &lt; sj then
5 Cjih \leftarow \rho(oj, oh) - dj
6 else
7 Cjih \leftarow sj - dj
8 end
9 else if \rho(oj, oh) &lt; dj then
10 Cjih \leftarow \rho(oj, oh) - dj
11 end
      </p>
      <p>Рис. 2. Вычисление Cjih
4. Параллельный алгоритм</p>
      <p>В данном разделе мы описываем подход к реализации алгоритма PAM на сопроцессоре
Intel Xeon Phi. Подход основан на следующих принципах.</p>
      <p>Параллелизм по данным и векторизация. С помощью технологии OpenMP мы
обеспечиваем одновременное исполнение одной и той же функции над элементами исходного
набора данных. Большинство циклов алгоритма PAM с арифметическими операциями
были реорганизованы из скалярной формы в векторную, для эффективного исполнения на
векторных арифметических устройствах сопроцессора.</p>
      <p>В нашей реализации используется несколько механизмов для достижения локальности
данных, то есть программа обращается к данным, расположенным близко к недавно
запрошенным областям памяти. Так как сопроцессор загружает данные в кэш блоками, то
области памяти близкие к ранее загруженным областям так же попадут в кэш, что приведет
к росту производительности алгоритма.</p>
      <p>На рис. 3 представлен псевдокод алгоритма PAM, адаптированного для сопроцессора
Intel Xeon Phi.</p>
      <p>Вход : Множество объектов O, количество кластеров k
Выход: Множество кластеров C
1 Выгрузить (ofload) O, k из памяти CPU на сопроцессор;
2 M \leftarow P repareDistanceM atrix(O);
3 C \leftarow BuildM edoids(M ) ; // фаза BUILD
4 repeat// фаза SWAP
5 Tmin \leftarow F indBestSwap(M, C) ;
6 Поменять местами cmin и omin;
7 until Tmin &lt; 0;
8 Выгрузить (ofload) C из памяти сопроцессора в память CPU;</p>
      <p>Рис. 3. Распараллеленный алгоритм PAM для сопроцессора Intel Xeon Phi
Сводная информация о подалгоритмах PAM представлена в таблице 1.
Для улучшения производительности мы используем технику предвычисления
расстояТаблица 1. Сводная информация о подалгоритмах PAM
Название
PrepareDistanceMatrix
BuildMedoids
FindBestSwap
Временная сложность Техники распараллеливания</p>
      <p>O(pn2)</p>
      <p>O(kn2)
O(k(n - k)2)</p>
    </sec>
    <sec id="sec-2">
      <title>OpenMP, векторизация</title>
    </sec>
    <sec id="sec-3">
      <title>OpenMP, векторизация</title>
      <p>OpenMP
ний между всеми объектами множества O. В этом случае нет необходимости в вычислении
расстояний на каждой итерации алгоритма PAM, так как все расстояния сохранены в
матрице расстояний M .</p>
      <p>
        Алгоритм PAM оперирует большим количеством массивов данных, не помещающихся
в кэш-памяти L2 сопроцессора Intel Xeon Phi. Мы обрабатываем данные блоками по L
элементов для обеспечения локальности данных. Рекомендуемое [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] значение для L равно
16. Кроме того, в нашей задаче n должно быть кратно L. Мы использовали значение L = 32.
      </p>
      <p>
        Подалгоритм PrepareDistanceMatrix инициализирует матрицу расстояний (см. рис. 4).
В отличие от [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] мы храним матрицу расстояний в полной форме, а не в верхнетреугольной
форме для достижения лучшей локальности данных во всех оставшихся подалгоритмах.
Для достижения лучшей производительности мы использовали тайлинг [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
5
6
7
8
9
10
11
12 end
      </p>
      <p>end
end
end
Вход : Множество объектов O
Выход: Матрица расстояний M
1 forall the oi таких, что 1 \leq i l\eq n do // parallelized
2 for j = 1 до n шаг L do
3 for k = 1 to p do
4 for l такое, что j \leq l l\eq j + L do // vectorized
// доступ к ol организован с применением тайлинга
mil \leftarow mil + (oi[k] - ol[k])2;
end
for l такое, что j \leq l l\eq j + L do // vectorized
mil \leftarow s\urd mil;</p>
      <p>Рис. 4. Вычисление матрицы расстояний
Подалгоритм BuildMedoids реализует фазу BUILD (см. рис. 5) в соответствии с
формулами (2)–(5).</p>
      <p>Подалгоритм FindBestSwap реализует фазу SWAP (см. рис. 6). Он перебирает все пары
(ci, oh) объектов, где ci медоид, а oh не-медоид, вычисляет величину Tih для каждой пары
и возвращает минимальное значение Tmin.
5. Вычислительные эксперименты</p>
      <p>Для оценки разработанного алгоритма мы выполнили эксперименты на узле
суперкомпьютера «Торнадо ЮУрГУ»1, спецификации которого представлены в таблице 2.
Экспе10
11
12
13
14 end</p>
      <p>end
end
Обновить D;
Вход : Матрица расстояний M
Выход: Множество медоидов C
1 forall the i = 1 to n do // parallelized</p>
      <p>n
2 if \sum mij минимальна then // вычисление суммы векторизовано
j=1
c1 \leftarow oi;
рименты проводились над данными одинарной точности. Сопроцессор Intel Xeon Phi
использован в режиме ofload . Мы измеряли время работы алгоритма PAM в зависимости
от количества обрабатываемых данных и исследовали влияние свойств наборов данных на
время работы подалгоритмов PAM.</p>
      <p>Характеристики наборов данных, использованных в экспериментах, представлены в
таблице 3.</p>
      <p>Результаты экспериментов на данных FCS Human представлены на рис. 7(a). Данные
из набора FCS Human имеют большую размерность, поэтому наибольшее время работы
занимает процесс вычисления матрицы расстояний. Вычисление матрицы расстояний на
Intel Xeon Phi в два раза эффективнее, чем на процессоре Intel Xeon.</p>
      <p>Результаты экспериментов на данных гистограмм фотобазы Corel представлены на
рис. 7(b). Размерность данных небольшая, поэтому подготовка матрицы расстояний не
заТаблица 2. Спецификация узла суперкомпьютера «Торнадо ЮУрГУ»
Спецификации
Модель
Количество ядер
Тактовая частота, ГГц
Количество нитей на ядро
Пиковая производительность, TFLOPS
Процессор</p>
      <p>Сопроцессор
Intel Xeon X5680 Intel Xeon Phi SE10X
61
1,1
4
1,076
6
2
3,33
0,371
p</p>
      <p>k
нимает много времени. Алгоритм PAM в два раза медленнее на процессоре Intel Xeon, чем
на сопроцессоре Intel Xeon Phi.</p>
      <p>(a) Производительность на данных FCS Human (b) Производительность на данных гистограмм
фотобазы Corel
Рис. 7. Результаты экспериментов
Эксперименты показали, что скорость работы алгоритма PAM определяется природой
кластеризуемых данных. Наиболее трудоемким этапом для обработки данных большой
размерности является вычисление матрицы расстояний. При работе с данными небольшой
размерности время работы подалгоритмов PAM значительно превосходит время вычисления
матрицы расстояний.
6. Заключение</p>
      <p>В работе описана параллельная версия алгоритма кластеризации Partitioning Around
Medoids для сопроцессора Intel Xeon Phi. Распараллеливание выполнено на основе OpenMP.
Циклические операции преобразованы для выполнения векторизации. Алгоритм использует
матрицу предвычисленных расстояний, которая хранится в памяти сопроцессора. Алгоритм
хранит данные в непрерывных массивах и обрабатывает данные блоками для обеспечения
локальности данных и, как следствие, лучшей производительности.</p>
      <p>Представлены результаты вычислительных экспериментов, подтверждающие
эффективность разработанного алгоритма. Эксперименты показали, что скорость работы
алгоритма PAM определяется природой кластеризуемых данных. Наиболее трудоемким этапом
для обработки данных большой размерности является вычисление матрицы расстояний.
При работе с данными небольшой размерности время работы подалгоритмов PAM
значительно превосходит время вычисления матрицы расстояний.</p>
      <p>В качестве возможного направления дальнейших исследований интересными
представляются следующие направления: модернизация разработанного алгоритма для случая
вычислительного узла с несколькими сопроцессорами Intel Xeon Phi и расширение данного
алгоритма для кластерной системы, вычислительные узлы которой оснащены
сопроцессорами Intel Xeon Phi.
Литература
Parallel clustering algorithm for Intel Xeon Phi coprocessor
Timofey Rechkalov</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Broin</surname>
            <given-names>P. O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Smith</surname>
            <given-names>T. J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Golden</surname>
            <given-names>A. A. J.</given-names>
          </string-name>
          <article-title>Alignment-free Clustering of Transcription Factor Binding Motifs using a Genetic-k-</article-title>
          <string-name>
            <surname>Medoids</surname>
            <given-names>Approach</given-names>
          </string-name>
          // BMC Bioinformatics.
          <year>2015</year>
          . Vol.
          <volume>16</volume>
          , N. 1. P.
          <volume>22</volume>
          -
          <fpage>33</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Engreitz</surname>
            <given-names>J. M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Daigle</surname>
            <given-names>B. J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marshall</surname>
            <given-names>J. J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Altman R. B. Independent Component</surname>
          </string-name>
          <article-title>Analysis: Mining Microarray Data for Fundamental Human Gene Expression Modules /</article-title>
          / Journal of Biomedical Informatics.
          <year>2010</year>
          . Vol.
          <volume>43</volume>
          , N. 6. P.
          <volume>932</volume>
          -
          <fpage>944</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Espenshade</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pangborn</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Laszewski</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roberts</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cavenaugh</surname>
            <given-names>J. S.</given-names>
          </string-name>
          <article-title>Accelerating Partitional Algorithms for Flow Cytometry on GPUs // International Symposium on Parallel and Distributed Processing with Applications</article-title>
          ,
          <source>August 10-12</source>
          ,
          <year>2009</year>
          , Chengdu, Sichuan, China, Proceedings. IEEE. P.
          <volume>226</volume>
          -
          <fpage>233</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Han</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kamber M. Data</surname>
          </string-name>
          <article-title>Mining: Concepts and Techniques, 3rd Edition</article-title>
          . Morgan Kaufmann Publishers Inc.,
          <year>2011</year>
          . 744 p.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. Huang Z.
          <article-title>Extensions to the k-Means Algorithm for Clustering Large Data Sets with Categorical Values // Data Min</article-title>
          .
          <source>Knowl. Discov</source>
          .
          <year>1998</year>
          . Vol.
          <volume>2</volume>
          ,
          <string-name>
            <surname>N.</surname>
          </string-name>
          <year>3</year>
          . P.
          <volume>283</volume>
          -
          <fpage>304</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Hussain</surname>
            <given-names>H. M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Benkrid</surname>
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ebrahim</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Erdogan</surname>
            <given-names>A. T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seker</surname>
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Novel Dynamic</surname>
          </string-name>
          <article-title>Partial Reconfiguration Implementation of K-Means Clustering on FPGAs: Comparative Results with GPPs</article-title>
          and GPUs // Int. J.
          <string-name>
            <surname>Reconfig</surname>
          </string-name>
          . Comp.
          <year>2012</year>
          . Vol.
          <year>2012</year>
          , P.
          <volume>135</volume>
          926:
          <fpage>1</fpage>
          -
          <lpage>135</lpage>
          926:
          <fpage>15</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Jefers</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <source>Reinders О. Intel Xeon Phi Coprocessor High Performance Programming</source>
          Morgan Kaufmann Publishers Inc.,
          <year>2013</year>
          . 432 p.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. Kaufman L.,
          <string-name>
            <surname>Rousseeuw P. J. Finding</surname>
          </string-name>
          <article-title>Groups in Data: An Introduction to Cluster Analysis John Wiley</article-title>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Kohlhof</surname>
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sosnick</surname>
            <given-names>M.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hsu</surname>
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pande</surname>
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Altman</surname>
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>CAMPAIGN</surname>
          </string-name>
          <article-title>: an Open-Source Library of GPU-Accelerated Data Clustering Algorithms /</article-title>
          / Bioinformatics.
          <year>2011</year>
          . Vol.
          <volume>27</volume>
          ,
          <string-name>
            <surname>N.</surname>
          </string-name>
          <year>16</year>
          . P.
          <volume>2321</volume>
          -
          <fpage>2322</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Lloyd</surname>
            <given-names>S. P.</given-names>
          </string-name>
          <article-title>Least squares quantization</article-title>
          in PCM // IEEE Transactions on Information Theory.
          <year>1982</year>
          . Vol.
          <volume>28</volume>
          , N. 2. P.
          <volume>129</volume>
          -
          <fpage>136</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Ortega</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rui</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chakrabarti</surname>
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Porkaew</surname>
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mehrotra</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huang</surname>
            <given-names>T. S.</given-names>
          </string-name>
          <string-name>
            <surname>Supporting Ranked</surname>
          </string-name>
          Boolean Similarity Queries in MARS // IEEE Trans.
          <source>Knowl. Data Eng</source>
          .
          <year>1998</year>
          . Vol.
          <volume>10</volume>
          , N. 6. P.
          <volume>905</volume>
          -
          <fpage>925</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Patwary M. M.</surname>
          </string-name>
          <article-title>A</article-title>
          .,
          <string-name>
            <surname>Satish</surname>
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sundaram</surname>
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Manne</surname>
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Habib</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dubey</surname>
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Pardicle: Parallel Approximate</surname>
          </string-name>
          Density-Based Clustering // International Conference for High Performance Computing, Networking,
          <source>Storage and Analysis, November 16-21</source>
          ,
          <year>2014</year>
          , New Orleans, LA, USA, Proceedings. IEEE. P.
          <volume>560</volume>
          -
          <fpage>571</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Reynolds</surname>
            <given-names>A. P.</given-names>
          </string-name>
          , Richards G., de la Iglesia B.,
          <string-name>
            <surname>Rayward-Smith V. J. Clustering</surname>
          </string-name>
          <article-title>Rules: a Comparison of Partitioning and Hierarchical Clustering Algorithms //</article-title>
          <source>Journal of Mathematical Modelling and Algorithms</source>
          .
          <year>2006</year>
          . Vol.
          <volume>5</volume>
          ,
          <string-name>
            <surname>N.</surname>
          </string-name>
          <year>4</year>
          . P.
          <volume>475</volume>
          -
          <fpage>504</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Wei</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>An</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dong</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Li H. A Novel</surname>
          </string-name>
          micro
          <article-title>-Blog Sentiment Analysis Approach by Longest Common sequence and k-</article-title>
          <source>Medoids // 18th Pacific Asia Conference on Information Systems</source>
          , June 24-28,
          <year>2014</year>
          , Chengdu, China, Proceedings. P.
          <volume>38</volume>
          -
          <fpage>47</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Xiao</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Feng</surname>
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leung</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sum</surname>
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>GPU Accelerated Spherical K-Means</surname>
            <given-names>Training</given-names>
          </string-name>
          // 20th International Conference on
          <source>Neural Information Processing, November 3-7</source>
          ,
          <year>2013</year>
          , Daegu, Korea, Proceedings. Springer. P.
          <volume>392</volume>
          -
          <fpage>399</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Yan</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhang</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yang</surname>
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Su</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zheng</surname>
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>DVT-PKM: An Improved GPU Based Parallel K-Means</surname>
            <given-names>Algorithm</given-names>
          </string-name>
          // 10th International Conference on Intelligent
          <source>Computing Methodologies, August 3-6</source>
          ,
          <year>2014</year>
          , Taiyuan, China, Proceedings. Springer. P.
          <volume>591</volume>
          -
          <fpage>601</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Zhang</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xia</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhu</surname>
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shen</surname>
            <given-names>J</given-names>
          </string-name>
          .
          <source>Mining Related Information of Trafic Flows on Lanes by k-Medoids // 11th International Conference on Fuzzy Systems and Knowledge Discovery, August 19-21</source>
          ,
          <year>2014</year>
          , Xiamen, China, Proceedings. P.
          <volume>390</volume>
          -
          <fpage>396</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Zheng</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wu</surname>
            <given-names>J</given-names>
          </string-name>
          .
          <article-title>Accelerate K-means Algorithm by Using GPU in the Hadoop Framework // Web-Age Information Management</article-title>
          , June 16-18,
          <year>2014</year>
          , Macau, China, Proceedings. Springer. P.
          <volume>177</volume>
          -
          <fpage>186</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>