A ferramenta proposta neste trabalho, apesar de se mostrar bastante robusta a ruído e conseguir extrair informação de infinitos momentos estatísticos, possui como principal desvantagem a sua elevada complexidade computacional. Visando reduzir essa complexi- dade e o tempo computacional para calcular as assinaturas cicloestacionárias, foi desen- volvido uma versão paralelizada do algoritmo CPD proposto na seção 5.1, aproveitando- se do poder computacional disponível nos processadores multi-core.
Nos últimos anos, os processadores multi-core vêm sendo utilizados extensivamente em diversos tipos de equipamentos em substituição aos processadores singlecore. Dentre as principais razões para esse fenômeno podem ser citadas a sua maior capacidade de processamento de dados e a possibilidade de redução do seu consumo de energia em função da variação de alguns dos seus parâmetros de funcionamento, tais como frequência de operação e tensão de alimentação [Arthur et al. 2014].
A estratégia de paralelização adotada no algoritmo proposto, ilustrado na Figura 5.15, ocorre em cinco etapas. No diagrama, os blocos sobrepostos representam a carga compu- tacional e as setas indicam as threads em execução.
A etapa 1 consiste na declaração de ponteiros locais a partir dos dados de L e N, em que σ representa o tamanho do kernel. Devido a baixa complexidade computacional, essa etapa é executada de forma serial. Além disso, uma região paralela é criada através da diretiva parallel, em que um bloco de código é executado por múltiplas threads.
A etapa 2 consiste no cálculo da correntropia a cada um dos L blocos. Por padrão, a diretiva pragma omp f or possui uma barreira implícita, em que a execução do código só continua quando todas as threads terminarem as tarefas daquele laço.
A etapa 3 é a que possui o maior custo computacional, onde será computado de forma paralela o valor da CCF para cada bloco L. Em seguida, a etapa 4 calcula a média para cada bloco e por fim, na última etapa, a transformada discreta de Fourier é aplicada pa-
ralelamente para cada τ usando a Fastest Fourier Trans f orm in the West, resultando na CCSD.
Figura 5.15: Diagrama de blocos com o pseudocódigo do algoritmo paralelo proposto para cálculo da CCSD.
Para avaliar o desempenho do algoritmo paralelo proposto, sua codificação foi feita na linguagem C utilizando o OpenMP, com sistema operacional Ubuntu. Todos os testes foram realizados em um servidor equipado com 4 processadores AMD Opteron 6376, cada um contendo 16 núcleos, totalizando 64 núcleos de processamento, com cache L1 de 768KB, L2 16MB e L3 com 16MB. A memória principal do servidor é de 256 GB.
A escalabilidade do algoritmo paralelo proposto foi analisada utilizando duas métri- cas: o speedup e a eficiência. Tais medidas relacionam o tempo de execução do algoritmo paralelo e seu equivalente sequencial. Neste trabalho, as métricas de desempenho foram avaliadas em função do tamanho de blocos (N) e da quantidade desses blocos (L).
O speedup é uma métrica que mede quantas vezes o algoritmo paralelo é mais rápido que o sequencial [Amdahl 1967]. O cálculo do speedup é dado por:
Sp=
Ts
Tp
, (5.11)
em que Ts é o tempo de execução do algoritmo sequencial e Tp, o do programa paralelo
utilizando p núcleos. Em tese, e a priori, é esperado que um programa paralelo execu- tado em uma máquina com p processadores tenha um tempo de execução p vezes mais rápido que seu equivalente sequencial, ou seja, Sp= p. Nesse caso, diz-se ter obtido um
speeduplinear ou ideal. Na Figura 5.16, observa-se um speedup praticamente linear para a configuração N = 128 e L = 32. Por outro lado, para N = 512 e L = 32, 64 e 128 a taxa de crescimento do speedup diminui com o aumento de processadores. Isso ocorre porque ao aumentar a quantidade de processadores, mantendo o tamanho do problema constante, a quantidade de trabalho do processador será cada vez menor, distanciando as curvas do speeduplinear.
Também na Figura 5.16, observa-se, nas curvas para (N = 256;L = 16), (N = 512;L = 64) e (N = 512;L = 8), um fenômeno denominado de speedup superliner. Isso acontece quando obtem-se um speedup maior que o ideal, ou seja, Sp> p. A justificativa para esse
efeito é devido a hierarquia de memórias do microcomputador utilizado, onde o aumento do uso da memória cache supera as limitações da memória principal. A Tabela 5.2 de- monstra o poder da arquitetura paralela na economia de tempo de resposta do algoritmo.
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 20 40 60 80 100 120 Processadores Speedup Ideal N:128 L:32 N:128 L:64 N:256 L:16 N:256 L:32 N:512 L:8 N:512 L:32 N:512 L:64 N:512 L:128
Figura 5.16: Speedup para diversos valores de tamanho de blocos (N) e quantidade de blocos (L), variando-se a quantidade de processadores p = 1,2,...,64.
Node Processadores Tempo(s) L=8;N=512 Tempo(s) L=64;N=512
1 179,7 2153,6 6 23,8 299,1 12 12,4 128,4 18 8,7 96,6 24 6,6 72,7 30 5,5 41,7 36 4,5 36,7 42 3,9 31,5 48 3,5 27,6 54 3,1 24,7 60 2,9 22,3 64 2,7 21,7
Tabela 5.2: Tempo de simulação para diferentes tamanhos de L e N com quantidade de processadores variando de 1 a 64.
quantidade de processadores utilizada, tal que: Ep=
Sp
p (5.12)
indicando a fração de tempo utilizada pelos processadores na realização de trabalho útil. A eficiência é um valor, entre zero e um, que expressa o quão bem os processadores estão sendo utilizados para resolver o problema.
A Figura 5.17 ilustra o resultado da eficiência paralela para diversas configurações de tamanho de blocos N e quantidade de blocos L, fixando-se o número de processadores em 64. Observa-se em três configurações valores maiores do que 1, indicando uma eficiência super linear. Além disso, para tamanhos e quantidade de blocos pequenos, a eficiência é baixa. Entretanto, quando o N e L aumenta a eficiência melhora.
16 32 64 128 256 512 2 4 8 16 32 64 1280 0.5 1 1.5 Tamanho do Bloco (N) Número de Blocos (L) Eficiência
Figura 5.17: Eficiência paralela para diversas configurações de tamanhos de blocos N e quantidade de blocos L, fixando-se o número de processadores em 64.
Portanto, com base na Figura 5.17 a melhor forma de se utilizar o algoritmo CCSD paralelo proposto é com N maior do que 32 e L maior que 8, dessa forma é possível obter uma boa eficiência do algoritmo.
5.5
Síntese
A CCSD consegue extrair diferentes assinaturas cicloestacionárias para as modula- ções analisadas, demonstrando um grande potencial de uso em problemas de classifica- ção. A redução de dimensionalidade utilizando o perfil alfa viabiliza a aplicação direta das assinaturas nos classificadores. A Figura 5.18 evidencia os diferentes perfis para as modulações AM, MSK, BFSK, BPSK, QPSK e 16QAM. Além disso, a limitação da ci- cloestacionariedade de segunda ordem para as modulações ASK,BPSK e QPSK, 16QAM foram superadas com o uso da CCSD.
O tamanho do kernel funciona como uma janela pela qual pode-se enxergar particu- laridades nas assinaturas de cada modulação e eliminar outliers. Quando ele assume um tamanho pequeno, todas as assinaturas das modulações são bem diferentes entre si. En- tretanto, quando o tamanho do kernel é maior do que 1, a estatística de segunda ordem prevalece e, consequentemente,tem-se assinaturas iguais para as modulações ASK,BPSK e QPSK, 16QAM.
Por meio da estratégia de paralelização proposta para o algoritmo CCSD, foi possível reduzir significativamente o tempo necessário para se obter as características cicloesta- cionárias. Além disso, os resultados demonstraram três configurações que o speedup e eficiência superlinear, assim como uma boa escalabilidade para todas as configurações testadas, demonstrando a relevância da estratégia proposta.
1000 2000 3000 4000 5000 6000 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Frequência cíclica Perfil α
(a) Perfil alfa - AM
1000 2000 3000 4000 5000 6000 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Frequência cíclica Perfil α (b) Perfil alfa - MSK 1000 2000 3000 4000 5000 6000 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Frequência cíclica Perfil α (c) Perfil alfa - BFSK 1000 2000 3000 4000 5000 6000 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Frequência cíclica Perfil α (d) Perfil alfa - BPSK 1000 2000 3000 4000 5000 6000 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Frequência cíclica Perfil α
(e) Perfil alfa - ASK
1000 2000 3000 4000 5000 6000 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Frequência cíclica Perfil α (f) Perfil alfa - QPSK 1000 2000 3000 4000 5000 6000 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Frequência cíclica Perfil α
(g) Perfil alfa - 16QAM
Conclusões
Este trabalho propôs duas novas funções baseadas em correntropia para a análise de si- nais cicloestacionários, denominadas Função de Correntropia Cíclica (CCF) e Função de Densidade Espectral de Correntropia Cíclica (CCSD). Foi demonstrado analiticamente que essas funções generalizam as funções clássicas de análise cicloestacionária de se- gunda ordem, no sentido em que exploram cicloestacionariedades de segunda ordem e de ordem superior para processos aleatórios. Dessa forma, é possível utilizar as funções CCF e CCSD para a análise de sistemas não-lineares e fontes não-gaussianas, expandindo a classe de problemas abordados pela análise cicloestacionária clássica.
A CCSD utiliza um kernel gaussiano que insere um parâmetro livre (σ) a ser ajustado em função da aplicação. O ajuste desse parâmetro possibilita melhorar o desempenho da função na extração de características cicloestacionárias do sinal de interesse, além de minimizar os efeitos do ruído não-Gaussiano presentes no processo. Neste trabalho, investigamos essa flexibilidade aplicando a função CCSD na extração de características cicloestacionárias para diversas modulações contaminadas por um ruído não-gaussiano. A função CCSD é capaz de extrair características mesmo em ambiente com muito ruído.
Resultados experimentais demonstraram que a CCSD é superior à SCD clássica, so- bretudo na extração de características das modulações ASK, BPSK, QPSK e 16QAM, já que classifica sinais onde a cicloestacionariedade de segunda ordem não conseguia extrair informações distintas.
A ferramenta proposta possui a desvantagem na complexidade computacional. Vi- sando reduzir o tempo computacional para calcular as assinaturas cicloestacionárias por meio da CCSD, foi proposto uma versão paralelizada do algoritmo, no qual obteve um bom speedup e eficiência, demonstrando-se escalável.
A partir da CCSD, pode-se extrair aplicações de extração de características de sinais de telecomunicações, sistemas biológicos, meteorologia, climatologia, oceanografia, má- quinas rotativas, entre outros, presentes em informações estatísticas de alta ordem, o que pode melhorar significativamente o desempenho dos sistemas de processamento projeta- dos.
6.1
Principais Contribuições
As principais contribuições apresentadas por esta Tese foram as seguintes:
1. Proposição de duas novas ferramenta (CCF e CCSD) para a extração de caracte- rísticas cicloestacionárias presentes em momentos de alta ordem, por meio de uma transformação baseada em correntropia.
2. A demonstração analítica de que a CCSD corresponde a uma generalização da SCD. 3. O estudo da análise da influência do tamanho do kernel na medida de correntropia
para processos aleatórios.
4. A análise e comparação da CSCD e SCD para ambientes com ruído não-gaussiano. 5. A obtenção de assinaturas cicloestacionárias por meio da função CCSD para as
modulações AM, ASK, BPSK, MSK, BFSK, QPSK e 16-QAM. 6. A análise da influência do tamanho do kernel para a CCSD.