SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Parallel Search of k-Nearest Neighbors with
Synchronous Operations
Maur´ıcio Jourdan, Paulo Henrique,
Pedro Braganick, Vin´ıcius Coelho
Instituto de Inform´atica
Universidade Federal de Goi´as (UFG)
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
T´opicos
1 Introdu¸c˜ao
2 Truncated Sort Algorithms
3 Codifica¸c˜ao
4 Comparando as abordagens
5 Resultados Obtidos
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Introdu¸c˜ao
O artigo em quest˜ao nos mostra uma forma de localizar,
paralelamente, k-vizinhos mais pr´oximos de forma s´ıncrona em um
espa¸co vetorial atrav´es de uma arquitetura de v´arios n´ucleos
(many-core) que favorece algor´ıtmos com opera¸c˜oes s´ıncronas e de
alto custo.
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Introdu¸c˜ao
O artigo em quest˜ao nos mostra uma forma de localizar,
paralelamente, k-vizinhos mais pr´oximos de forma s´ıncrona em um
espa¸co vetorial atrav´es de uma arquitetura de v´arios n´ucleos
(many-core) que favorece algor´ıtmos com opera¸c˜oes s´ıncronas e de
alto custo.
A busca pelos vizinhos mais pr´oximos ´e feita atrav´es de sele¸c˜oes e
ordena¸c˜oes, sendo que para cada ordena¸c˜ao foi testado um
algoritmo diferente afim de classificar qual seria o mais eficiente
em dada condi¸c˜ao de vizinhos (k).
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Introdu¸c˜ao (Cont.)
A implementa¸c˜ao e desenvolvimento de algoritmos de busca por
k-vizinhos mais pr´oximos ´e importante na quest˜ao de performance
de tempo pois suas aplica¸c˜oes, na maioria dos casos, est˜ao em
ambientes onde o tempo ´e um fator cr´ıtico.
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Introdu¸c˜ao (Cont.)
A implementa¸c˜ao e desenvolvimento de algoritmos de busca por
k-vizinhos mais pr´oximos ´e importante na quest˜ao de performance
de tempo pois suas aplica¸c˜oes, na maioria dos casos, est˜ao em
ambientes onde o tempo ´e um fator cr´ıtico.
Logo, o processamento e an´alise devem ser feitas em tempo real,
tal como minera¸c˜ao de dados em imagens/v´ıdeos, detec¸c˜ao de
intrusos em uma rede, categoriza¸c˜ao de texto, entre outras
aplica¸c˜oes.
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Truncated Sort Algorithms
Algorithm Serial Parallel Truncation Method
BubbleSort nk k(log n-log k+1) k reversal passes
MergeSort nlog k k(logn − logk + 1) eliminate half
InsertionSort nk k(logn − logk + 1) length-k array
HeapSort nlog k k(logn − logk + 1) max-heap of size k
QuickSort nk k(log n-log k+1) eliminate half
RadixSort nb b reverse radix (MSB)
BitonicSort nlog2 k log k log n length-k bitonic
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
C´odigo em CUDA
1 #d e f i n e THREADS 512 // 2ˆ9
2 #d e f i n e BLOCKS 32768 // 2ˆ15
3 #d e f i n e NUM VALS THREADS∗BLOCKS
4
5 void p r i n t e l a p s e d ( c l o c k t s t a r t , c l o c k t stop ){
6 double e l a p s e d = (( double ) ( stop − s t a r t ) ) / CLOCKS PER SEC ;
7 p r i n t f ( ” Elapsed time : %.3 f s n” , e l a p s e d ) ;
8 }
9
10 f l o a t random float (){
11 return ( f l o a t ) rand () /( f l o a t )RAND MAX;
12 }
13
14 void a r r a y p r i n t ( f l o a t ∗arr , i n t l e n g t h ) {
15 i n t i ;
16 f o r ( i = 0; i < l e n g t h ; ++i )
17 p r i n t f ( ”%1.3 f ” , a r r [ i ] ) ;
18 p r i n t f ( ”n” ) ;
19 }
20
21 void a r r a y f i l l ( f l o a t ∗arr , i n t l e n g t h ){
22 srand ( time (NULL) ) ;
23 i n t i ;
24 f o r ( i = 0; i < l e n g t h ; ++i )
25 a r r [ i ] = random float () ;
26 }
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
C´odigo em CUDA (Cont.)
1 g l o b a l void b i t o n i c s o r t s t e p ( f l o a t ∗dev values , i n t j , i n t k ){
2 unsigned i n t i , i x j ; /∗ S o r t i n g p a r t n e r s : i and i x j ∗/
3 i = t h r e a d I d x . x + blockDim . x ∗ b l o c k I d x . x ;
4 i x j = i ˆ j ;
5
6 /∗ The t h r e a d s with the l owest i d s s o r t the a r r a y . ∗/
7 i f (( i x j )>i ) {
8 i f (( i&k )==0) {
9 /∗ Sort ascending ∗/
10 i f ( d e v v a l u e s [ i ]> d e v v a l u e s [ i x j ] ) {
11 /∗ exchange ( i , i x j ) ; ∗/
12 f l o a t temp = d e v v a l u e s [ i ] ;
13 d e v v a l u e s [ i ] = d e v v a l u e s [ i x j ] ;
14 d e v v a l u e s [ i x j ] = temp ;
15 }
16 }
17 i f (( i&k ) !=0) {
18 /∗ Sort descending ∗/
19 i f ( d e v v a l u e s [ i ]< d e v v a l u e s [ i x j ] ) {
20 /∗ exchange ( i , i x j ) ; ∗/
21 f l o a t temp = d e v v a l u e s [ i ] ;
22 d e v v a l u e s [ i ] = d e v v a l u e s [ i x j ] ;
23 d e v v a l u e s [ i x j ] = temp ;
24 }
25 }
26 }
27 }
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
C´odigo em CUDA (Cont.)
1 void b i t o n i c s o r t ( f l o a t ∗ v a l u e s ){
2 f l o a t ∗ d e v v a l u e s ;
3 s i z e t s i z e = NUM VALS ∗ s i z e o f ( f l o a t ) ;
4
5 cudaMalloc (( void ∗∗) &dev values , s i z e ) ;
6 cudaMemcpy ( dev values , values , s i z e , cudaMemcpyHostToDevice ) ;
7
8 dim3 b l o c k s (BLOCKS, 1 ) ; /∗ Number of b l o c k s ∗/
9 dim3 t h r e a d s (THREADS, 1 ) ; /∗ Number of t h r e a d s ∗/
10
11 i n t j , k ;
12 /∗ Major step ∗/
13 f o r ( k = 2; k <= NUM VALS; k <<= 1) {
14 /∗ Minor step ∗/
15 f o r ( j=k>>1; j >0; j=j >>1) {
16 b i t o n i c s o r t s t e p <<<blocks , threads >>>(dev values , j , k ) ;
17 }
18 }
19 cudaMemcpy ( values , dev values , s i z e , cudaMemcpyDeviceToHost ) ;
20 cudaFree ( d e v v a l u e s ) ;
21 }
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
C´odigo em CUDA (Cont.)
1 i n t main (){
2 c l o c k t s t a r t , stop ;
3
4 f l o a t ∗ v a l u e s = ( f l o a t ∗) malloc ( NUM VALS ∗ s i z e o f ( f l o a t ) ) ;
5 a r r a y f i l l ( values , NUM VALS) ;
6
7 s t a r t = c l o c k () ;
8 b i t o n i c s o r t ( v a l u e s ) ; /∗ I n p l a c e ∗/
9 stop = c l o c k () ;
10 p r i n t e l a p s e d ( s t a r t , stop ) ;
11 }
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Comparando as abordagens
Figure: Radix (pontilhado), TBiS (continuo)
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Comparando as abordagens (Cont.)
Figure: Truncamento ap´os ordena¸c˜ao
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Comparando as abordagens (Cont.)
Figure: Truncamento durante a ordena¸c˜ao
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Resultados Obtidos
Pode-se observar nos testes que o uso do BitonicSort durante o
processo de ordena¸c˜ao necess´ario para a busa kNN foi de 2 a 16
vezes mais r´apido que o uso do RadixSort no mesmo processo (sem
o c´alculo da distˆancia).
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Resultados Obtidos
Pode-se observar nos testes que o uso do BitonicSort durante o
processo de ordena¸c˜ao necess´ario para a busa kNN foi de 2 a 16
vezes mais r´apido que o uso do RadixSort no mesmo processo (sem
o c´alculo da distˆancia).
Com o c´alculo de distˆancia (utilizando CUBLAS em ambos), o
BitonicSort apresentou desempenho de 1,3 a 4 vezes superior.
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations
T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos
Resultados Obtidos (Cont.)
Analisando os gr´aficos, observou-se que o Bitonic e o RadixSort
apresentam basicamente o mesmo gasto de tempo para
transferˆencia de dados e c´alculo da distˆancia. Entretanto, na
ordena¸c˜ao o Bitonic apresentou o resultado acima mencionado.
Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho
Parallel Search of k-Nearest Neighbors with Synchronous Operations

Weitere ähnliche Inhalte

Ähnlich wie kNN ordenação Bitônica

Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Universidade de São Paulo
 
Algoritmos Genéticos para Ajuste de Controlador PID em Sistemas Espaciais
Algoritmos Genéticos para Ajuste de Controlador PID em Sistemas EspaciaisAlgoritmos Genéticos para Ajuste de Controlador PID em Sistemas Espaciais
Algoritmos Genéticos para Ajuste de Controlador PID em Sistemas EspaciaisItalo Pinto Rodrigues
 
Sistemas de comunicação, digital, di.pdf
Sistemas de comunicação, digital, di.pdfSistemas de comunicação, digital, di.pdf
Sistemas de comunicação, digital, di.pdfBNBN31
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...Danilo J. S. Bellini
 
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptxssusera6c5d4
 
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptxLucasCarvalhoGonalve
 
Acessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontroladorAcessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontroladorRodrigo Almeida
 
Programação Funcional (para humanos)
Programação Funcional (para humanos)Programação Funcional (para humanos)
Programação Funcional (para humanos)Pedro Castilho
 
Algoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfAlgoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfCaiqueMiranda7
 
PIPES: Uma linguagem para processamento distribuído de eventos complexos
PIPES: Uma linguagem para processamento distribuído de eventos complexosPIPES: Uma linguagem para processamento distribuído de eventos complexos
PIPES: Uma linguagem para processamento distribuído de eventos complexosJuan Lopes
 
Artigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfArtigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfItaloRainier1
 
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptxLucasCarvalhoGonalve
 
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptxssusera6c5d4
 
Recursividade em C
Recursividade em CRecursividade em C
Recursividade em CCaique Silva
 
Apresentação da minha defesa de dissertação de mestrado
Apresentação da minha defesa de dissertação de mestradoApresentação da minha defesa de dissertação de mestrado
Apresentação da minha defesa de dissertação de mestradorobsonf
 
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em MetadadosOtimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadadosricardoas
 

Ähnlich wie kNN ordenação Bitônica (20)

Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
 
Algoritmos Genéticos para Ajuste de Controlador PID em Sistemas Espaciais
Algoritmos Genéticos para Ajuste de Controlador PID em Sistemas EspaciaisAlgoritmos Genéticos para Ajuste de Controlador PID em Sistemas Espaciais
Algoritmos Genéticos para Ajuste de Controlador PID em Sistemas Espaciais
 
Sistemas de comunicação, digital, di.pdf
Sistemas de comunicação, digital, di.pdfSistemas de comunicação, digital, di.pdf
Sistemas de comunicação, digital, di.pdf
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
 
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx
 
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx
527693023-Aula-03-Sistemas-de-Tempo-Discreto.pptx
 
Acessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontroladorAcessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontrolador
 
Algoritmo cordic
Algoritmo cordicAlgoritmo cordic
Algoritmo cordic
 
Programação Funcional (para humanos)
Programação Funcional (para humanos)Programação Funcional (para humanos)
Programação Funcional (para humanos)
 
Algoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfAlgoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdf
 
PIPES: Uma linguagem para processamento distribuído de eventos complexos
PIPES: Uma linguagem para processamento distribuído de eventos complexosPIPES: Uma linguagem para processamento distribuído de eventos complexos
PIPES: Uma linguagem para processamento distribuído de eventos complexos
 
Artigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfArtigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdf
 
Fit Metrocamp 2016
Fit Metrocamp 2016Fit Metrocamp 2016
Fit Metrocamp 2016
 
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx
 
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx
523084316-Aula-05-Transformada-de-Fourier-de-Tempo-Discreto.pptx
 
Recursividade em C
Recursividade em CRecursividade em C
Recursividade em C
 
Questesdetecnologia ano2002
Questesdetecnologia ano2002Questesdetecnologia ano2002
Questesdetecnologia ano2002
 
Apresentação da minha defesa de dissertação de mestrado
Apresentação da minha defesa de dissertação de mestradoApresentação da minha defesa de dissertação de mestrado
Apresentação da minha defesa de dissertação de mestrado
 
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em MetadadosOtimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
 
26-aula26.pdf
26-aula26.pdf26-aula26.pdf
26-aula26.pdf
 

kNN ordenação Bitônica

  • 1. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Parallel Search of k-Nearest Neighbors with Synchronous Operations Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Instituto de Inform´atica Universidade Federal de Goi´as (UFG) Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 2. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos T´opicos 1 Introdu¸c˜ao 2 Truncated Sort Algorithms 3 Codifica¸c˜ao 4 Comparando as abordagens 5 Resultados Obtidos Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 3. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Introdu¸c˜ao O artigo em quest˜ao nos mostra uma forma de localizar, paralelamente, k-vizinhos mais pr´oximos de forma s´ıncrona em um espa¸co vetorial atrav´es de uma arquitetura de v´arios n´ucleos (many-core) que favorece algor´ıtmos com opera¸c˜oes s´ıncronas e de alto custo. Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 4. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Introdu¸c˜ao O artigo em quest˜ao nos mostra uma forma de localizar, paralelamente, k-vizinhos mais pr´oximos de forma s´ıncrona em um espa¸co vetorial atrav´es de uma arquitetura de v´arios n´ucleos (many-core) que favorece algor´ıtmos com opera¸c˜oes s´ıncronas e de alto custo. A busca pelos vizinhos mais pr´oximos ´e feita atrav´es de sele¸c˜oes e ordena¸c˜oes, sendo que para cada ordena¸c˜ao foi testado um algoritmo diferente afim de classificar qual seria o mais eficiente em dada condi¸c˜ao de vizinhos (k). Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 5. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Introdu¸c˜ao (Cont.) A implementa¸c˜ao e desenvolvimento de algoritmos de busca por k-vizinhos mais pr´oximos ´e importante na quest˜ao de performance de tempo pois suas aplica¸c˜oes, na maioria dos casos, est˜ao em ambientes onde o tempo ´e um fator cr´ıtico. Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 6. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Introdu¸c˜ao (Cont.) A implementa¸c˜ao e desenvolvimento de algoritmos de busca por k-vizinhos mais pr´oximos ´e importante na quest˜ao de performance de tempo pois suas aplica¸c˜oes, na maioria dos casos, est˜ao em ambientes onde o tempo ´e um fator cr´ıtico. Logo, o processamento e an´alise devem ser feitas em tempo real, tal como minera¸c˜ao de dados em imagens/v´ıdeos, detec¸c˜ao de intrusos em uma rede, categoriza¸c˜ao de texto, entre outras aplica¸c˜oes. Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 7. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Truncated Sort Algorithms Algorithm Serial Parallel Truncation Method BubbleSort nk k(log n-log k+1) k reversal passes MergeSort nlog k k(logn − logk + 1) eliminate half InsertionSort nk k(logn − logk + 1) length-k array HeapSort nlog k k(logn − logk + 1) max-heap of size k QuickSort nk k(log n-log k+1) eliminate half RadixSort nb b reverse radix (MSB) BitonicSort nlog2 k log k log n length-k bitonic Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 8. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos C´odigo em CUDA 1 #d e f i n e THREADS 512 // 2ˆ9 2 #d e f i n e BLOCKS 32768 // 2ˆ15 3 #d e f i n e NUM VALS THREADS∗BLOCKS 4 5 void p r i n t e l a p s e d ( c l o c k t s t a r t , c l o c k t stop ){ 6 double e l a p s e d = (( double ) ( stop − s t a r t ) ) / CLOCKS PER SEC ; 7 p r i n t f ( ” Elapsed time : %.3 f s n” , e l a p s e d ) ; 8 } 9 10 f l o a t random float (){ 11 return ( f l o a t ) rand () /( f l o a t )RAND MAX; 12 } 13 14 void a r r a y p r i n t ( f l o a t ∗arr , i n t l e n g t h ) { 15 i n t i ; 16 f o r ( i = 0; i < l e n g t h ; ++i ) 17 p r i n t f ( ”%1.3 f ” , a r r [ i ] ) ; 18 p r i n t f ( ”n” ) ; 19 } 20 21 void a r r a y f i l l ( f l o a t ∗arr , i n t l e n g t h ){ 22 srand ( time (NULL) ) ; 23 i n t i ; 24 f o r ( i = 0; i < l e n g t h ; ++i ) 25 a r r [ i ] = random float () ; 26 } Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 9. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos C´odigo em CUDA (Cont.) 1 g l o b a l void b i t o n i c s o r t s t e p ( f l o a t ∗dev values , i n t j , i n t k ){ 2 unsigned i n t i , i x j ; /∗ S o r t i n g p a r t n e r s : i and i x j ∗/ 3 i = t h r e a d I d x . x + blockDim . x ∗ b l o c k I d x . x ; 4 i x j = i ˆ j ; 5 6 /∗ The t h r e a d s with the l owest i d s s o r t the a r r a y . ∗/ 7 i f (( i x j )>i ) { 8 i f (( i&k )==0) { 9 /∗ Sort ascending ∗/ 10 i f ( d e v v a l u e s [ i ]> d e v v a l u e s [ i x j ] ) { 11 /∗ exchange ( i , i x j ) ; ∗/ 12 f l o a t temp = d e v v a l u e s [ i ] ; 13 d e v v a l u e s [ i ] = d e v v a l u e s [ i x j ] ; 14 d e v v a l u e s [ i x j ] = temp ; 15 } 16 } 17 i f (( i&k ) !=0) { 18 /∗ Sort descending ∗/ 19 i f ( d e v v a l u e s [ i ]< d e v v a l u e s [ i x j ] ) { 20 /∗ exchange ( i , i x j ) ; ∗/ 21 f l o a t temp = d e v v a l u e s [ i ] ; 22 d e v v a l u e s [ i ] = d e v v a l u e s [ i x j ] ; 23 d e v v a l u e s [ i x j ] = temp ; 24 } 25 } 26 } 27 } Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 10. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos C´odigo em CUDA (Cont.) 1 void b i t o n i c s o r t ( f l o a t ∗ v a l u e s ){ 2 f l o a t ∗ d e v v a l u e s ; 3 s i z e t s i z e = NUM VALS ∗ s i z e o f ( f l o a t ) ; 4 5 cudaMalloc (( void ∗∗) &dev values , s i z e ) ; 6 cudaMemcpy ( dev values , values , s i z e , cudaMemcpyHostToDevice ) ; 7 8 dim3 b l o c k s (BLOCKS, 1 ) ; /∗ Number of b l o c k s ∗/ 9 dim3 t h r e a d s (THREADS, 1 ) ; /∗ Number of t h r e a d s ∗/ 10 11 i n t j , k ; 12 /∗ Major step ∗/ 13 f o r ( k = 2; k <= NUM VALS; k <<= 1) { 14 /∗ Minor step ∗/ 15 f o r ( j=k>>1; j >0; j=j >>1) { 16 b i t o n i c s o r t s t e p <<<blocks , threads >>>(dev values , j , k ) ; 17 } 18 } 19 cudaMemcpy ( values , dev values , s i z e , cudaMemcpyDeviceToHost ) ; 20 cudaFree ( d e v v a l u e s ) ; 21 } Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 11. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos C´odigo em CUDA (Cont.) 1 i n t main (){ 2 c l o c k t s t a r t , stop ; 3 4 f l o a t ∗ v a l u e s = ( f l o a t ∗) malloc ( NUM VALS ∗ s i z e o f ( f l o a t ) ) ; 5 a r r a y f i l l ( values , NUM VALS) ; 6 7 s t a r t = c l o c k () ; 8 b i t o n i c s o r t ( v a l u e s ) ; /∗ I n p l a c e ∗/ 9 stop = c l o c k () ; 10 p r i n t e l a p s e d ( s t a r t , stop ) ; 11 } Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 12. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Comparando as abordagens Figure: Radix (pontilhado), TBiS (continuo) Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 13. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Comparando as abordagens (Cont.) Figure: Truncamento ap´os ordena¸c˜ao Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 14. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Comparando as abordagens (Cont.) Figure: Truncamento durante a ordena¸c˜ao Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 15. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Resultados Obtidos Pode-se observar nos testes que o uso do BitonicSort durante o processo de ordena¸c˜ao necess´ario para a busa kNN foi de 2 a 16 vezes mais r´apido que o uso do RadixSort no mesmo processo (sem o c´alculo da distˆancia). Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 16. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Resultados Obtidos Pode-se observar nos testes que o uso do BitonicSort durante o processo de ordena¸c˜ao necess´ario para a busa kNN foi de 2 a 16 vezes mais r´apido que o uso do RadixSort no mesmo processo (sem o c´alculo da distˆancia). Com o c´alculo de distˆancia (utilizando CUBLAS em ambos), o BitonicSort apresentou desempenho de 1,3 a 4 vezes superior. Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations
  • 17. T´opicos Introdu¸c˜ao Truncated Sort Algorithms Bitonic Code Comparando as abordagens Resultados Obtidos Resultados Obtidos (Cont.) Analisando os gr´aficos, observou-se que o Bitonic e o RadixSort apresentam basicamente o mesmo gasto de tempo para transferˆencia de dados e c´alculo da distˆancia. Entretanto, na ordena¸c˜ao o Bitonic apresentou o resultado acima mencionado. Maur´ıcio Jourdan, Paulo Henrique, Pedro Braganick, Vin´ıcius Coelho Parallel Search of k-Nearest Neighbors with Synchronous Operations