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

kNN

  • 1.
    T´opicos Introdu¸c˜ao TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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 TruncatedSort 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