Upload
dinhhanh
View
212
Download
0
Embed Size (px)
Citation preview
Introducao Metodologia Arduino GPU Android Conclusao
Processamento de audio em tempo real emdispositivos computacionais de alta disponibilidade
e baixo custo
Andre J. Bianchi
21/10/2013
1 / 33
Introducao Metodologia Arduino GPU Android Conclusao
1 Introducao
2 Metodologia
3 Arduino
4 GPU
5 Android
6 Conclusao
2 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Proposta de pesquisa
DSPADC DACx (n) y (n ) y (t )x (t )
f s = 1__T
f s = 1__T
Objetivo:
Avaliacao do desempenho . . .
. . . de diferentes dispositivos computacionais . . .
. . . para processamento de audio em tempo real.
3 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Metodologia desenvolvida
Passos preliminares:
Identificacao de modelos computacionais.
Escolha de dispositivos.
Escolha de algoritmos de processamento em tempo real.
Metricas e metodos para avaliacao de desempenho.
Experimentacao:
Entrada, saıda e agendamento.
Testes e resultados.
Analise.
4 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Identificacao de modelos computacionais de interesse
Criterios gerais:
Baixo custo e alta disponibilidade.
Licencas de uso.
Expressao computacional.
Criterios “musicais”:
Entrada e saıda de audio.
Sensores.
Mobilidade.
5 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Escolha de modelos computacionais e dispositivos
Microcontroladores: Arduino.
Processadores paralelos: Placas GPU.
Dispositivos moveis: Sistema operacional Android.
6 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Escolha de algoritmos de processamento em tempo real
Transformada Rapida de Fourier (FFT):
X (k) =
{Ek + e
−2πiN
kOk se k < N2
Ek−N2
+ e−2πiN
(k−N2
)Ok−N2
se k ≥ N2
Convolucao no domınio do tempo:
w = x ∗ h ⇒ wr =N−1∑m=0
xmhr−m ⇒ Wk = XkHk .
Sıntese aditiva:
y(n) =K∑
k=1
rk(n) sin
(2πfkn
R
), n ≥ 0.
Phase Vocoder: FFT + Sıntese aditiva.7 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Metricas e metodos para avaliacao de desempenho
Parametros determinantes da complexidade computacional:
Tamanho do bloco (perıodo em amostras).
Parametros especıficos de cada algoritmo.
Metricas de avaliacao:
Tempo de processamento de um bloco de amostras.
Instancia maxima viavel em tempo real.
8 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Arduino
Microcontrolador Atmel AVR ATmega328P:
CPU RISC, 16 MHz, 8 bits.
2 KB SRAM.
Portas digitais com ADC e PWM.
9 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Entrada e saıda de audio e agendamento (ATMega328P)
Caracterısticas gerais:
ADC de 8 e 10 bits, ate ≈ 80 KHz.
PWM com 8 ou 16 bits.
Agendamento por interrupcao.
Configuracoes dos testes:
Entrada e saıda de 8 bits.
Frequencia de operacao: 31250 Hz.
10 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Convolucao no Arduino
0
1
2
3
4
5
6
7
8
9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Te
mp
o d
e s
inte
se
(m
s)
Ordem do filtro
Convolucao no dominio do tempo (mult/div)
0
1
2
3
4
5
6
7
8
9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Te
mp
o d
e s
inte
se
(m
s)
Ordem do filtro
Convolucao no dominio do tempo (bit-shifting var.)
0
1
2
3
4
5
6
7
8
9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Te
mp
o d
e s
inte
se
(m
s)
Ordem do filtro
Convolucao no dominio do tempo (bit-shifting const.)
bloco de 32 amostrasbloco de 64 amostras
bloco de 128 amostrasbloco de 256 amostras
11 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Sıntese aditiva no Arduino
0
1
2
3
4
5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Tem
po d
e s
inte
se (
ms)
Numero de osciladores
Sintese Aditiva em Arduino (usando um loop)
0
1
2
3
4
5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Tem
po d
e s
inte
se (
ms)
Numero de osciladores
Sintese Aditiva em Arduino (using inline code)
bloco de 32 amostrasbloco de 64 amostras
bloco de 128 amostras
12 / 33
Introducao Metodologia Arduino GPU Android Conclusao
FFT no Arduino (a 1953 Hz)
0
50
100
150
200
250
300
... 64 128 256 512
Tem
po d
e a
nalis
e (
ms)
Tamanho do bloco de amostras
FFT no Arduino (R=1953 Hz)
fft usando sin()fft com consulta a tabela
periodo teorico do ciclo DSP
13 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Processamento de audio em tempo real em Arduino
Pontos importantes a serem observados:
Configuracao de relogios e pre-escalonadores.
Escolha dos tipos (byte, unsigned long, int, float, etc).
Uso de lacos e condicionais.
Consulta a variaveis e vetores.
Restricao das instancias dos algoritmos.
14 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Entrada, saıda e agendamento na GPU
INPUT
Pd GPU cores
INPUT
OUTPUT
Host
Tim
e
GPU
Host memory GPU memory
memcpy(dptr, hptr, n, hostToDevice)
Pd GPU cores
Host memory GPU memory
INPUT INPUT
Pd GPU cores
Host memory GPU memory
INPUT XXXXXX
run_kernel(dptr, n)
Pd GPU cores
Host memory GPU memory
INPUT OUTPUT
memcpy(hptr, dptr, n, deviceToHost)
Pd GPU cores
Host memory GPU memory
OUTPUTOUTPUT
Entrada, saıda e agendamento:
Pure Data.
Medicao dos tempos de:
Transferencia de memoria.
Execucao do programa.
Total de ida e volta.
16 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Modelos de placa e implementacoes
GF100GL GTX275 GTX400
CUDA cores 256 240 448
Memoria RAM (MB) 2000 896 1280
Banda de memoria (GB/s) 89.6 127.0 133.9
Implementacoes paralelas:
Convolucao.
FFT (da API).
Phase Vocoder (FFT + Sıntese Aditiva).
17 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Convolucao na GPU
2
4
6
8
10
... 0,37 0,74 1,48 2,97
Dura
cao (
s)
Periodo do bloco (s)
Tempo de convolucao - todas as placas
GTX275GTX470
GF100GLrestricao de tempo real
18 / 33
Introducao Metodologia Arduino GPU Android Conclusao
FFT na GPU
0
0.5
1
1.5
2
2.5
3
... 0,37 0,74 1,48 2,97
Du
raca
o (
s)
Periodo do bloco (s)
Tempo de roundtrip da FFT - GTX275
0
0.5
1
1.5
2
2.5
3
... 0,37 0,74 1,48 2,97
Du
raca
o (
s)
Periodo do bloco (s)
Tempo de roundtrip da FFT - GTX470
0
0.5
1
1.5
2
2.5
3
... 0,37 0,74 1,48 2,97
Du
raca
o (
s)
Periodo do bloco (s)
Tempo de roundtrip da FFT - GF100GL
hospedeiro para dispositivotempo de kernel
dispositivo para hospedeiroroundtrip
restricao de tempo real
19 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Sıntese aditiva do Phase Vocoder na GPU
5
10
15
20
25
30
... 0,37 0,74 1,48 2,97
Du
raca
o (
s)
Periodo do bloco (s)
Tempo de sintese do PV - GTX275
5
10
15
20
25
30
... 0,37 0,74 1,48 2,97
Du
raca
o (
s)
Periodo do bloco (s)
Tempo de sintese do PV - GTX470
5
10
15
20
25
30
... 0,37 0,74 1,48 2,97
Du
raca
o (
s)
Periodo do bloco (s)
Tempo de sintese do PV - GF100GL
1. interpolacao cubica2. interpolacao linear3. consulta truncada
4. funcao seno5. interpolacao de textura
sem calculorestricao de tempo real
20 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Processamento de audio em tempo real em GPU
Algumas conclusoes:
Modelos nao profissionais podem valer a pena.
Tempo de transferencia e da FFT sao similares.
Cuidado com o uso de operacoes da GPU.
21 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Processamento em tempo real em Android
Kernel do Linux.
Entrada de audio:microfone, chamada,arquivo, rede, etc.
Saıda de audio: 8 e 16bits.
Agendamento da API.
22 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Aplicativo para Android e testes
Cenario dos testes:
Chamado com instrucoes.
Envio dos resultados poremail.
35 aparelhos testados.
14 algoritmos em 2 fases.
23 / 33
Introducao Metodologia Arduino GPU Android Conclusao
FFT no Android (API 2)
0
20
40
60
80
100
120
140
160
180
512 1024 2048 4096 8192
Dura
tion (
ms)
Block size
Tempo de execucao da rotina DSP - Algoritmo FFT - API 2 (blocos maiores)
GT-I8150BXT320
LG-P698f (2)MK16i
GT-P1000LMB860
LG-P500h (1)GT-S5360L
LG-P698f (1)GT-I9000B
GT-S5360BBlade
LG-P500h (2)Lenovo A750
GT-S5830iGT-I8530
R800iDSP period
24 / 33
Introducao Metodologia Arduino GPU Android Conclusao
FFT no Android (API 4)
0
20
40
60
80
100
120
140
160
180
512 1024 2048 4096 8192
Dura
tion (
ms)
Block size
Tempo de execucao da rotina DSP - Algoritmo FFT - API 4 (blocos maiores)
MZ607Nexus 7 (1)GT-S7562GT-I8190LGT-I9000B
Nexus 4Galaxy Nexus
MB526Transformer TF101
GT-I9300 (2)
GT-I9300 (3)LG-P990
ST25aTransformer Prime TF201
Nexus 7 (2)GT-I9300 (1)
LT26iNB0026
DSP period
25 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Convolucao no Android (API 2)
0
50
100
150
200
250
GT-I8150B
XT320
LG-P698f (2)
MK16i
GT-P1000L
MB860
LG-P500h (1)
GT-S5360L
LG-P698f (1)
GT-I9000B
GT-S5360B
Blade
LG-P500h (2)
Lenovo A750
GT-S5830i
GT-I8530
R800i
Num
ero
de a
mostr
as
Valor medio do tamanho maximo de bloco para convolucao em tempo real - API 2
26 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Convolucao no Android (API 4)
0
50
100
150
200
250
MZ607
Nexus 7 (1)
GT-S7562
GT-I8190L
GT-I9000B
Nexus 4
Galaxy N
exus
MB526
Transformer TF101
GT-I9300 (2)
GT-I9300 (3)
LG-P990
ST25a
Transformer Prim
e TF201
Nexus 7 (2)
GT-I9300 (1)
LT26i
NB0026
Num
ero
de a
mostr
as
Valor medio do tamanho maximo de bloco para convolucao em tempo real - API 4
27 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Sıntese aditiva no Android (API 2)
0
20
40
60
80
100
120
140
GT-I8150B
XT320
LG-P698f (2)
MK16i
GT-P1000L
MB860
LG-P500h (1)
GT-S5360L
LG-P698f (1)
GT-I9000B
GT-S5360B
Blade
LG-P500h (2)
Lenovo A750
GT-S5830i
GT-I8530
R800i
Num
ero
de o
scila
dore
sValor medio do numero maximo de osciladores na Sintese Aditiva - API 2
Funcao sin() da APIconsulta truncada
consulta c/ interpolacao linearconsulta c/ interpolacao cubica
28 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Sıntese aditiva no Android (API 4)
0
20
40
60
80
100
120
140
MZ607
Nexus 7 (1)
GT-S7562
GT-I8190L
GT-I9000B
Nexus 4
Galaxy N
exus
MB526
Transformer TF101
GT-I9300 (2)
GT-I9300 (3)
LG-P990
ST25a
Transformer Prim
e TF201
Nexus 7 (2)
GT-I9300 (1)
LT26i
NB0026
Num
ero
de o
scila
dore
sValor medio do numero maximo de osciladores na Sintese Aditiva - API 4
Funcao sin() da APIconsulta truncada
consulta c/ interpolacao linearconsulta c/ interpolacao cubica
29 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Processamento de audio em tempo real em Android
Pontos importantes a serem observados:
Heterogeneidade de capacidade computacional.
Versao da API influencia o desempenho.
30 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Consideracoes finais
A metodologia apresentada pode ser usada para avaliacao dequalquer dispositivo computacional.
Foram estudados modelos com possibilidades e restricoesdistintas.
Foram evidenciadas as caracterısticas e o desempenhode cadaum para o processamento de audio em tempo real.
31 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Publicacoes e apresentacoes em congressos
2012:
Bianchi (2012). Processamento de audio em tempo real em sistemasAndroid. Terceiro Workshop em Musica Ubıqua.
Bianchi e Queiroz (2012a). Measuring the performance of realtime DSPusing pure data and gpu. Proceedings of the International ComputerMusic Conference 2012, pp. 124-127.
Bianchi e Queiroz (2012b). On the performance of real-time DSP onAndroid devices. Proceedings of the 9th Sound and Music ComputingConference, pp. 113-120.
2013:
Bianchi e Queiroz (2013). Real time digital audio processing usingArduino. Proceedings of the Sound and Music Computing Conference2013, pp. 538-545.
Carvalho Jr, Rosan, Bianchi e Queiroz (2013). FFT benchmark onAndroid devices: Java versus JNI. Proceedings of the 14th BrazilianSymposium on Computer Music. (a ser publicado)
32 / 33
Introducao Metodologia Arduino GPU Android Conclusao
Fim!
Obrigado pela atencao!
Contato: [email protected]
Grupo de Computacao Musical do IME/USP:http://compmus.ime.usp.br/
Esta apresentacao: http://www.ime.usp.br/~ajb/
33 / 33