• Nenhum resultado encontrado

Processamento de ´audio em tempo real utilizando dispositivos n˜ao convencionais:

N/A
N/A
Protected

Academic year: 2022

Share "Processamento de ´audio em tempo real utilizando dispositivos n˜ao convencionais:"

Copied!
41
0
0

Texto

(1)

Processamento de ´ audio em tempo real utilizando dispositivos n˜ ao convencionais:

Processamento paralelo com Pure Data e GPU.

Andr´e Jucovsky Bianchi

ajb@ime.usp.br

Departamento de Ciˆencia da Computa¸ao Instituto de Matem´atica e Estat´ıstica

Universidade de S˜ao Paulo

1 de outubro de 2011

(2)

Objetivos da apresenta¸c˜ ao

I Apresentar o ambiente Pure Datapara processamento de sinais em tempo real.

I Apresentar a plataformaGPUpara processamento paralelo de prop´osito geral.

I Motivar a utiliza¸c˜ao de processamento paralelo utilizando Pure Data e GPU e apresentar alguns trabalhos em andamento.

(3)

Estrutura da apresenta¸c˜ ao

Processamento em tempo real utilizando dispositivos n˜ao convencionais

Pure Data (Pd)

GPU

Pd + GPU

Pr´oximos passos

(4)

Estrutura da apresenta¸c˜ ao

Processamento em tempo real utilizando dispositivos n˜ao convencionais

Pure Data (Pd)

GPU

Pd + GPU

Pr´oximos passos

(5)

Processamento de ´ audio em tempo real utilizando dispositivos n˜ ao convencionais

Objetivos do trabalho

Explorarlimites epossibilidades de processamento de ´audio em tempo real utilizando dispositivosacess´ıveisem termos de custo e tecnologia.

Estudos de caso:

I Microcontroladores: Arduino.

I Dispositivos m´oveis: Android OS.

I Processadores paralelos: GPU.

(6)

Arduino

(7)

Arduino

ADC e DAC nativos no microcontrolador

Amostragemde um sinal de entrada utilizando ADC do microcontrolador:

I At´e 10 bits de resolu¸c˜ao.

I 100µs para obten¸c˜ao de uma amostra.

I 10.000 Hz de taxa de amostragem.

Gera¸c˜ao de sinais de ´audio:

I PWM com resolu¸c˜ao de 8 bits.

I Frequˆencias at´e 500 Hz.

(8)

Arduino com Pure Data

(9)

Android

Figura: Android rodando em um tablet.

(10)

Android com Pure Data

A bibliotecalibpd empacota as fun¸c˜oes do Pd e:

I separa as fun¸c˜oes de PDS da interface gr´afica e de drivers;

I transforma o Pd em uma biblioteca de s´ıntese e processamento de ´audio; e

I permite a comunica¸c˜ao com c´odigo em outros ambientes.

J´a existem vers˜oes para Android e iOS:

I http://gitorious.org/pdlib

(11)

GPU: Graphics Processing Unit

Figura: Placa com GPU.

(12)

Estrutura da apresenta¸c˜ ao

Processamento em tempo real utilizando dispositivos n˜ao convencionais

Pure Data (Pd)

GPU

Pd + GPU

Pr´oximos passos

(13)

Pure Data (Pd)

(14)

Pure Data (Pd)

Figura: Phase Vocoder, sampler, autotuner e ress´ıntese com controle arbitr´ario de parciais em tempo real.

(15)

Pure Data (Pd)

Caracter´ısticas do projeto:

I Extens´ıvel emC.

I Licen¸ca livre.

I Comunidade (suporte, c´odigo e manuten¸c˜ao).

Caracter´ısticas da ferramenta:

I Processamento em tempo real.

I Interface com in´umeros dispositivos.

I Trabalha com ´audio, imagem e v´ıdeo.

(16)

Pure Data (Pd)

Caracter´ısticas do processamento em tempo real no Pd:

I Os sinais fluem atrav´es de objetos e s˜ao modificados.

I A computa¸c˜ao ´e realizada em blocos com fatores de sobreposi¸c˜ao e reamostragem.

I Um “contexto PDS” ´e armazenado para cada tela.

I Algoritmo de ordena¸c˜ao das rotinas de PDS.

I Mem´oria compartilhada para execu¸c˜ao das fun¸c˜oes de PDS.

I Aloca¸c˜ao de sinais para os inlets e outlets de cada objeto, compartilhando uma mesma por¸c˜ao de mem´oria sempre que poss´ıvel.

I Transferˆencia de mem´oria ocorre somente quando existe altera¸c˜ao no tamanho do bloco ou na taxa de amostragem.

(17)

Pd e paralelismo

Motiva¸c˜oes para o processamento paralelo de sinais no Pd:

I Implementa¸c˜ao do modelo de processamento de fluxos de dados.

I Alta taxa de fluxo de dados.

I Processamento de grande n´umero de canais.

I Processamento de blocos de dados grandes.

I Fun¸c˜oes PDS do Pd com paralelismo de dados diretamente mape´avel para GPU.

I Aplica¸c˜ao da tecnologia de forma seletiva de forma a trazer o maior benef´ıcio para cada aplica¸c˜ao.

(18)

Pd e paralelismo

Possibilidades de extens˜ao:

I Patches.

I Externals.

I Modifica¸c˜ao do c´odigo fonte.

(19)

Pd e CUDA

Projeto em andamento: PdCUDA.

I Interface de Pd com CUDA.

I GPGPU, processamento de fluxos de dados e Pd.

I Prova de conceito e avalia¸c˜ao de desempenho.

(20)

Estrutura da apresenta¸c˜ ao

Processamento em tempo real utilizando dispositivos n˜ao convencionais

Pure Data (Pd)

GPU

Pd + GPU

Pr´oximos passos

(21)

GPU: Graphics Processing Unit

Pipeline gr´afica

Figura: Pipelinede renderiza¸c˜ao 3D.

(22)

GPU: Graphics Processing Unit

Motiva¸ao: sistemas gr´aficos tradicionais

Caracter´ısticas dos sistemas gr´aficos:

I Alto requerimento computacional.

I Alto grau deparalelismo.

I Altataxa de fluxo de dados.

Quest˜oes cr´ıticas em sistemas gr´aficos:

I Computa¸c˜ao versuscomunica¸c˜ao.

I Computa¸c˜ao versuscontrole.

I Paralelismo de dados e de tarefas.

I Balan¸co entre fun¸c˜oes fixase unidades program´aveis.

I Performance versus flexibilidade.

(23)

GPU: Graphics Processing Unit

Compara¸ao entre CPU e GPU

Figura: A GPU devota mais transistores para processamento do que para controle de fluxo e endere¸camento.

(24)

GPU: Graphics Processing Unit

Pipeline gr´afica

Processamento de v´ertices Gera¸c˜ao de fragmentos Processamento de fragmentos

Composi¸c˜ao da imagem

ertices, arestas e outros parˆametros

Primitivas gr´aficas vis´ıveis

Fragmentos

Pixeis

Texturas

(25)

GPU: Graphics Processing Unit

Processamento de prop´osito geral utilizando o modelo de fluxo de dados

Processamento program´avel Processamento program´avel Processamento program´avel Processamento program´avel

Especifica¸ao do dom´ınio do problema

Tipos arbitr´arios

Tipos arbitr´arios

Tipos arbitr´arios

Mem´oria

(26)

T´ ecnicas de programa¸c˜ ao para GPU (1/3)

GPU paragr´aficos

Gera¸c˜ao de imagens:

I Entrada: v´ertices, arestas e texturas.

I Processamento: fun¸c˜oes fixas e program´aveis para processamento de v´ertices, primitivas e fragmentos.

I Sa´ıda: Fluxo de imagens para exibi¸c˜ao na tela.

(27)

T´ ecnicas de programa¸c˜ ao para GPU (2/3)

GPU paraprograma¸ao de prop´osito geral

Programa¸c˜ao de prop´osito geral (modelo antigo):

I Entrada: v´ertices, arestas e texturasque representam tipos de dados em um dom´ınio de computa¸c˜ao de interesse.

I Processamento: fun¸c˜oes fixas e program´aveis para processamento de v´ertices, primitivas e fragmentos.

I Sa´ıda: ´areas de mem´oria com os resultados das opera¸c˜oes.

(28)

T´ ecnicas de programa¸c˜ ao para GPU (3/3)

GPU paraprograma¸ao de prop´osito geral

Programa¸c˜ao de prop´osito geral (modelo recente):

I Entrada: especifica¸c˜ao da computa¸c˜ao atrav´es de modelo de fluxo de dados.

I Processamento: aplica¸c˜ao das fun¸c˜oes nos fluxos de entrada utilizando paralelismo de tarefas e de dados.

I Sa´ıda: fluxo de dados resultante.

(29)

GPGPU

Problemas adaptados para solu¸ao com GPU

Exemplos de dom´ınios mapeados para GPU:

I Processamento de sinais.

I Simula¸c˜oes biol´ogicas.

I Simula¸c˜oes f´ısicas.

I M´etodos de ´algebra linear.

I M´etodos de equa¸c˜oes diferenciais.

I Indexa¸c˜ao e busca.

(30)

GPU: Processamento de sinais usando GPU.

Trabalhos relacionados:

I FFT paralela.

I DCT paralela.

I DWT paralela.

I Audio 3D.´

I GPGPU e arcabou¸cos para processamento de fluxos de dados.

I Integra¸c˜ao com Pure Data.

(31)

Programa¸c˜ ao de prop´ osito geral usando GPU

Exemplo: Transformada de Fourier

X

j

=

N−1

X

k=0

x

k

.e

−ijk2π/N

(32)

GPU: Graphics Processing Unit

Propostas de estudo

Processamentos computacionalmente pesados:

I Morphing em tempo real.

I Phase Vocoder com an´alise e ress´ıntese em tempo real.

I Auraliza¸c˜ao utilizando respostas impulsivas medidas ou simula¸c˜ao atrav´es de modelos geom´etricos.

(33)

Estrutura da apresenta¸c˜ ao

Processamento em tempo real utilizando dispositivos n˜ao convencionais

Pure Data (Pd)

GPU

Pd + GPU

Pr´oximos passos

(34)

Pd + GPU

PdCUDA

Caracter´ısticas da plataforma CUDA:

I Voltada para GPGPU.

I Placas de v´ıdeo→ coprocessadores paralelos.

I Aritm´etica de vetores e l´ogica organizada emblocos de threads.

I Hardware program´avel para opera¸c˜oes de ponto flutuante.

I Foi escolhida para este projeto por ser mais adequado para GPGPU, menos geral (e portanto menos complexo) que OpenCL, mas facilmente adapt´avel.

(35)

Pd + GPU

PdCUDA

Objetivos do projeto PdCUDA:

I Permitir ajustes para melhor desempenho de aplica¸c˜oes espec´ıficas.

I Gerenciar sistematicamente o desempenho sempre que for poss´ıvel.

I Minimizar a transferˆencia de dados e, se poss´ıvel, execut´a-la concorrentemente com outrasthreads.

I Produzir uma interface de usu´ario que n˜ao seja amb´ıgua.

I Adaptar o agendador PDS do Pd para levar em conta diferentes tipos de GPU.

I Medir o desempenho das rotinas em GPU.

I Atingir eficiˆencia no desempenho do PDS.

I Utilizar o melhor tipo de mem´oria para cada fun¸c˜ao (exemplo:

osciladores de leitura a tabela utilizando texturas).

I Prover um ambiente para o desenvolvimento de patches e externals.

(36)

Pd + GPU

PdCUDA

Figura: Casos de uso em ordem crescente de complexidade. Retˆangulos escuros representam fun¸c˜oes executadas na GPU.

(37)

Pd + GPU

PdCUDA

Pontos importantes para implementa¸c˜ao:

I Tradu¸c˜ao de rotinas de PDS e estruturas de dados.

I Extens˜ao do contexto PDS.

I Sobreposi¸c˜ao de aloca¸c˜ao de mem´oria e computa¸c˜ao.

I Modifica¸c˜oes no agendamento das rotinas de PDS:

I Busca em largura nas rotinas de aloca¸ao.

I Busca em profundidade nas rotinas de computa¸ao, levando em conta a dependˆencia da transferˆencia de mem´oria.

I Separa¸c˜ao entre espa¸cos de mem´oria.

I Interface de usu´ario.

(38)

Pd + GPU

PdCUDA

Medi¸c˜ao de desempenho:

I Taxa de processamento (throughput): GFLOPS.

I Uso de mem´oria: MB.

I Taxa de transferˆencia de dados: MB/s.

I Latˆencia na transferˆencia de mem´oria: µs.

I Instru¸c˜oes por ciclo.

I Taxas decache-hits e cache-misses.

I Instru¸c˜oes por byte.

(39)

Estrutura da apresenta¸c˜ ao

Processamento em tempo real utilizando dispositivos n˜ao convencionais

Pure Data (Pd)

GPU

Pd + GPU

Pr´oximos passos

(40)

Pd + GPU

Pr´oximos passos

I Rodar o c´odigo numa placa NVIDIA.

I Implementa¸c˜ao de uma interface para visualiza¸c˜ao da an´alise de desempenho.

(41)

Obrigado pela aten¸c˜ ao.

Dados de contato:

I Meu email: ajb@ime.usp.br

I Esta apresenta¸c˜ao: http://www.ime.usp.br/~ajb/

I CM no IME:http://compmus.ime.usp.br/

Referências

Documentos relacionados

Durante a pandêmia poderá prorrogar o período estabelecido de 14 dias para fazer os procedimentos de registro de mudança.. As consultas feitas diretamente no guichê do serviço

Se a seu item opcional Compaq estiver instalado em um Produto de Hardware da Compaq, a Compaq poderá fornecer serviços em garantia durante o Período de Garantia Limitada

A razão pela qual D’us dividiu o mar foi para preparar os judeus para receber a Torá e para lhes ensinar como usá-la depois. No Monte Sinai todos os mundos espirituais foram

O rating desta faixa indica instituições com adequada política de crédito, mas que possuem uma ou mais áreas com fragilidades, com condições, no entanto, de superá-las no

GUILHERME TORRES AFFONSO LUCAS ALMEIDA GONÇALVES MATEUS PEREIRA DOS SANTOS RICARDO LAURINDO PEREIRA ALEXANDRE DE SOUZA FERREIRA RICARDO SILVA PEREIRA DA CRUZ FELIPE GARCIA DOS

História Protótipo Casos de Teste Refinamento Planning Build Geração de Massa Testes Homologação Responsável: time de QA Entradas: • Histórias; • Protótipos; • Casos

Na tentativa de compreender a autogestão de forma mais prática e menos idealizada, “aquele espírito de comandar”, ao qual refere a estudante pode, em diferentes momentos, apontar

Thus, in order to optimise power consumption, it was included in the design of the RF transceiver, the use of control signals.. With these control signals it is possible to enable