FerramentaComputacionalDirecionadaà...

74
Ravel Carlos de Miranda Pimenta Ferramenta Computacional Direcionada à Análise de Antenas Impressas por meio da Utilização do Método de FDTD em Paralelo Desenvolvida em CUDA Belo Horizonte Abril de 2018

Transcript of FerramentaComputacionalDirecionadaà...

Page 1: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Ravel Carlos de Miranda Pimenta

Ferramenta Computacional Direcionada àAnálise de Antenas Impressas por meio daUtilização do Método de FDTD em Paralelo

Desenvolvida em CUDA

Belo Horizonte

Abril de 2018

Page 2: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 3: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Ravel Carlos de Miranda Pimenta

Ferramenta Computacional Direcionada à Análise deAntenas Impressas por meio da Utilização do Método de

FDTD em Paralelo Desenvolvida em CUDA

Trabalho submetido à banca examinadoradesignada pelo Colegiado do Programa dePós-Graduação em Engenharia Elétrica daUniversidade Federal de Minas Gerais, comorequisito parcial para obtenção do grau deMestre em Engenharia Elétrica.

Universidade Federal de Minas Gerais

Escola de Engenharia

Programa de Pós-Graduação em Engenharia Elétrica

Orientador: Prof. Dr. Ricardo Luiz da Silva Adriano

Belo HorizonteAbril de 2018

Page 4: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Este trabalho é dedicado à minha querida esposa.

Page 5: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Agradecimentos

Agradeço à minha esposa Ariadne pelo incentivo e paciência. Ao meu orientadorProfessor Dr. Ricardo Luiz da Silva Adriano por todo auxílio ao longo da jornada, disponi-bilidade e paciência. Ao Professor Dr. Cássio Gonçalves do Rego pelas aulas, incentivo,discussões, conselhos e puxões de orelha e paciência. E, finalmente, ao Professor Dr. Fer-nando José da Silva Moreira, por aulas enriquecedoras e animadas, sua atenção, incentivo,frases de efeito e paciência.

Page 6: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 7: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

“O homem culto é apenas mais culto;nem sempre é mais inteligente que o homem simples.

(Hermann Hesse)

Page 8: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 9: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

ResumoNo presente trabalho, é desenvolvida uma ferramenta computacional para análise dedispositivos eletromagnéticos genéricos, através da aplicação do método das DiferençasFinitas no Domínio do Tempo em paralelo, utilizando as condições de contorno absorventesdo tipo Convolutional Perfectly Matched Layer (CPML). Apesar de sua versatilidade,o foco do trabalho é a utilização da ferramenta desenvolvida para análise de antenasimpressas. A plataforma Computacional CUDA é utilizada para o desenvolvimento doprograma, por isso, uma análise de suas características de implementação é realizada.O componente Unified Memory, disponibilizado por CUDA, é utilizado para realizar odevido encapsulamento do programa, bem como o gerenciamento de acessos à memória.São utilizadas estratégias de otimização destinadas ao CUDA com o objetivo de se extrairo máximo de performance do programa desenvolvido. São analisadas as característicasde performance da aplicação desenvolvida, além de uma validação da mesma por meiode simulação. É também analisado o impacto de performance devido a utilização dascondições de contorno do tipo CPML em comparação à utilização de condutores elétricosperfeitos nas fronteiras de simulação (PEC).

Palavras-chave: FDTD. CUDA. Processamento Paralelo. Condições de Contorno. CPML.

Page 10: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 11: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

AbstractIn the present project, a computational application is developed to analyze genericelectromagnetic devices, using a paralell algorithm of the FDTD method terminatedby Convolutional Perfectly Matched Layer (CPML) Absorbing Boundary Conditions.Despite of its versatility, this project is focused on the use of the application developedto analyze microstrip antennas. The CUDA computing platform is used to develop theprogram, therefore, a review of its implementation characteristics is performed. The UnifiedMemory component, provided by CUDA, is used to accomplish the encapsulation of theprogram, as well as the memory access management. CUDA optimzation strategies areused to explore the developed program to its maximum. Performance characteristics areanalyzed and simulations performed to validate the program. The impact on performancedue the use of CPML, instead of the Perfect Electric Conductor (PEC) Boundary Contition,is also analyzed.

Keywords: FDTD. CUDA. Parallel Processing. Absorbing Boundary Conditions. CPML.

Page 12: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 13: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Lista de ilustrações

Figura 1 – Fluxograma do Algoritmo de FDTD. Fonte: (ELSHERBENI; DEMIR,2016) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Figura 2 – Célula de Yee. Fonte: (SULLIVAN, 2000) . . . . . . . . . . . . . . . . . 27Figura 3 – Divisão Espacial do Problema. Fonte: (ELSHERBENI; DEMIR, 2016) . 27Figura 4 – Fluxo Típico de um Programa em CUDA. Fonte: (CHENG; GROSS-

MAN; MCKERCHER, 2014) . . . . . . . . . . . . . . . . . . . . . . . 39Figura 5 – Hierarquia de Threads. Fonte: (NVIDIA, 2017) . . . . . . . . . . . . . . 41Figura 6 – Hierarquia de Memória. Fonte: (NVIDIA, 2017) . . . . . . . . . . . . . 42Figura 7 – Fluxo de Trabalho com Utilização da Unified Memory . . . . . . . . . 43Figura 8 – Fluxo de Trabalho - FDTD + CUDA . . . . . . . . . . . . . . . . . . . 43Figura 9 – Domínio de Simulação . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Figura 10 – Domínio com Células adicionas para aumento de performance . . . . . 48Figura 11 – Antena de Microfita Retangular alimentada por uma linha (SHEEN et

al., 1990) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Figura 12 – Antena de Espiral Plana . . . . . . . . . . . . . . . . . . . . . . . . . . 54Figura 13 – Pulso gaussiano Utilizado na Simulação . . . . . . . . . . . . . . . . . 55Figura 14 – Campo elétrico na direção z em quatro instantes de tempo distintos. . 56Figura 15 – Tensão nos terminais de entrada da Antena de Microfita Retangular . . 56Figura 16 – Corrente na Entrada da Antena de Microfita Retangular . . . . . . . . 57Figura 17 – Perda de Retorno da Antena de Microfita Retangular . . . . . . . . . . 57Figura 18 – Campo elétrico na direção z em quatro instantes de tempo distintos. . 58Figura 19 – Tensão nos terminais de entrada da Antena PSA . . . . . . . . . . . . 58Figura 20 – Corrente na Entrada da Antena PSA . . . . . . . . . . . . . . . . . . . 59Figura 21 – Perda de Retorno da Antena PSA . . . . . . . . . . . . . . . . . . . . . 59Figura 22 – Tempo de execução em função do número de threads por bloco utilizando

somente acessos à Unified Memory . . . . . . . . . . . . . . . . . . . . 60Figura 23 – Tempo de execução em função do número de threads por bloco utilizando

auxílio da Memória Compartilhada . . . . . . . . . . . . . . . . . . . . 60Figura 24 – Ocupação referente ao Kernel Campo Elétrico para o Máximo de Per-

formance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Figura 25 – Ocupação referente ao Kernel Campo Magnético para o Máximo de

Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Figura 26 – Número de Milhões de Células Por Segundo . . . . . . . . . . . . . . . 62

Page 14: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 15: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Lista de tabelas

Tabela 1 – Características do Cartão de Vídeo . . . . . . . . . . . . . . . . . . . . 53

Page 16: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 17: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Lista de abreviaturas e siglas

FDTD Diferenças Finitas no Domínio do Tempo

CUDA Compute Unified Device Architecture

CEM Eletromagnetismo Computacional

CPU Unidade de Processamento Central

GPU Unidade de Processamento Gráfico

GPGPU Unidade de Processamento Gráfico de uso Geral

PEC Condutor Elétrico Perfeito

PML Perfectly Matched Layer

CPML Convolutional Perfectly Matched Layer

FPGA Field Programmable Gate Array

SM Streaming Multiprocessor

Page 18: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 19: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Lista de símbolos

t tempo (s)

ε0 Permissividade elétrica no vácuo

µ0 Permeabilidade Magnética no vácuo

ε Permissividade elétrica relativa(F/m)

µ Permeabilidade Magnética relativa(H/m)

σe Condutividade elétrica (S/m)

σm Condutividade magnética (Ω/m)

~E Vetor campo elétrico (V/m)

Eg Escalar campo elétrico na direção g

~H Vetor campo magnético (A/m)

Hg Escalar campo magnético na direção g

~Ji Vetor densidade de corrente elétrica impressa

Jig Escalar densidade de corrente elétrica na direção g

~Mi Vetor densidade de corrente magnética impressa

Mig Escalar densidade de corrente magnética na direção g

∆x Dimensão, na direção x, da célula de Yee

∆y Dimensão, na direção y, da célula de Yee

∆z Dimensão, na direção z, da célula de Yee

(i,j,k) localização da grandeza no espaço tridimensional (x, y, z) = (i∆x,j∆y,k∆z)

∆t Intervalo de tempo

n Instante de tempo, ou iteração.

σpeg Condutividade elétrica da PML na direção g

σpmg Condutividade magnética da PML na direção g

Page 20: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

ω Frequência angular

Seg Métrica complexa de esticamento de variáveis em referente ao campoelétrico na direção g

Smg Métrica complexa de esticamento de variáveis em referente ao campomagnético na direção g

κeg Coeficiente real da métrica de esticamento de variáveis na direção greferente ao campo elétrico

κmg Coeficiente real da métrica de esticamento de variáveis na direção greferente ao campo magnético

κmax Valor máximo da coeficiente real da métrica de esticamento de variáveis

αpeg Coeficiente na determinação dos polos da métrica de esticamento devariáveis referente ao campo elétrico

αpmg Coeficiente na determinação dos polos da métrica de esticamento devariáveis referente ao campo magnético

Seg(t) Transformada de Fourier inversa de 1Seg

u(t) Função degrau unitário

δ(t) Função impulso unitário

Z0eg(m) Convolução discreta para atenuação dos campos em g presentes naregião da CPML

Ψexg Simplificação da convolução discreta para atenuação do campo elétricoem x devido aos campos em g

σmax Valor máximo de condutividade (elétrica ou magnética) do material quecompõe a CPML

σfactor Razão entre o valor ótimo para condutividade (elétrica ou magnética) eseu valor máximo, para o material que compõe a CPML

σopt Valor ótimo para o valor de condutividade (elétrica ou magnética) domaterial que compõe a CPML

Ng Quantidade de células na direção g

nitr Total de iterações executadas

ts Tempo gasto na execução do programa

Page 21: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Sumário

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.2 Estrutura do Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

I REFERENCIAIS TEÓRICOS 23

2 MÉTODO DAS DIFERENÇAS FINITAS NO DOMÍNIO DO TEMPO(FDTD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.2 Formulação Teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.2.1 Equacionamento e Divisão do Espaço . . . . . . . . . . . . . . . . . . . . 252.2.2 Estabilidade Numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.3 Condições de Contorno Absorventes . . . . . . . . . . . . . . . . . . . 302.3.1 Convolutional Perfectly Matched Layer . . . . . . . . . . . . . . . . . . . 302.3.1.1 Perfectly Matched Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.3.1.2 Formulação Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.4 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3 PLATAFORMA DE COMPUTAÇÃO PARALELA CUDA . . . . . . 373.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.2 Compute Unified Device Architecture . . . . . . . . . . . . . . . . . . 383.2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.2.2 Características Principais . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.2.2.1 CUDA Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.2.2.2 Kernels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.2.2.3 Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.3 Modelo Desenvolvido . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.3.0.1 Estratégias de Otimização . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.4 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

II RESULTADOS 51

4 SIMULAÇÕES E RESULTADOS . . . . . . . . . . . . . . . . . . . . 534.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.2 Resultados para validação do Modelo . . . . . . . . . . . . . . . . . . 53

Page 22: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

4.2.1 Resultados da Antena de Microfita Retangular (Patch Antenna) (SHEEN etal., 1990) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.2.2 Antena Impressa do Tipo PSA . . . . . . . . . . . . . . . . . . . . . . . . 554.3 Comparação com algoritmo de FDTD convencional e Característi-

cas de Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.4 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5 CONSIDERAÇÕES FINAIS E PROPOSTAS DE CONTINUIDADE 655.1 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.2 Propostas de Continuidade . . . . . . . . . . . . . . . . . . . . . . . . 66

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Page 23: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

21

1 Introdução

O método de FDTD (YEE, 1966) é largamente utilizado para caracterização esimulações eletromagnéticas (TAFLOVE; HAGNESS, 2005). Com ele é possível obterresultados no domínio do tempo (YEE, 1966), sendo esse um dos motivos da sua grandepopularidade (ELSHERBENI; DEMIR, 2016).

Desde o início do seu desenvolvimento, pesquisadores vêm se dedicando a explorardiferentes implementações desse método. Desde a mudança na divisão do ambiente com-putacional e sua menor unidade dentro do espaço discretizado (CINALLI; SCHIAVONI,2006), até a utilização de coordenadas cilíndricas ou esféricas (HOLLAND, 1983). Cadaconfiguração apresenta características que se adequam mais a determinados tipos deproblema.

Os recursos computacionais se apresentam como gargalo ao algoritmo de FDTD,apesar de sua simplicidade de implementação (ELSHERBENI; DEMIR, 2016). O tamanhodo problema analisado e o número de iterações necessárias para se obter uma respostacom nível de precisão aceitável impactam diretamente no tempo necessário para que asimulação fique completa (TAFLOVE; HAGNESS, 2005).

Com relação à velocidade de execução, as rotinas em paralelo do método deFDTD se destacam. Para o presente trabalho, são analisadas as aplicações do métodode FDTD em paralelo utilizando placas gráficas. O objetivo final é desenvolver umaimplementação do FDTD que utilize o poder de processamento das placas gráficas pararesolver problemas de antenas impressas com menor custo computacional. É utilizadaa plataforma de computação paralela, desenvolvida pela empresa NVIDIA, chamadaCompute Unified Device Architecture (CUDA) (NVIDIA, 2017).

Para tal aplicação, é necessário também a utilização de condições de contorno quesimulem a propagação dos campos eletromagnéticos para o infinito. Por isso, são analisadase implementadas as condições de Contorno do tipo Convolutional Perfectly Matched Layer(CPML) (RODEN; GEDNEY, 2000a) (RODEN; GEDNEY, 2000b) (RODEN; GEDNEY,2000c) (ELSHERBENI; DEMIR, 2016). Sua baixa reflexão de retorno e praticidade deimplementação foram fundamentais para sua escolha (ELSHERBENI; DEMIR, 2016).

1.1 Motivação

O objetivo principal do presente trabalho é a criação de uma aplicação do método deFDTD em paralelo com Condições de Contorno do tipo CPML. Essa aplicação é elaboradautilizando o ambiente de desenvolvimento disponibilizado pela NVIDIA para aplicações

Page 24: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

22 Capítulo 1. Introdução

CUDA. Esse programa é direcionado para a analise de estruturas eletromagnéticas genéricas.No entanto, o presente trabalho tem como foco de análise as antenas do tipo impressas.Por isso, é realizada uma validação do programa elaborado por meio da comparação dosresultados obtidos por ele para problemas do tipo antenas impressas já analisados naliteratura.

1.2 Estrutura do TextoO Texto segue a seguinte estrutura. No capítulo 1 se encontra uma breve introdução

sobre o próprio. Já no capítulo 2 é realizada uma revisão bibliográfica do método de FDTDe das Condições de Fronteira, ou Contorno, do tipo CPML. Essas condições serão utilizadasno programa desenvolvido.

No capítulo 3 há uma revisão bibliográfica da plataforma de computação CUDA.Além disso, nesse capítulo é apresentado o modelo desenvolvido no presente trabalho: umaaplicação do método de FDTD em paralelo, com Condições de Contorno do tipo CPML,utilizando CUDA. Por fim são levantadas estratégias de otimização que mais se adequamao programa desenvolvido.

No capítulo 4 é realizada a validação e análise de performance do programa. Paravalidação, é simulada uma antena impressa e seus resultados de corrente e tensão sãoutilizados para o cálculo da perda de retorno. Essa antena foi simulada anteriormente em(SHEEN et al., 1990) e (SULLIVAN, 2000). Neste capítulo também são utilizadas métricasespecíficas para programas em CUDA para avaliação de performance.

Finalmente, no capítulo 5 estão apresentadas as considerações finais e propostas decontinuidade de trabalho.

Page 25: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Parte I

Referenciais teóricos

Page 26: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 27: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

25

2 Método das Diferenças Finitas no Domíniodo Tempo (FDTD)

2.1 Introdução

O Método das Diferenças Finitas no Domínio do Tempo (Finite Difference TimeDomain - FDTD), introduzido em (YEE, 1966), é uma técnica de análise numérica utilizadapara solução de problemas de Eletromagnetismo Computacional (CEM). Fundamentadona discretização das Equações Diferenciais de Maxwell, este método vem sendo largamenteutilizado por pesquisadores dentro e fora das instituições de ensino. Uma ordem cronológicade seu desenvolvimento pode ser encontrada em (TAFLOVE; HAGNESS, 2005).

Como pode ser visto em (TAFLOVE; HAGNESS, 2005) e (ELSHERBENI; DEMIR,2016), esse método apresentou um considerável aumento de popularidade nos últimosanos. Dentre os fatores determinantes para esse aumento, pode-se destacar a rápida ecrescente evolução do poder de processamento e armazenamento dos computadores. Outracaracterística a ser observada é o fato de que esse método fornece a resposta temporal doproblema simulado. Por isso, é possível obter a resposta em frequência para uma largafaixa utilizando a Transformada de Fourier (OPPENHEIM; WILLSKY; NAWAB, 1997)do sinal obtido.

Dentre a vasta gama de problemas que podem ser analisados utilizando o métodode FDTD, destacam-se (ELSHERBENI; DEMIR, 2016): problemas de espalhamento epropagação, circuitos de micro-ondas, fibra ótica, guias de onda, plasma, compatibilidadee blindagem eletromagnética. No presente capítulo é apresentado o Método das DiferençasFinitas no Domínio do Tempo em três dimensões, sua fundamentação teórica e as Condiçõesde Contorno Absorventes utilizadas para delimitar o ambiente de simulação.

2.2 Formulação Teórica

2.2.1 Equacionamento e Divisão do Espaço

As equações de Maxwell referentes à Lei de Faraday da Indução e à Lei de Ampère,sob a forma diferencial, podem ser representadas conforme (ELSHERBENI; DEMIR,2016):

∇× ~H = ε∂ ~E

∂t+ σe ~E + ~Ji, (2.1a)

Page 28: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

26 Capítulo 2. Método das Diferenças Finitas no Domínio do Tempo (FDTD)

∇× ~E = −µ∂~H

∂t− σm ~H − ~Mi, (2.1b)

onde,~H: Campo Magnético (A/m);~E: Campo Elétrico (V/m);~Mi: Densidade de Corrente Magnética Impressa (V/m2);~Ji: Densidade de Corrente Elétrica Impressa (A/m2);

µ: Permeabilidade Magnética (H/m);

ε: Permissividade Elétrica (F/m);

σm: Condutividade Magnética (Ω/m);

σe: Condutividade Elétrica (S/m);

t: tempo (s).

As demais equações de Maxwell são naturalmente satisfeitas durante o desenvolvi-mento das equações utilizadas no FDTD (TAFLOVE; HAGNESS, 2005). Nas equações 2.1,os termos referentes às correntes de condução (σm ~H e σe ~E) estão separados dos termosreferentes às correntes impressas. A aplicação de fontes elétricas e magnéticas no sistema érealizado utilizando-se as correntes impressas (ELSHERBENI; DEMIR, 2016).

A geometria do problema analisado é dividida em uma grade espacial, na qualos campos elétrico e magnético são colocados em posições distintas e seus valores sãocalculados em instantes discretos de tempo (ELSHERBENI; DEMIR, 2016). A cada novoinstante de tempo, os valores de campo são recalculados utilizando-se os valores do instantede tempo anterior. Ou seja, o FDTD realiza o cálculo progressivo no tempo dos camposeletromagnéticos para a região definida como ambiente de simulação. Além de posições noespaço diferentes, o campo elétricos e magnéticos são calculados em instantes de tempodiferentes. O campo magnético está adiantado do campo elétrico por meio intervalo detempo. Na figura 1 está representada a sequência de execução do FDTD.

A menor unidade dentro do espaço discretizado é conhecida como cubo de Yee(YEE, 1966). A figura 2 representa a célula de Yee, bem como a localização dos camposelétricos e magnéticos nessa célula. Conforme pode ser visto em (TAFLOVE; HAGNESS,2005), (ELSHERBENI; DEMIR, 2016) e (RAMOS, 2013), e também pela análise dasfiguras 3 e 2, cada componente de campo elétrico está envolvida por quatro componentesde campo magnético e cada componente de campo magnético está envolvida por quatrocomponentes de campo elétrico. Na figura 3 está representada a divisão do ambiente desimulação. Pode-se perceber que o espaço tridimensional foi dividido em células. Cadacélula presente possui índices (i, j, k) que se referem à posição do elemento com relação

Page 29: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

2.2. Formulação Teórica 27

Figura 1: Fluxograma do Algoritmo de FDTD. Fonte: (ELSHERBENI; DEMIR, 2016)

aos eixos x, y e z respectivamente.

Figura 2: Célula de Yee. Fonte: (SULLIVAN, 2000)

Figura 3: Divisão Espacial do Problema. Fonte: (ELSHERBENI; DEMIR, 2016)

As equações 2.1a e 2.1b podem ser divididas em seis equações escalares, umapara cada dimensão: x, y e z. As derivadas presentes nessas equações são aproximadasutilizando-se a formula da diferença central com precisão de segunda ordem (ELSHERBENI;DEMIR, 2016). Após essas aproximações e certas manipulações algébricas, que podem ser

Page 30: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

28 Capítulo 2. Método das Diferenças Finitas no Domínio do Tempo (FDTD)

vistas em (TAFLOVE; HAGNESS, 2005) e (ELSHERBENI; DEMIR, 2016), é possívelescrever as equações escalares que governam o algoritmo de FDTD durante sua execução(ELSHERBENI; DEMIR, 2016):

Hx|n+1/2i,j,k =

2µi,j,k −∆tσmi,j,k2µi,j,k + ∆tσmi,j,k

×Hx|n−1/2i,j,k

+ 2∆t(2µi,j,k + ∆tσmi,j,k)∆z

× (Ey|ni,j,k+1 − Ey|ni,j,k)

+ 2∆t(2µi,j,k + ∆tσmi,j,k)∆y

× (Ez|ni,j+1,k − Ez|ni,j,k)

+ 2∆t2µi,j,k + ∆tσmi,j,k

×Mix|ni,j,k

(2.2a)

Hy|n+1/2i,j,k =

2µi,j,k −∆tσmi,j,k2µi,j,k + ∆tσmi,j,k

×Hy|n−1/2i,j,k

+ 2∆t(2µi,j,k + ∆tσmi,j,k)∆x

× (Ez|ni+1,j,k − Ez|ni,j,k)

+ 2∆t(2µi,j,k + ∆tσmi,j,k)∆z

× (Ex|ni,j,k+1 − Ex|ni,j,k)

+ 2∆t2µi,j,k + ∆tσmi,j,k

×Miy|ni,j,k

(2.2b)

Hz|n+1/2i,j,k =

2µi,j,k −∆tσmi,j,k2µi,j,k + ∆tσmi,j,k

×Hz|n−1/2i,j,k

+ 2∆t(2µi,j,k + ∆tσmi,j,k)∆y

× (Ex|ni,j+1,k − Ex|ni,j,k)

+ 2∆t(2µi,j,k + ∆tσmi,j,k)∆x

× (Ey|ni+1,j,k − Ey|ni,j,k)

+ 2∆t2µi,j,k + ∆tσmi,j,k

×Miz|ni,j,k

(2.2c)

Ex|n+1i,j,k =

2εi,j,k −∆tσei,j,k2εi,j,k + ∆tσei,j,k

× Ex|ni,j,k

+ 2∆t(2εi,j,k + ∆tσei,j,k)∆y

× (Hz|n+1/2i,j,k −Hz|n+1/2

i,j−1,k)

+ 2∆t(2εi,j,k + ∆tσei,j,k)∆z

× (Hy|n+1/2i,j,k −Hy|n+1/2

i,j,k−1)

+ 2∆t2εi,j,k + ∆tσei,j,k

× Jix|n+1/2i,j,k

(2.2d)

Page 31: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

2.2. Formulação Teórica 29

Ey|n+1i,j,k =

2εi,j,k −∆tσei,j,k2εi,j,k + ∆tσei,j,k

× Ey|ni,j,k

+ 2∆t(2εi,j,k + ∆tσei,j,k)∆z

× (Hx|n+1/2i,j,k −Hx|n+1/2

i,j,k−1)

+ 2∆t(2εi,j,k + ∆tσei,j,k)∆x

× (Hz|n+1/2i,j,k −Hz|n+1/2

i−1,j,k)

+ 2∆t2εi,j,k + ∆tσei,j,k

× Jiy|n+1/2i,j,k

(2.2e)

Ez|n+1i,j,k =

2εi,j,k −∆tσei,j,k2εi,j,k + ∆tσei,j,k

× Ez|ni,j,k

+ 2∆t(2εi,j,k + ∆tσei,j,k)∆x

× (Hy|n+1/2i,j,k −Hy|n+1/2

i−1,j,k)

+ 2∆t(2εi,j,k + ∆tσei,j,k)∆y

× (Hx|n+1/2i,j,k −Hx|n+1/2

i,j−1,k)

+ 2∆t2εi,j,k + ∆tσei,j,k

× Jiz|n+1/2i,j,k

(2.2f)

onde,

∆x: dimensão da célula de Yee na direção x;

∆y: dimensão da célula de Yee na direção y;

∆z: dimensão da célula de Yee na direção z;

∆t: incremento do intervalo de tempo;

n: instante de tempo no qual a variável se encontra.

(i, j, k):localização da variável no espaço tridimensional;

Pela análise das equações 2.2, nota-se que para o cálculo de uma componente decampo, os valores das componentes de campo das células vizinhas são utilizados.

2.2.2 Estabilidade Numérica

As equações 2.2 necessitam de certos limites para que as mesmas permaneçam naregião de estabilidade. Relacionando-se ∆x, ∆y, ∆z e ∆t é possível garantir a estabilidadedo método. Conforme exposto em (YEE, 1966), o tamanho da grade espacial, ou o númerode células que compõe o espaço discretizado, deve ser tal que após um instante de tempoos valores de campo eletromagnético não se alterem de maneira significativa. Utilizando ocritério de estabilidade de Courant-Friedrichs-Lewy (ELSHERBENI; DEMIR, 2016), chega-se à equação 2.3, que relaciona as dimensões do problema e o valor do intervalo entre osinstantes de tempo (TAFLOVE; HAGNESS, 2005). Dentre os fatores que podem influenciar

Page 32: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

30 Capítulo 2. Método das Diferenças Finitas no Domínio do Tempo (FDTD)

na estabilidade numérica do sistema, podemos citar a não linearidade dos materiais, gradesespaciais não uniformes e as condições de Contorno Absorventes utilizadas (ELSHERBENI;DEMIR, 2016).

∆t ≤ 11√εµ

√1

(∆x)2 + 1(∆y)2 + 1

(∆z)2

(2.3)

Analisando a equação 2.3, pode-se observar que o menor valor das dimensões dacélula de Yee controla os valores máximo e mínimo que o intervalo de tempo pode assumir(YEE, 1966), controlando assim os valores máximo e mínimo de frequência que podemapresentar resultados convergentes.

A dispersão numérica é outro ponto de interesse quando se analisa o estabilidadenumérica do sistema. O critério de Courant-Friedrichs-Lewy garante estabilidade dosistema, mas não garante resultados convergentes. Conforme expresso em (TAFLOVE;HAGNESS, 2005), as equações discretizadas e o próprio algoritmo de FDTD acabamcausando acúmulo de atraso ou erros de fase nas ondas propagantes. Esses erros podemacarretar resultados não físicos, cancelamento impreciso de ondas multiplamente espalhadase anisotropia espúrias. A dispersão numérica fica evidenciada através da distorção na formados sinais presentes na simulação. Em (TAFLOVE; HAGNESS, 2005) está presente umaanálise da relação de dispersão numérica devido à aproximação em diferenças finitas paraa equação de onda. Para redução da dispersão numérica, sugere-se que o tamanho de ∆x,∆y e ∆z seja de, no mínimo, λ/10 (RAMOS, 2013), onde λ é igual à frequência máximada simulação. Além disso, para se ter uma resposta do sistema com maior precisão, ascondições da teoria de amostragem devem ser atendidas com relação à mais alta frequênciapresente na fonte de alimentação do sistema (ELSHERBENI; DEMIR, 2016).

2.3 Condições de Contorno Absorventes

Os recursos computacionais disponíveis no ambiente de simulação de um problemade FDTD são limitados. Por isso, é necessário que se limite esse domínio de maneira aatender certas condições de fronteira e/ou continuidade (ELSHERBENI; DEMIR, 2016).Com esse objetivo, no presente trabalho, foram utilizadas as Condições de ContornoAbsorventes do tipo Convolutional Perfectly Matched Layer (CPML).

2.3.1 Convolutional Perfectly Matched Layer

2.3.1.1 Perfectly Matched Layer

As condições de Contorno Absorventes do tipo PML, (Perfectly Matched Layer),são largamente utilizadas como condição de fronteira para simulações de FDTD. Na

Page 33: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

2.3. Condições de Contorno Absorventes 31

formulação da PML, um material fictício com uma condutividade artificial é introduzidoentre a estrutura que está sendo simulada e os limites do ambiente de simulação. O objetivodesse material é absorver as ondas que se propagam em direção às fronteiras do problema,simulando a propagação das mesmas para o infinito.

Os valores de condutividade do material são escolhidos de modo a evitar queocorram reflexões nas fronteiras entre o material da PML e os materiais usados nasestruturas que estão sendo simuladas e entre os pontos do próprio material da PML. AAnálise da característica de reflexão do PML pode ser encontrada em (BÉRENGER, 2007),(ELSHERBENI; DEMIR, 2016) e (TAFLOVE; HAGNESS, 2005). O material da PMLapresenta anisotropia em relação à sua condutividade. No conjunto de equações 2.4 estáexposta a relação que deve ser mantida para que não ocorram reflexões nas fronteiras entreo espaço livre e a PML. Além disso, o tamanho da camada preenchida pelo material daPML é fator importante para que se consiga efetivamente absorver as ondas propagantes(ELSHERBENI; DEMIR, 2016).

σpeiε0

= σpmiµ0

, i = x, y ou z; (2.4)

onde,

σpei: condutividade elétrica do material da PML em cada direção;

σpmi: condutividade magnética do material da PML em cada direção;

ε0: permissividade elétrica do vácuo;

µ0: permeabilidade magnética do vácuo;

Para o cálculo do FDTD na região do material da PML, cada componente de campoé divida em duas componentes artificiais associadas às direções x, y e z. A componentede campo referente à direção x é dividida em duas componentes associadas a y e z; acomponente referente à direção y é dividida em duas componentes associadas a x e z; epor fim, a componente referente à direção z é dividida em duas componentes associadas ax e y.

Dentre as principais limitações da PML, podemos citar a absorção ineficiente deondas evanescentes (BÉRENGER, 2007) e sinais com assinatura de tempo longa (ELSHER-BENI; DEMIR, 2016). Além disso, para uma absorção eficiente utilizando a PML, asfronteiras do problema têm que ser colocadas suficientemente longe da estrutura analisada,o que acaba aumentando demasiadamente o espaço de simulação e consequentemente oconsumo de recursos computacionais.

Page 34: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

32 Capítulo 2. Método das Diferenças Finitas no Domínio do Tempo (FDTD)

2.3.1.2 Formulação Geral

A CPML, introduzida em (RODEN; GEDNEY, 2000c), é uma implementação dasCondições de Contorno Absorventes do tipo PML que utiliza a formulação de coordenadasestendidas (CHEW; WEEDON, 1994). Além disso, para o desenvolvimento da CPML,utiliza-se a análise do comportamento dos parâmetros constitutivos de materiais anisotrópi-cos utilizados na PML apresentada em (KUZUOGLU; MITTRA, 1996). Já o detalhamentodo desenvolvimento teórico aprofundado da CPML pode ser visto em (ELSHERBENI;DEMIR, 2016) e (RODEN; GEDNEY, 2000c).

Na formulação em coordenadas estendidas, as equações escalares de Maxwell nodomínio da frequência podem ser escritas conforme o conjunto de equações 2.5 (ELSHER-BENI; DEMIR, 2016) (KUZUOGLU; MITTRA, 1996).

jωµHx + σmHx = 1Smy

∂Ez∂y− 1Smz

∂Ey∂z

; (2.5a)

jωµHy + σmHy = 1Smz

∂Ex∂z− 1Smx

∂Ez∂x

; (2.5b)

jωµHz + σmHz = 1Smx

∂Ey∂x− 1Smy

∂Ex∂y

; (2.5c)

jωεEx + σeEx = 1Sey

∂Hz

∂y− 1Sez

∂Hy

∂z; (2.5d)

jωεEy + σeEy = 1Sez

∂Hx

∂z− 1Sex

∂Hz

∂x; (2.5e)

jωεEz + σeEz = 1Sex

∂Hy

∂x− 1Sey

∂Hx

∂y; (2.5f)

Smi = κmi + σpmiαpmi + jωµ0

, i = x, y ou z; (2.5g)

Sei = κei + σpeiαpei + jωε0

, i = x, y ou z; (2.5h)

Onde, Smi e Sei são as variáveis responsáveis pelo esticamento de coordenadas. Ostermos κmi, κei, αmi, αei, σpmi e σpmi que compõem as variáveis de esticamento estão deacordo com a forma proposta em (KUZUOGLU; MITTRA, 1996). Os valores de αmi,αei, σpmi e σpmi são reais e positivos, enquanto κmi e κei são reais e maiores ou iguaisà unidade (RODEN; GEDNEY, 2000c). Para que não ocorram reflexões nas interfacesPML-PML as relações expostas na equação 2.6 deve ser assegurada (BÉRENGER, 2007)(ELSHERBENI; DEMIR, 2016).

σpeiε0

= σpmiµ0

, i = x, y ou z; (2.6a)

Page 35: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

2.3. Condições de Contorno Absorventes 33

αpeiε0

= αpmiµ0

, i = x, y ou z; (2.6b)

Como as equações 2.5 se encontram no domínio da frequência, faz-se necessário atransformação das mesmas para o domínio do tempo. Conforme pode ser visto em (RODEN;GEDNEY, 2000c), os termos de esticamento de coordenadas fazem surgir convoluções nodomínio do tempo. Como exemplo, na equação 2.7 está apresentada a forma temporal daequação 2.5d.

ε∂Ex∂t

+ σeEx = Sey(t) ∗∂Hz

∂y− Sez(t) ∗

∂Hy

∂z; (2.7)

Onde Sey(t) e Sez(t) são as transformadas de Fourier inversas de 1Sey

e 1Sez

respectiva-mente e podem ser descritas no domínio do tempo conforme a equação 2.8 (ELSHERBENI;DEMIR, 2016).

Sei(t) = δ(t)κei− σpeiε0κ2

ei

e−(σpeiε0κei

+αpeiε0

)tu(t) = δ(t)

κei+ ξei(t), i = x, y ou z; (2.8)

onde,

δ(t): função impulso unitário;

u(t): função degrau unitário.

Uma forma análoga à equação 2.8 pode ser obtida para Smi(t) (RODEN; GEDNEY,2000c). De posse desses resultados, pode-se escrever a equação 2.7 conforme e equação 2.9.

ε∂Ex∂t

+ σeEx = 1κey

∂Hz

∂y− 1κez

∂Hy

∂z+ ξey ∗

∂Hz

∂y− ξez ∗

∂Hy

∂z(2.9)

A solução das convoluções presentes em 2.9 se inicia pela representação discreta dostermos presentes na mesma. Mais especificamente, os termos envolvidos nas convoluçõesnecessitam de uma atenção especial. Conforme expresso em (RODEN; GEDNEY, 2000c),a resposta impulsiva discreta de ξey e ξez é definida na equação 2.10.

Z0ei(m) =∫ (m+1)∆t

m∆tξei(t)dt = − σpei

ε0κ2ei

∫ (m+1)∆t

m∆te−(σpeiε0κei

+αpeiε0

)tdt

Z0ei(m) = σpeiσpeiκpei + κ2

eiαpei

(e−(σpeiκei

+αpei)

∆tε0 − 1

)e−(σpeiκei

+αpei)m∆tε0

(2.10)

Page 36: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

34 Capítulo 2. Método das Diferenças Finitas no Domínio do Tempo (FDTD)

Utilizando-se a expressão obtida na equação 2.10, juntamente com a formula dadiferença central para a discretização das derivadas espaciais e temporais, a equação 2.9pode ser expressa conforme a equação 2.11.

εi,j,kEx|n+1

i,j,k − Ex|ni,j,k∆t + σei,j,k

Ex|n+1i,j,k + Ex|ni,j,k

2 = 1κeyi,j,k

Hz|n+ 1

2i,j,k −Hz|

n+ 12

i,j−1,k

∆y

− 1κezi,j,k

Hy|n+ 1

2i,j,k −Hy|

n+ 12

i,j,k−1

∆z + ψexy|n+ 1

2i,j,k − ψexz|

n+ 12

i,j,k

(2.11a)

ψexy|n+ 1

2i,j,k =

m=n−1∑m=0

Z0ey(m)Hz|

n+ 12

i,j,k −Hz|n+ 1

2i,j−1,k

∆y (2.11b)

ψexz|n+ 1

2i,j,k =

m=n−1∑m=0

Z0ez(m)Hy|

n+ 12

i,j,k −Hy|n+ 1

2i,j,k−1

∆z (2.11c)

Os termos expressos nas equações 2.11b e 2.11c são referentes às convoluçõesdiscretas. Formas análogas às que foram obtidas para o cálculo do campo elétrico nadireção x podem ser encontrados para o cálculo dos campos elétricos e magnéticos nasdireções y e z.

Na maneira com que se apresentam, essas convoluções têm um elevado custocomputacional (RODEN; GEDNEY, 2000c). A cada iteração, os valores dos camposmagnéticos desde a primeira iteração são utilizados, o que torna o método impraticávelcom os recursos computacionais atuais (ELSHERBENI; DEMIR, 2016). Esse problemapode ser contornado utilizando-se a convolução recursiva (LUEBBERS; HUNSBERGER,1992) (BEGGS et al., 1992), conforme desenvolvido em (ELSHERBENI; DEMIR, 2016)e (RODEN; GEDNEY, 2000c). Devido à simples forma exponencial do termo Z0ei(m),chega-se à conclusão de que para o cálculo da convolução discreta, apenas se faz necessárioo conhecimento do resultado da convolução discreta do instante imediatamente anterior edos valores de campo do instante atual (ELSHERBENI; DEMIR, 2016). A forma final dasequações 2.11b e 2.11c pode ser vista no conjunto de equações 2.12.

ψexy|n+ 1

2i,j,k =(e−

(σpeiκei

+αpei)

∆tε0 )ψexy|

n− 12

i,j,k +

σpeiσpeiκpei + κ2

eiαpei

(e−(σpeiκei

+αpei)

∆tε0 − 1

)Hz|

n+ 12

i,j,k −Hz|n+ 1

2i,j−1,k

∆y

(2.12a)

ψexz|n+ 1

2i,j,k =(e−

(σpeiκei

+αpei)

∆tε0 )ψexz|

n− 12

i,j,k +

σpeiσpeiκpei + κ2

eiαpei

(e−(σpeiκei

+αpei)

∆tε0 − 1

)Hy|

n+ 12

i,j,k −Hy|n+ 1

2i,j,k−1

∆z

(2.12b)

Page 37: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

2.3. Condições de Contorno Absorventes 35

A escolha dos parâmetros que compõem os fatores responsáveis pelas convoluções,exerce fator fundamental na performance da camada absorvedora. A distribuição dosvalores de condutividade, no interior da região da CPML, deve ser crescente partindo dovalor nulo na interface domínio interior - CPML, até atingir seu máximo no limite dodomínio de simulação (ELSHERBENI; DEMIR, 2016). O valor máximo de condutividadeé normalizado por um valor ótimo, definido na equação 2.13b (TAFLOVE; HAGNESS,2005):

σmax = σfactor × σopt (2.13a)

σopt = m+ 1150π√εr∆i

(2.13b)

Onde m representa a ordem da distribuição polinomial e εr é a permissividaderelativa do material de fundo do domínio. O cálculo para o valor de condutividade emum determinado ponto da região da CPML pode ser calculado pela equação 2.14a. Jáa condutividade magnética pode ser calculada pela equação 2.14b (RODEN; GEDNEY,2000a) (ELSHERBENI; DEMIR, 2016).

σpei(ρ) = σmax

δ

)m(2.14a)

σpmi(ρ) = µ0

ε0σmax

δ

)m(2.14b)

Onde δ representa a espessura da camada de CPML e ρ representa a distânciado ponto à interface interior do domínio com a CPML. Já a distribuição dos valores deκei e κmi apresenta comportamento crescente, partindo da interface interior do domíniocom a CPML, mas com valor inicial igual a 1 (ELSHERBENI; DEMIR, 2016)(RODEN;GEDNEY, 2000a)(RODEN; GEDNEY, 2000c). A distribuição está exposta na equação2.15.

κ(ρ) = 1 + (κmax − 1)(ρ

δ

)m(2.15)

Para os parâmetros αei e αmi tem-se uma distribuição decrescente partindo de umvalor máximo na interface domínio interior - CPML até um valor mínimo na fronteira dosistema (ELSHERBENI; DEMIR, 2016). A distribuição está exposta na equação 2.16.

αei(ρ) = αmin + (αmax − αmin)(

1− ρ

δ

)(2.16a)

αei(ρ) = µ0

ε0

(αmin + (αmax − αmin)

(1− ρ

δ

))(2.16b)

Page 38: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

36 Capítulo 2. Método das Diferenças Finitas no Domínio do Tempo (FDTD)

As equações básicas do FDTD, encontradas nas equações 2.2 são executadas emtodo o domínio computacional. Em seguida, são executadas as equações utilizando ascondições de contorno do tipo CPML. Essas equações são muito semelhantes às já obtidasanteriormente no grupo de equações 2.2. Como exemplo, na equação 2.17, está exposta aequação com relação à coordenada x para o campo elétrico. As equações para as outrasdireções de campo elétrico e do campo magnético podem ser deduzidas de maneira análoga.

Ex|n+1i,j,k =

2εi,j,k −∆tσei,j,k2εi,j,k + ∆tσei,j,k

× Ex|ni,j,k

+ 1κeyi,j,k

2∆t(2εi,j,k + ∆tσei,j,k)∆y

× (Hz|n+1/2i,j,k −Hz|n+1/2

i,j−1,k)

+ 1κezi,j,k

2∆t(2εi,j,k + ∆tσei,j,k)∆z

× (Hy|n+1/2i,j,k −Hy|n+1/2

i,j,k−1)

+ 2∆t(2εi,j,k + ∆tσei,j,k)

× ψexy|n+ 1

2i,j,k

+ 2∆t(2εi,j,k + ∆tσei,j,k)

× ψexz|n+ 1

2i,j,k

(2.17)

2.4 ConclusãoO algoritmo de FDTD é uma poderosa ferramenta para o cálculo de campos

eletromagnéticos. Sua simplicidade de implementação e precisão dos resultados, além deser um método numérico que soluciona os campos no domínio do tempo, aparecem comoprincipais vantagens (TAFLOVE; HAGNESS, 2005). Como desvantagens, podemos citarprincipalmente o custo computacional envolvido em sua implementação.

As condições de contorno absorventes do tipo CPML são utilizadas por apresentarmínima taxa de reflexão e poderem ser colocadas próximas da fronteira do ambiente desimulação sem perda de resultados (ELSHERBENI; DEMIR, 2016). O impacto negativono desempenho do programa devido à presença da CPML é esperado, já que, como pode-seobservar na equação 2.17, são acrescentados termos nas equações de atualização doscampos na região onde o material da CPML está presente, com a finalidade de atenuar oscampos irradiados.

Page 39: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

37

3 Plataforma de Computação ParalelaCUDA

3.1 Introdução

Com o objetivo de diminuir o tempo computacional gasto em problemas quepossuem um elevado grau de paralelismo, cada vez mais são utilizadas GPGPUs. Esse fatose deve principalmente à possibilidade da exploração do grande numero de processadorespresentes nessas unidades gráficas (LIVESEY et al., 2012). A melhoria na performance e aconsequente redução no custo computacional é observada principalmente pela diminuiçãoda latência e aumento da largura de banda. A latência representa o tempo gasto em umaoperação de acesso à memória. Já a largura de banda representa a quantidade de dadosque podem ser transferidos da memória para o processador por unidade de tempo. O termoGPGPU vem do fato das GPUs poderem ser utilizadas pra fins genéricos, diferentes dasua utilização habitual para gráficos tridimensionais. Dentre as várias utilizações no meioacadêmico, podemos citar as aplicações que envolvem eletromagnetismo computacional,transferência de calor e escoamento de fluidos.

Devido à grande independência dos cálculos realizados em cada um dos seus pontos,o método FDTD apresenta um elevado grau de paralelismo. Por isso, sua implementaçãoem paralelo em unidades gráficas vem sendo pesquisada, como pode ser visto em (DU; LI;KONG, 2009) , (ADAMS; PAYNE; BOPPANA, 2007), (INMAN; ELSHERBENI; SMITH,2005), (INMAN; ELSHERBENI, 2006), e (KRAKIWSKY; TURNER; OKONIEWSKI,2004). Um dos possíveis sistemas de processamento gráfico a ser utilizado na implementaçãoparalela do método de FDTD é conhecido como Compute Unified Device Architecture.Quando comparada com outras estratégias de otimização para o FDTD, como por exemploclusters computacionais ou FPGA, o CUDA se destaca por ser uma solução de baixocusto e simples implementação de Hardware (DU; LI; KONG, 2009). Outra característicaimportante a ser observada é a possibilidade da programação de CUDA em C, que é umadas linguagens mais utilizadas no mundo. Com o advento do CUDA, a programação emplacas gráficas se tornou mais acessível a programadores sem conhecimento de computaçãográfica, o que implicou no surgimento e desenvolvimento de mais aplicações de computaçãode propósito geral (DU; LI; KONG, 2009).

No presente capítulo é apresentada a plataforma de computação paralela CUDA,suas características de memória e funcionamento. Além disso, são apresentadas tambémas estratégias de otimização utilizadas para que se possa extrair o máximo do poder deprocessamento do CUDA em uma aplicação para o cálculo de FDTD.

Page 40: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

38 Capítulo 3. Plataforma de Computação Paralela CUDA

3.2 Compute Unified Device Architecture

3.2.1 Introdução

CUDA é um modelo de programação paralela projetado para utilizar GPUs devários núcleos para programação de uso geral (DU; LI; KONG, 2009). Introduzida em2006 pela NVIDIA, seu objetivo principal é fornecer uma alternativa para a resolução deproblemas computacionais complexos de forma mais eficiente que em uma CPU (NVIDIA,2017). Isso é obtido pela utilização de uma série de multiprocessadores presentes em uma,ou várias placas gráficas (LIVESEY et al., 2012). A evolução do potencial das placasgráficas está acontecendo em um ritmo muito mais rápido que o das CPUs (NVIDIA,2017).

CUDA foi projetado para possibilitar o desenvolvimento de programas que consigamfacilmente ter um aumento de performance (escalabilidade) à medida que mais poder deprocessamento é disponibilizado, com uma baixa curva de aprendizado para os usuáriosque possuem experiência em programação (NVIDIA, 2017). Esse aumento no poder deprocessamento pode ser originado tanto pelo aumento no número de GPUs utilizadas naaplicação quanto pela evolução da própria unidade gráfica.

A programação em CUDA é mais adequada para resolução de problemas quepodem ser expressos com paralelismo de dados (CHENG; GROSSMAN; MCKERCHER,2014). Diferentemente do paralelismo de tarefas, que é focado na distribuição de diferentesfunções em vários núcleos, o paralelismo de dados acontece quando muitos dados podemser trabalhados pela mesma função simultaneamente. Nesse caso, os dados são distribuídosem vários núcleos de processamento (CHENG; GROSSMAN; MCKERCHER, 2014). Se oproblema apresenta uma quantidade massiva de dados, além de exibir um alto nível deparalelismo de dados, as GPUs aparecem como uma possível ferramenta de aceleraçãodevido ao seu grande número de núcleos programáveis e um elevado valor máximo delargura de banda(CHENG; GROSSMAN; MCKERCHER, 2014). Mais especificamente, asGPUs são mais indicadas a processos que exibem lógica de controle não tão sofisticadae cálculos aritméticos intensos (DEMIR; ELSHERBENI, 2010)(ELSHERBENI; DEMIR,2016)(CHENG; GROSSMAN; MCKERCHER, 2014).

Atualmente, uma GPU não é uma plataforma que consegue operar independente-mente de outros softwares ou hardwares. Ou seja, a GPU necessita de operar em conjuntocom uma CPU, atuando como um coprocessador (CHENG; GROSSMAN; MCKERCHER,2014). A comunicação entre GPU e CPU é realizada pelo barramento PCI-EXPRESS.Dessa maneira, parte do código é processada pela CPU e parte fica a cargo da GPU paraser processado. A programação heterogênea consiste na aplicação de diferentes arquiteturascomputacionais em uma mesma aplicação. Nas aplicações em CUDA, ela é utilizada parapermitir a elaboração de programas com comunicação entre a CPU e as GPUs. Uma

Page 41: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

3.2. Compute Unified Device Architecture 39

aplicação que utiliza programação heterogênea consiste basicamente de duas partes: códigodo Host, ou CPU, e código do Device, ou GPU. Na figura 4 podemos ver o fluxo de umprograma em CUDA.

A utilização da computação heterogênea no ambiente do CUDA se dá através deum conjunto de extensões da linguagem de programação C. O CUDA também pode serprogramado em Python, Fortran, DirectCompute e OpenACC (NVIDIA, 2017). O códigodo Host é responsável pelo gerenciamento do código e dados para a GPU. O mesmo étambém responsável por enviar a ordem para que os dados sejam processados pela GPU .Já o Device, fica responsável por realizar as tarefas selecionadas pelo Host, que devem serprioritariamente de computação intensiva. As operações consideradas tarefas independentese que podem ocorrer concorrentemente entre si são: cálculos no Host; cálculos no Device;transferências de memória do Host para o Device e vice-versa; transferências de memóriadentro da memória de uma dada GPU e transferência de memória entre GPUs (NVIDIA,2017).

Figura 4: Fluxo Típico de um Programa em CUDA. Fonte: (CHENG; GROSSMAN;MCKERCHER, 2014)

3.2.2 Características Principais

O processamento de dados em paralelo do CUDA mapeia cada um dos elementosdo problema para threads, ou encadeamentos de funções, que trabalham em paralelo(NVIDIA, 2017). Assim, ao longo do domínio computacional do programa, cada threadfica responsável por executar uma determinada função em um dado elemento, ou ponto,do domínio de simulação. A organização e divisão das threads em grupos conhecidos comoblocos são de responsabilidade do programador, que deve levar em conta as característicasdo problema analisado para chegar a uma organização, ou mapeamento, de threads quemelhor se adeque ao problema analisado. Para isso, deve-se conhecer a as estruturashierárquicas de memória e de threads (CHENG; GROSSMAN; MCKERCHER, 2014). Astrês abstrações consideradas pela comunidade de programação são (NVIDIA, 2017): aideia de grupos de threads, memórias compartilhadas e sincronização de barreira. Essestópicos são discutidos ao longo do capítulo.

Page 42: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

40 Capítulo 3. Plataforma de Computação Paralela CUDA

Os Multiprocessadores do tipo streaming (Streaming multiprocessors), ou SM, sãoa parte da GPU que de fato realizam o trabalho de processamento, através da execução doskernels (WILT, 2013). Cada SM é formado por milhares de registradores que podem serdivididos entre as threads de execução, vários espaços de memória cache, wrap schedulerse núcleos de execução de operações de ponto flutuante e inteiros. Os Wrap schedulerssão responsáveis por gerenciar a execução das threads e a sua alternância entre processos(WILT, 2013).

Cada GPU é formada por um conjunto de SMs, os quais possuem recursos dememória e registradores escassos. Um gerenciamento eficiente desses recursos contribuipara se atingir a melhor performance. Os SM são projetados para conseguir processarcentenas de threads simultaneamente. Como cada GPU é formada por múltiplos SMs, épossível a execução de milhares de threads simultaneamente na mesma GPU (CHENG;GROSSMAN; MCKERCHER, 2014).

3.2.2.1 CUDA Threads

Thread pode ser definida como um caminho ou fluxo sequencial de execuçãode código dentro de um programa (HYDE, 1999). Também conhecido como linha ouencadeamento de execução, uma thread executa certo programa enquanto atua com outrasthreads que estão concorrentemente executando o mesmo programa (TUCKER, 2004). EmCUDA, cada dado é mapeado para uma thread, que recebe uma identificação.

A identificação de threads é realizada através de um vetor de três componentes, oque nos dá opção de identificar cada uma das threads utilizadas usando um índice uni, biou tridimensional. As threads são agrupadas em conjuntos chamados blocos de threads.Atualmente a capacidade máxima de um bloco é de 1024 threads (NVIDIA, 2017). Osblocos também são organizados de uma a três dimensões formando o grid, ou grade, deblocos. O número de blocos que compõem um grid de simulação muitas vezes é definidopela quantidade de dados processada pelo programa ou pela quantidade de processadoresno sistema (NVIDIA, 2017). Cada bloco de threads é executado pelo mesmo SM. Parafins de processamento, as threads são executadas em grupos de 32 threads chamados dewarps (WILT, 2013). Na figura 5 está representada a divisão do ambiente de simulação ea relação entre threads, blocos e grid.

3.2.2.2 Kernels

As funções executadas pelos processadores da GPU CUDA são conhecidas comoKernels. Ao comando do Host, eles são executados N vezes por N threads distintas,simultaneamente (NVIDIA, 2017). Onde N é o número de dados do problema mapeadospara as threads. São funções que podem ser definidas e inicializadas pelo Host, masprocessadas pela GPU. A CPU inicia um kernel, enviando seu pedido de execução para a

Page 43: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

3.2. Compute Unified Device Architecture 41

Figura 5: Hierarquia de Threads. Fonte: (NVIDIA, 2017)

GPU, e em seguida fica livre para iniciar outro processo qualquer enquanto a GPU executao kernel solicitado. Por isso, seu lançamento é considerado um processo assíncrono (WILT,2013). Quando um kernel é lançado, o mesmo é processado em forma de uma grade deblocos de threads.

3.2.2.3 Memória

Para que os núcleos CUDA possam processar os dados endereçados a eles, énecessário que os dados se encontrem na memória da GPU. Nas aplicações tradicionaisde CUDA, os dados são inicializados na memória do Host e em seguida copiados para amemória da GPU. Após serem processados, eles são copiados de volta para a memória doHost para que possam ser exibidos, salvos em arquivo ou pós processados (NVIDIA, 2017).

Dentro da memória da GPU, existem três tipos principais de memória acessíveispelas threads durante a execução de um Kernel. São elas a Memória Global, a MemóriaLocal e a Memória Compartilhada. Sua correta utilização é fundamental para que se possaextrair o máximo de desempenho dos programas desenvolvidos (DEMIR; ELSHERBENI,2010). Primeiramente, cada thread tem a sua própria Memória Local, acessada somentepor ela. Seu tempo de vida é o mesmo de sua thread referente. Cada bloco de threadspossui sua Memória Compartilhada que é visível e acessível por todas as threads que ocompõem. Já a memória global pode ser acessada por todas as threads, independente dequal bloco pertencem. Essa memória tem o tempo de duração do programa (NVIDIA,2017). Na figura 6 está representada a hierarquia de memória em CUDA. Existem tambéma Memórias do tipo Texture e do tipo Surface. Essas memórias são otimizadas para leiturasde dados que são organizados em matrizes (NVIDIA, 2017).

Um dos problemas observados ao se desenvolver uma rotina de processamentoparalelo do método de FDTD em CUDA é o fato de que as transferências de memória

Page 44: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

42 Capítulo 3. Plataforma de Computação Paralela CUDA

Figura 6: Hierarquia de Memória. Fonte: (NVIDIA, 2017)

do Host para a GPU, e vice versa, são operações que consomem muito tempo, já que acada iteração do FDTD (DEMIR; ELSHERBENI, 2010), os dados são copiados de voltada GPU para CPU. No FDTD o registro do que ocorreu a cada instante de tempo énecessário para se obter os parâmetros eletromagnéticos (YEE, 1966).

Uma alternativa para esse problema é a utilização da Unified Memory. UnifiedMemory, conforme definido em (NVIDIA, 2017), é um componente de CUDA que criauma espaço de memória no qual todos os processadores, sejam eles da GPU ou da CPU,têm acesso a uma imagem coerente de memória com um espaço de endereço comum.Basicamente, esse componente gerencia o acesso e localidade dos dados em um programaCUDA sem a necessidade das chamadas explícitas de cópia de memória. Ou seja, o UnifiedMemory migra os dados entre GPU e CPU à medida que os mesmos são requisitadosnesses locais.

Caso um processador tente acessar dados que não estejam alocados em seu espaçode memória, acontece um erro do tipo page fault. Sempre que um kernel é iniciado, todamemória alocada utilizando Unified Memory geralmente tem que ser transferida para amemória da GPU para evitar esse tipo de falha nos acessos de memória (NVIDIA, 2017).

A mudança no fluxo de trabalho de um programa em CUDA devido à utilização daUnified Memory pode ser visto na figura 7. Não foram encontrados artigos de utilizandoCUDA para paralelismo do método de FDTD que utilizassem a Unified Memory.

Page 45: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

3.3. Modelo Desenvolvido 43

Figura 7: Fluxo de Trabalho com Utilização da Unified Memory

3.3 Modelo DesenvolvidoA fim de explorar o poder de processamento, e a consequente diminuição no

custo computacional, disponibilizado pelo CUDA, foi desenvolvido uma aplicação paraa realização de cálculos de FDTD. Para que fosse possível explorar de forma eficiente aplataforma CUDA, foram adotadas estratégias de otimização. Diferentes implementaçõesdo método de FDTD em CUDA vem sendo desenvolvidas ao longo dos anos, como pode serobservado em (DONNO et al., 2010) (DU; LI; KONG, 2009) (DEMIR; ELSHERBENI, 2010)(LIVESEY et al., 2012) (TOIVANEN et al., 2011) (NAGAOKA;WATANABE, 2010) (BO etal., 2011) (CHI et al., 2011). Além disso, em (ELSHERBENI; DEMIR, 2016), há um capítulodedicado à implementação de rotinas de FDTD em CUDA. Na figura 8 está apresentado ofluxo de trabalho do modelo desenvolvido. A aplicação desenvolvida no presente trabalhoprocessa o método de FDTD em um ambiente de simulação tridimensional, ou seja, asestruturas que serão simuladas apresentam três dimensões e os campos eletromagnéticosque serão obtidos também apresentam componentes nas três direções: x, y e z.

Figura 8: Fluxo de Trabalho - FDTD + CUDA

Diferentemente do que foi apresentado em (DU; LI; KONG, 2009) (LIVESEY etal., 2012) (DEMIR; ELSHERBENI, 2010) (NAGAOKA; WATANABE, 2010) (BO et al.,2011) (CHI et al., 2011), o presente trabalho divide o domínio de simulação em umagrade tridimensional de blocos tridimensionais. Cada thread é responsável pelo cálculode pelo menos uma célula do FDTD e recebe uma identificação (endereçamento) única.Para realizar esse endereçamento, foi utilizado um mapeamento de três dimensões parauma dimensão. Esse mapeamento foi realizado conforme a equação 3.1. Dessa maneira,

Page 46: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

44 Capítulo 3. Plataforma de Computação Paralela CUDA

todo o domínio é mapeado para uma grade tridimensional que pode ser completamenteprocessada com apenas um lançamento de kernel. Na figura 9 é possível ver como foirealizado o mapeamento do domínio de simulação. Na época em que os trabalhos (DU;LI; KONG, 2009) (DEMIR; ELSHERBENI, 2010) (LIVESEY et al., 2012) (NAGAOKA;WATANABE, 2010) (BO et al., 2011) (CHI et al., 2011) foram publicados, o CUDAainda não disponibilizava o recurso da utilização de grade de blocos tridimensional. Porisso, nesses trabalhos existem técnicas para possibilitar a varredura de todo o espaço desimulação de maneira mais eficiente possível.

ThreadIdx = i+Nx ∗ j +Nx ∗Ny ∗ k; (3.1)

Onde,

ThreadIdx representa o índice em uma dimensão da thread;

Nx e Ny representam o número de elementos nas direções x e y respectivamente;

(i, j, k) representam as coordenadas tridimensionais do ponto no ambiente tridi-mensional na forma (x,y,z).

Figura 9: Domínio de Simulação

Em (LIVESEY et al., 2012), quatro estratégias são discutidas. Na primeira abor-dagem, implementada em (CHI et al., 2011) (BO et al., 2011), o espaço tridimensional édividido em planos bidimensionais. Os blocos e threads utilizados possuem duas dimensões.A cada lançamento de kernel, são realizados os cálculos em paralelo do método de FDTDpara apenas um plano referente. Conforme o autor expressa, apesar de expor todos ospontos de um mesmo plano ao paralelismo, todo o potencial de concorrência do algoritmode FDTD não é explorado, já que todos os cálculos em todos os planos são independentesuns dos outros. Para que esse fato não diminua a performance do programa, deve-se ga-rantir que a quantidade de dados presente em um plano deixem completamente ocupadostodos os núcleos disponíveis pela GPU. Na segunda abordagem, o domínio tridimensionaltambém é dividido em planos bidimensionais. No entanto, com o lançamento de apenas um

Page 47: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

3.3. Modelo Desenvolvido 45

kernel, todos os dados são processados. Isso ocorre porque dentro do kernel está presenteum loop do tipo for que faz com que cada thread atravesse toda a direção z executando oscálculos. Exemplos da aplicação dessa abordagem pode ser encontrada em (NAGAOKA;WATANABE, 2010).

Na terceira, implementada em (ONG et al., 2010), e quarta, implementada em(LIVESEY et al., 2012), abordagens, o domínio de simulação é processado através deuma única chamada de kernel. Na terceira abordagem, os blocos são alocados em duasdimensões e cada índice de bloco é mapeado para uma das três dimensões do espaçotridimensional, x, y, e z. Cada thread é unidimensional e o seu índice é mapeado para adimensão que não foi escolhida para o bloco. Dessa forma, se consegue atribuir uma célulado espaço para cada thread, garantindo máximo paralelismo nesse algoritmo. O número dethreads que são possíveis de trabalhar simultaneamente está relacionado com a quantidadede SMs presentes na GPU. Já na quarta abordagem, uma decomposição similar à terceiraé aplicada mas com a liberdade de poder definir a carga de trabalho de cada thread. Essacarga de trabalho é definida pela razão entre a quantidade de threads por bloco e o númerode células na direção que a thread foi alocada.

Em (DEMIR; ELSHERBENI, 2010), duas alternativas são utilizadas para realizaro mapeamento dos pontos do espaço tridimensional para as threads. Na primeira, osblocos são construídos como unidimensionais enquanto as threads que os compõem sãounidimensionais e mapeadas para as células do plano x-y (mapeamento 2d-1d). A grade éconstruída como uma entidade bidimensional onde sua dimensão x é mapeada para o planox-y (mapeamento 2D-1D) ao passo que a sua dimensão y é mapeada para a dimensão zdo espaço computacional. Como esse método garante o mapeamento de uma célula paracada thread, o maior nível de paralelismo é obtido. Na segunda alternativa, a definição deblocos e threads é semelhante à anterior. A diferença está dentro do kernel. Semelhanteao que ocorre na já discutida implementação encontrada em (NAGAOKA; WATANABE,2010), um loop for é adicionado ao kernel para possibilitar que uma thread percorra todaa direção z realizando os cálculos.

No método de FDTD existe um intervalo de tempo entre o cálculo dos camposelétricos e o cálculo dos campos magnéticos no ambiente de simulação. Por isso, o cálculodos campos elétricos só pode ser iniciado após o termino do cálculo dos campos magnéticosem todos os pontos do domínio computacional. Como visto em (DU; LI; KONG, 2009),não existe sincronismo dentro de um kernel. Ou seja, naturalmente, não há uma garantiade que as threads dentro de um kernel realizem as operações sincronizadamente. Threadsdessincronizadas podem levar a erros de cálculos. Por exemplo, caso uma thread necessitedo resultado de um cálculo realizado por outra thread, é preciso garantir que o valordesejado já esteja disponível. Pode-se definir uma barreira para garantir que a execução dokernel seja interrompida até que todas as threads já tenham atingido esse ponto. Ou seja,

Page 48: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

46 Capítulo 3. Plataforma de Computação Paralela CUDA

essa barreira força a sincronização das threads nesse ponto, já que a execução do kernelsomente continuará assim que todas threads tenham atingido o mesmo ponto.

Essa barreira pode ser realizada de duas formas. Pode-se utilizar a função syncth-reads(), para forçar as threads a aguardarem até que todas tenham chegado ao ponto nocódigo no qual essa função foi utilizada, para dar prosseguimento à execução do código.Essa alternativa é muito utilizada quando se possui funções do tipo if, para se evitar adivergência de threads dentro de um kernel (NVIDIA, 2017). Outra maneira de forçar essasincronização é dividindo os cálculos em mais de um kernel. Os kernels são lançados demaneira sequencial para gerar barreiras sucessivas de sincronização para as threads. Apóscada kernel, as threads são reiniciadas e iniciam a execução do próximo kernel ao mesmotempo.

No programa desenvolvido a barreira de sincronismo é definida utilizando-se umkernel para o cálculo dos campos magnéticos e um kernel para o cálculo do campo elétrico.Dessa forma, no início do cálculo do campo elétrico o resultado referente ao cálculo docampo magnético já está disponível para ser utilizado pelas threads que realizarão o cálculodo campo elétrico. Essa abordagem é utilizada por todas as aplicações de FDTD analisadasno presente trabalho. Além dessa barreira, é também utilizada a função syncthreads()dentro do kernel para se evitar a divergência na execução das threads que compõem umwarp. Sempre que se usa instruções de controle de fluxo, como if, else, do, for ou while,existe a possibilidade de se criar uma divergência entre as threads o que pode impactarsignificativamente a performance e os resultados da aplicação (NVIDIA, 2017). Essadivergência aparece já que algumas threads podem seguir caminhos de execução diferentes,devido ao resultado das condicionais introduzidas. Por isso é interessante a utilização dabarreira de sincronismo sempre que houver uma função, ou instrução, de controle de fluxo.

Apesar de necessárias, as barreiras de sincronização podem afetar a performancede um programa em CUDA, já que obrigam as threads a aguardar que todas estejam nomesmo ponto para continuar a sua execução. Ou seja, as barreiras de sincronização podemforçar o multiprocessador a ficar ocioso enquanto espera pela sincronização das threads.Por isso, sua utilização deve ser somente em casos de necessidade. No desenvolvimento doalgoritmo de FDTD deve-se priorizar a mínima utilização de condicionais e outras funçõesque possam a causar a divergência de threads a fim de se utilizar o mínimo de barreiras desincronização possíveis. Infelizmente, na implementação das condições de contorno do tipoCPML, muitos condicionais foram utilizados devido à natureza da mesma.

3.3.0.1 Estratégias de Otimização

Em (NVIDIA, 2017) encontram-se documentadas as melhores práticas para seobter o máximo de desempenho das aplicação de CUDA. No entanto, essas recomendaçõessão gerais para operações em CUDA. É função do programador selecionar quais destas

Page 49: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

3.3. Modelo Desenvolvido 47

práticas se ajustam ao seu problema devido às especificidades do seu problema e hardwareutilizado. Dentre o que é apresentado, as recomendações que mais se aplicam ao métodode FDTD em paralelo são as seguintes (DEMIR; ELSHERBENI, 2010):

1. Estruturar o algoritmo de maneira a explorar ao máximo o paralelismo de dados

2. Garantir que, sempre que possível, os acessos à memória aconteçam de maneiracoalescida

3. Utilização da Memória Compartilhada para os acessos à memória não coalescidos

4. Manter o nível elevado de ocupação dos processadores.

5. Utilizar o número múltiplo de 32 para a quantidade de threads por bloco aumentara eficiência computacional

A fim de explorar o máximo de paralelismo de dados, em cada kernel, o cálculo decampo em cada célula é realizado simultaneamente. O cálculo em cada célula é independentedo cálculo que está sendo realizado em outras células (DEMIR; ELSHERBENI, 2010).Além disso, devido a distribuição e mapeamento dos dados do ambiente de simulaçãoemthreads, cada thread fica responsável pelo cálculo de campo eletromagnético em umacélula - o que também ajuda a expor o algoritmo ao paralelismo de dados. Recomendação1 atendida.

Ao se analisar o algoritmo de FDTD em paralelo, percebe-se que as equações queo compõem são computacionalmente simples. Ou seja, sua execução não demanda muitodos SMs. Ao invés disso, o que consome mais recursos computacionais são as transaçõesde memória. Para chegarem ao seu resultado final, as equações de atualização do FDTDnecessitam de buscar na memória valores previamente calculados e armazenados. A cadaiteração do método de FDTD inúmeros acessos à memória são executados nos kernelsde cálculo de campo elétrico e magnético. Como visto em (LIVESEY et al., 2012) e(DEMIR; ELSHERBENI, 2010), as operações de cálculo de campo eletromagnético sãodominadas por acessos à memória e não por instruções aritméticas. O tamanho do problemae a quantidade de iterações necessárias para que se obtenha o resultado final impactamdiretamente no número de transações de memória necessários ao programa. Quanto maioro problema, mais acessos à memória são necessários para sua resolução. Devido a isso,para aplicações em GPUs, o maior gargalo para a eficiência de algoritmos de FDTD sãoos acessos ineficientes à memória (DEMIR; ELSHERBENI, 2010).

Fica claro então, que o gerenciamento dos acessos à memória é passo crucial paraa elaboração de um programa mais eficiente. Os acessos a Unified Memory possuem umalatência maior que os acessos à Memória Compartilhada e à Memória Local. Por ter omesmo tempo de vida do programa, todos os dados utilizados pelas equações de atualização

Page 50: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

48 Capítulo 3. Plataforma de Computação Paralela CUDA

do FDTD se encontram alocados na Unified Memory. Por isso, a cada iteração do algoritmo,várias operações de leitura ou escrita nesse espaço de memória são executadas. A memóriaé acessada por transações de 32, 64 ou 128 bytes e suporta leitura ou escrita de palavras detamanho igual a 1, 2, 4, 8 ou 16 bytes. Sempre que acessada, é interessante que se agrupea maior quantidade de requisições possíveis em uma única transação para diminuir aquantidade de transações. Esse agrupamento de requisições só é possível se forem atendidoscertos requisitos. Primeiramente, o tipo da variável utilizado deve ter tamanhos de 1,2, 4, 8, ou 16 bytes. Além disso, as variáveis devem estar naturalmente alinhadas. Essealinhamento é obtido tornando adjacentes os acessos simultâneos à memória. Variáveis dotipo double, tipo predominantemente utilizado no presente trabalho, automaticamente seenquadram no requisito de tamanho.

Para o modelo desenvolvido, o acesso eficiente é obtido definindo-se rigorosamenteo número de células nas direção y e x como múltiplos de 16. Dessa maneira agrupa-seo máximo de acessos dentro de um warp (ELSHERBENI; DEMIR, 2016). As célulasacrescentadas são eletricamente isoladas do problema original. Caso o problema tenhaum número de células, em alguma dessas direções, que não seja múltiplo de 16, sãoacrescentadas células nas direções necessárias para garantir tal condição. Apesar deaumentar a quantidade de memória necessária para guardar os dados, esse aumento nonúmero de células altera positivamente a performance dos kernels (DEMIR; ELSHERBENI,2010). Na figura 10 está representado o domínio de simulação com as células acrescentadaspara melhoria de performance.

Figura 10: Domínio com Células adicionas para aumento de performance

Conforme pode ser visto na equação 3.1, o índice das threads é uma grandezaunidimensional originada de uma grandeza tridimensional. Mantendo o número de célulasem x e y como múltiplo de 16, qualquer variação em x ou em y acarreta em uma variaçãode 16, ou seus múltiplos, no valor de ThreadIdx. Isso reduz a quantidade de acessossimultâneos desalinhados (NVIDIA, 2017). Como exemplo podemos citar o cálculo docampo magnético na direção x, Hx(i, j, k), onde i, j e k representam os índices das célulasnas direções x, y e z. Para obter seu valor, é necessário acessar na memória os espaçosreferentes aos campos elétricos em y, Ey(i, j, k), distantes entre si de uma célula, ou seja,Ey(i, j, k) e Ey(i, j, k + 1). Como cada célula do programa é identificada por ThreadIdx,

Page 51: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

3.3. Modelo Desenvolvido 49

os acessos simultâneos na memória seriam de ThreadIdx e ThreadIdx + NX + NY .Garantindo NX e NY como múltiplos de 16, consegue-se agrupar o máximo de acessosdentro de um warp (DEMIR; ELSHERBENI, 2010). Esse agrupamento também é obtidonos acessos distantes e uma célula na direção y. Na direção x não se pode garantir tal fato(DEMIR; ELSHERBENI, 2010)(ELSHERBENI; DEMIR, 2016)(NVIDIA, 2017).

Para que os acessos a dados não alinhados tenham um impacto menor à performancedo programa, é possível a utilização da Memória Compartilhada. Caso algum dado sejausado com certa frequência em um kernel, é interessante que o mesmo seja copiado para aMemória Compartilhada para diminuir a latência (NVIDIA, 2017). Apesar de sua utilizaçãoser muito útil para reduzir a latência dos acessos de memória a dados não alinhados,quando implementada no algoritmo de FDTD, a Memória Compartilhada apresenta umproblema.

Para a execução das equações de atualização do método de FDTD são necessáriosdados que se encontram em células de Yee adjacentes. Um dado que foi copiado, poruma thread, para a Memória Compartilhada, somente pode ser acessado por threads quepertencem ao mesmo bloco da thread responsável pela transação de escrita na memória.Por isso, sempre que uma thread necessita acessar dados em um bloco adjacente um erroacontece, comprometendo o resultado final do programa (ELSHERBENI; DEMIR, 2016).Para que não aconteça esse tipo de erro nos resultados é carregado para a Memória Com-partilhada dois grupos de dados: um referente às threads do próprio bloco e outro referenteàs threads dos blocos imediatamente adjacentes (ELSHERBENI; DEMIR, 2016)(DEMIR;ELSHERBENI, 2010). Dessa forma sempre que uma thread necessitar dos dados referentesde uma célula de Yee, mapeada para uma thread que se encontra em um bloco adjacente,não acontecerão erros de acesso.

A ocupação de um SM é definida pela razão entre o número de warps sendoexecutados e o número máximo de warps (CHENG; GROSSMAN; MCKERCHER, 2014).A NVIDIA disponibiliza ferramentas para se obter a taxa de ocupação de uma aplicação,como O CUDA Occupancy Calculator e o Visual Profiler(WILT, 2013). Em forma deplanilha de Excell, O CUDA Occupancy calculator necessita de vários parâmetros paraexibir os resultados de warps ativas, número máximo de warps e ocupação de cadamicroprocessador. Já o Visual Profiler utiliza um relatório do programa analisado paraapresentar características de performance, como a taxa de ocupação. A quantidade dethreads por bloco, a quantidade de memória Compartilhada e o número de registradores porthread interferem no cálculo da taxa de ocupação (DEMIR; ELSHERBENI, 2010) (CHENG;GROSSMAN; MCKERCHER, 2014) (WILT, 2013). Orientações para o aumento da taxade ocupação dos SMs podem ser encontradas em (CHENG; GROSSMAN; MCKERCHER,2014), dentre eles, os que mais se adequam ao FDTD são: manter o número de threadsmaior ou igual a 128 e múltiplo de 32, manter o número de blocos muito maior que o número

Page 52: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

50 Capítulo 3. Plataforma de Computação Paralela CUDA

de SMs para expor paralelismo suficiente para a placa gráfica e realizar experimentos parase chegar a uma melhor configuração de utilização de recursos.

3.4 ConclusãoO CUDA apresenta diversas funcionalidades e no presente trabalho é utilizado

para o desenvolvimento de um algoritmo em paralelo para o método de FDTD. Com oobjetivo de diminuir o custo computacional e acelerar a obtenção da resposta de cálculo doFDTD, um série de otimizações devem ser tomadas de modo a explorar todo o potencialdisponível pelo CUDA. Felizmente através da análise de trabalhos previamente realizadose da própria documentação disponibilizada pelo seu fabricante, NVIDIA, foi possíveldesenvolver uma aplicação que atingisse os objetivos propostos. Como diferença crucialdos trabalhos consultados estão a utilização do componente Unified Memory e também dagrade de simulação tridimensional.

Page 53: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Parte II

Resultados

Page 54: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 55: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

53

4 Simulações e Resultados

4.1 IntroduçãoPara a validação do modelo desenvolvido é preciso obter os resultados fornecidos

por ele para um problema já caracterizado anteriormente para verificação da consistênciado que foi obtido. Além disso, é interessante verificar o ganho de desempenho obtido pelaaplicação, bem como a avaliação do mesmo através das métricas de desempenho maisadequadas a programas executados por GPUs.

O presente programa foi desenvolvido a fim ser utilizado em simulações de dis-positivos eletromagnéticos genéricos. No entanto, sua utilização inicial foi restringida àanálise de antenas impressas. Por isso, foram selecionados, para verificação, problemas comantenas desse tipo. Foram obtidos os resultados de corrente, tensão de entrada e perda deretorno.

É comparada, também, a velocidade de execução entre o que foi desenvolvido euma aplicação que executa o FDTD de maneira serial. Análises de performance tambémestão presentes. Os testes foram executados na GPU NVIDIA Tesla K40m (NVIDIA, 2017(accessed April 17, 2017)). Suas características estão expressas na tabela 1.

Tabela 1: Características do Cartão de Vídeo

Nome Tesla K40mCapacidade de Computação (Compute Capability) 3.5Frequência de Clock 745 MHzMemória Global Total 12 GBLargura de Banda de Memória 288 GB/sNúmero de Multiprocessadores 15Número de núcleos de processamento 2880Memória Compartilhada por MultiProcessador 49 kBRegistradores por MultiProcessador 65536Máximo de Threads em um bloco 1024Máximo de Threads em um warp 32

4.2 Resultados para validação do ModeloCom o objetivo de validar o modelo desenvolvido, foram realizadas duas simulações

para a obtenção do parâmetro s11 como medida da perda de retorno. Inicialmente foisimulada uma antena de microfita retangular já anteriormente estudada em (SHEEN etal., 1990) e (SULLIVAN, 2000). Em seguida foi simulada uma antena do tipo espiral plana

Page 56: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

54 Capítulo 4. Simulações e Resultados

(PSA) (NAKANO; YASUI; YAMAUCHI, 2002) otimizada para operação em 2.5 GHz. Osresultados para s11 obtidos foram comparados a fim de validar o modelo. Na figura 11 estárepresentada a antena de microfita retangular e na figura 12 está exposta a antena PSA.

Figura 11: Antena de Microfita Retangular alimentada por uma linha (SHEEN et al.,1990)

Figura 12: Antena de Espiral Plana

4.2.1 Resultados da Antena de Microfita Retangular (Patch Antenna) (SHEENet al., 1990)

As dimensões dos intervalos de espaço são: ∆x = 0, 389 mm, ∆y = 0, 400 mm e∆z = 0.265 mm. O número de células que compõe a antena é 60× 100× 3 nas direções x,y, e z respectivamente. Cada direção recebeu mais 10 células de ar e mais 20 células paracompor a camada de CPML. No total o espaço de simulação possui 386100 células.

O intervalo de tempo utilizado foi ∆ = 0, 441 ps. A antena é alimentada por umpulso Gaussiano com atraso de tempo igual a 3T , onde T = 15 ps. O pulso Gaussianoencontra-se representado na figura 13. A alimentação da antena acontece no ponto 1assinalado na figura 11. Os sinais de tensão e corrente foram obtidos sobre a micro fita

Page 57: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

4.2. Resultados para validação do Modelo 55

que alimenta a antena, no ponto 1. No conjunto de figuras 14 pode-se observar como ocampo elétrico na direção z se propaga no ambiente computacional. Foram realizadas 8000iterações para obtenção dos resultados.

Foi obtido o campo elétrico na direção z, sobre a superfície da antena em quatroinstantes de tempo distintos, conforme exposto no conjunto de figuras 14. É possívelperceber a evolução do campo elétrico devido à excitação ao longo da antena. À partirde 400 iterações já é possível observar o efeito da geometria no campo elétrico observado.Nos instantes de 600 e 800 iterações isso já é mais visível, pois podemos o efeito no campodevido às reflexões internas da antena.

Nos gráficos de tensão e corrente, representados nas figuras 15 e 16 também épossível perceber o efeito das reflexões internas da antena na tensão amostrada no pontode alimentação. A tensão tende a estabilizar a partir de 6000 iterações. Já a correnteestabiliza por volta de 5000 iterações.

A resposta obtida para o parâmetro s11 foi comparada com respostas do artigooriginal (SHEEN et al., 1990) e do software de Simulação HFSS. Como pode ser observadona figura 17, os valores obtido pelo modelo desenvolvido estão coerentes com as respostas dasduas outras fontes. Os dois pontos principais de ressonância e a característica de atenuaçãoextremamente baixa para frequências abaixo de 5 GHz ficam claramente evidenciadas.

Figura 13: Pulso gaussiano Utilizado na Simulação

4.2.2 Antena Impressa do Tipo PSA

As dimensões dos intervalos de espaço são: ∆x = 0, 5 mm, ∆y = 0, 500 mm e∆z = 0, 508 mm. O número de células que compõe a antena é 240× 212× 3 nas direções

Page 58: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

56 Capítulo 4. Simulações e Resultados

(a) t = 200∆t (b) t = 400∆t

(c) t = 600∆t (d) t = 800∆t

Figura 14: Campo elétrico na direção z em quatro instantes de tempo distintos.

Figura 15: Tensão nos terminais de entrada da Antena de Microfita Retangular

x, y, e z respectivamente. Cada direção recebeu mais 10 células de ar e mais 16 célulaspara compor a camada de CPML. No total o espaço de simulação possui 1835932 células.

O intervalo de tempo utilizado foi ∆t = 96, 7957 ps. A antena é alimentada porum pulso Gaussiano com atraso de tempo igual a 3T , onde T = 16, 67 ps, semelhanteao apresentado na figura 13, apenas com diferença no seu atraso de tempo. A ponto de

Page 59: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

4.2. Resultados para validação do Modelo 57

Figura 16: Corrente na Entrada da Antena de Microfita Retangular

Figura 17: Perda de Retorno da Antena de Microfita Retangular

alimentação da antena se dá em seu centro. Foram necessárias 20000 iterações para seobterem os resultados.

Foi obtido o campo elétrico na direção z, sobre a superfície da antena em quatroinstantes de tempo distintos, conforme exposto no conjunto de figuras 18. É possívelobservar o efeito devido à geometria da antena sobre o campo elétrico.

Nos gráficos de tensão e corrente, representados nas figuras 19 e 20 também épossível perceber o efeito das reflexões internas da antena na tensão amostrada no pontode alimentação. A tensão tende a estabilizar a partir de 6000 iterações. Já a correnteestabiliza por volta de 5000 iterações.

Page 60: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

58 Capítulo 4. Simulações e Resultados

A resposta obtida para o parâmetro s11 foi comparada com resposta do softwarede Simulação HFSS, como pode ser observado na figura 21. Novamente, os valores obtidospelo modelo desenvolvido estão coerentes com o que foi obtido pelo HFSS. É possívelobservar o ponto principal de ressonância em torno de 2, 5 GHz.

(a) t = 200∆t (b) t = 400∆t

(c) t = 600∆t (d) t = 800∆t

Figura 18: Campo elétrico na direção z em quatro instantes de tempo distintos.

Figura 19: Tensão nos terminais de entrada da Antena PSA

Page 61: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

4.3. Comparação com algoritmo de FDTD convencional e Características de Performance 59

Figura 20: Corrente na Entrada da Antena PSA

Figura 21: Perda de Retorno da Antena PSA

4.3 Comparação com algoritmo de FDTD convencional e Caracte-rísticas de Performance

Inicialmente foi avaliado como a variação do número de threads por bloco e osdiferentes tipos de acesso à memória influenciam no tempo de execução dos kernels. Nostestes também é possível ver o impacto das condições de contorno no tempo de execução.Foram realizadas 30000 iterações em um espaço computacional de 8 milhões de células. Osresultados estão representados nas figuras 22 e 23. O tempo de execução inclui o tempogasto nos kernels de inicialização de variáveis.

Page 62: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

60 Capítulo 4. Simulações e Resultados

Figura 22: Tempo de execução em função do número de threads por bloco utilizandosomente acessos à Unified Memory

Figura 23: Tempo de execução em função do número de threads por bloco utilizandoauxílio da Memória Compartilhada

Como pode ser observado na figuras 22 e 23, o pico de performance acontece quandose utiliza 1024 threads por bloco e apenas acessos à memória global, ou seja, quando nãose utiliza a Memória Compartilhada. Isso está em desacordo com o que é apresentadoem (DEMIR; ELSHERBENI, 2010). Como justificativa para o ocorrido, podemos citardois principais fatores. Primeiramente, foi utilizado o recurso Unified Memory que eraindisponível à época na qual (DEMIR; ELSHERBENI, 2010) foi publicado. Esse recurso,além de possibilitar a estruturação do programa em Programação Orientada a Objetos,otimiza a performance das transações de memória através da migração dos dados para

Page 63: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

4.3. Comparação com algoritmo de FDTD convencional e Características de Performance 61

o dispositivo que os está utilizando (CPU ou GPU) (NVIDIA, 2017). Além disso, outrofator que contribui para a perda de performance utilizando a Memória Compartilhada éa utilização de barreiras de sincronismo. Essas barreiras são necessárias para o corretocarregamento dos dados da Memória Global para a Memória Compartilhada e afetamnegativamente a performance do programa.

Podemos observar também que o tempo de execução dos kernel é maior quandoutiliza-se a CPML. Na região onde está presente a CPML, é realizada uma série de cálculosenvolvendo os campos eletromagnéticos e diversos acessos à memória, fato que não aconteceao se utilizar PEC. Além dos acessos à memória, essas operações acrescentam condicionaisque necessitam de barreiras de sincronismo para operar adequadamente. Esses fatores sãoresponsáveis pelo aumento do tempo de execução.

Através do componente Visual Profiler da NVIDIA (NVIDIA, 2017) é possívelobter os valores de ocupação da aplicação desenvolvida. Para a configuração de máximaperformance, a ocupação média obtida foi de 95%, conforme figuras 24 e 25.

Figura 24: Ocupação referente ao Kernel Campo Elétrico para o Máximo de Performance

Figura 25: Ocupação referente ao Kernel Campo Magnético para o Máximo de Performance

Uma das métricas utilizadas para se avaliar a performance da rotina desenvolvidaé conhecida como Número de Milhões de Células por Segundo (NMCPS) (DEMIR;ELSHERBENI, 2010). Ele se refere ao número de células, em milhões, que são processadospor segundo pela aplicação. Seu equacionamento está expresso na equação 4.1.

NMCPS = nitr ×Nx ×Ny ×Nz

ts× 10−6 (4.1)

onde,

nitr representa o número de iterações realizadas;

Nx, Ny e Nz representam o número de elementos nas direções x, y e z, respectiva-mente;

ts representa o tempo gasto na execução do programa.

Page 64: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

62 Capítulo 4. Simulações e Resultados

As simulações para a obtenção e comparação do NMCPS foram realizadas parauma quantidade dados do problema de 1 a 20 milhões de células e número de iteraçõesigual a 10000. Como fonte de excitação foi utilizado um pulso Gaussiano que se encontrana figura 13. O resultado das simulações pode ser observado na figura 26. Nessa figuratemos a comparação do resultado de performance da aplicação em CUDA utilizandoas condições de contorno PEC e CPML. O NMCPS máximo obtido foi para o modeloutilizando as condições de contorno do tipo PEC. NMCPS médio média de uma aplicaçãoconvencional de FDTD que opera somente por meio da CPU é de aproximadamente 25milhões de células por segundo. O NMCPS máximo obtido pelo modelo desenvolvido foiaproximadamente 631.46. Por isso, o ganho máximo observado entre as duas aplicações éde aproximadamente 25 vezes.

Figura 26: Número de Milhões de Células Por Segundo

4.4 ConclusãoOs resultados obtidos pela simulação da antenas selecionadas apresentam pequena

diferença do que é apresentado em (SHEEN et al., 1990) e com o que foi obtido utilizandoo HFSS. Por isso, pode-se considerar o modelo desenvolvido como válido para simulação deestruturas semelhantes às simuladas. Testes com estruturas mais complexas e com disposi-tivos não lineares não foram realizados, por isso, para que o modelo seja completamentevalidado, são necessários testes com diferentes tipos de estruturas e componentes.

Por meio dos resultados obtidos é possível perceber que a rotina de simulação emparalelo apresenta uma performance significativamente maior que a aplicação convencionalserial. O ganho de velocidade de execução observado foi da ordem de 25 vezes. Quandose analisa NCMPS de ambas implementações, nota-se uma disparidade muito grande

Page 65: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

4.4. Conclusão 63

entre elas. O NMCPS máximo da aplicação em paralelo é de aproximadamente 631, aopasso que para a aplicação convencional esse valor é constante em aproximadamente 25(ELSHERBENI; DEMIR, 2016). Fica claro também, o impacto negativo na performancedevido à aplicação das condições de contorno absorventes do tipo CPML.

Page 66: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 67: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

65

5 Considerações finais e Propostas de Conti-nuidade

5.1 Considerações Finais

No presente trabalho foi elaborado um programa para execução do método deFDTD em paralelo com as condições de contorno CPML por meio da utilização daplataforma computacional CUDA. Esse programa é destinado á análise de estruturaseletromagnéticas genéricas. No entanto, as análises foram concentradas em estruturasdo tipo antena impressa, já que esse tipo de estrutura compreende a maior parte dosproblemas que serão inicialmente analisados com a ferramenta desenvolvida. Para talfim, foi realizada uma revisão bibliográfica que engloba o método de FDTD, as condiçõesde contorno do tipo CPML e a plataforma CUDA. Visando utilizar o máximo de podercomputacional disponibilizado pelo CUDA uma série de otimizações foi realizada. Foramrealizadas simulações para validação do modelo e para avaliação de seu desempenho. Comoresultado da presente pesquisa, foi publicado o artigo (PIMENTA et al., 2017)

A escolha pelas condições de contorno do tipo CPML se deu já que é consideradao estado da arte (TOIVANEN et al., 2011) (ELSHERBENI; DEMIR, 2016). Além disso, ofato de que em sua execução, a CPML possui instruções aritméticas simples e a dependênciaapenas do dados da iteração anterior à atual, foram fatores determinantes para sua escolha.Conforme proposto em (TOIVANEN et al., 2011), os cálculos de atualização dos camposeletromagnéticos devido a CPML acontecem dentro dos kernels de seus respectivos campos,ou seja, a atualização dos campos elétricos devido à CPML ocorre dentro do kernel quecalcula o campo elétrico em todo ambiente de simulação. A atualização dos camposmagnéticos devido às condições de contorno segue o mesmo princípio. Essa maneira seapresentou a mais eficiente e de mais fácil implementação, conforme visto em (TOIVANENet al., 2011)..

As otimizações propostas para o correto aproveitamento do potencial do CUDAacabaram por tornar o programa várias vezes mais eficiente que um programa convencionalque utiliza apenas a CPU para execução do FDTD. O pico de performance observado foide aproximadamente 400 NMCPS quando utilizadas as CPML, bem acima dos 25 NMCPS(ELSHERBENI; DEMIR, 2016) das aplicações convencionais. Não foram encontradostrabalhos anteriores que apresentam o desempenho de uma rotina de FDTD em paraleloque utiliza a CPML. No presente trabalho essas condições de contorno introduzem umaqueda no desempenho quando comparadas com as do tipo PEC. Utilizando PEC, oprograma tem um pico de performance de aproximadamente 631 NMCPS.

Page 68: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

66 Capítulo 5. Considerações finais e Propostas de Continuidade

Pelo que foi observado, pode ser que a utilização da CPML não seja a mais adequadadevido à quantidade e condicionais inseridos, que acabam prejudicando a performancedo programa. Outras alternativas que a princípio de maneira serial não são eficientes,podem se apresentar melhor performance em um algoritmo paralelo. No entanto, nãoforam pesquisadas outras condições de contorno absorventes para contornar o problemade performance.

A utilização do componente Unified Memory para a elaboração de uma rotina pormeio de Programação Orientada a Objetos foi crucial para o encapsulamento do mesmo e apossível integração a outros programas. Diferentemente do que é apresentado em (DEMIR;ELSHERBENI, 2010), a utilização da Memória Compartilhada não apresentou ganho deperformance. Pelo contrário, sua utilização diminuiu a taxa de transferência do programa.Fato que pode ser explicado pela utilização da Unified Memory que não estava disponívelquando (DEMIR; ELSHERBENI, 2010) foi escrito.

A validação por meio de simulações foi realizada em problemas do tipo antenaimpressa. Foram simuladas duas antenas: uma do tipo Patch, presente em (SHEEN etal., 1990) e (SULLIVAN, 2000), e uma do tipo espiral plana (PSA) (NAKANO; YASUI;YAMAUCHI, 2002) otimizada para frequência de 2, 5 GHz. Foram obtidos valores decorrente e tensão na porta de alimentação dos dispositivo ao longo do tempo e em seguidacalculado o valor de perda de retorno. satisfatoriamente, os valores obtidos pelo programadesenvolvidos estão coerentes com os resultados das outras fontes. Foi registrado também,a título de visualização, o campo elétrico orientado em z ao longos da antenas em quatroinstantes de tempo.

5.2 Propostas de Continuidade

O constante desenvolvimento dos recursos computacionais acaba gerando umainfinidade de possíveis melhorias. CUDA já disponibiliza hardwares mais avançados comdiferentes recursos para melhoria dos acessos à memória. Além disso, existe a possibilidadeda utilização de múltiplas GPUs para a aplicação do algoritmo em paralelo. Com asmúltiplas GPUS pode-se associar partes do espaço de simulação a cada uma de modo aaumentar o tamanho dos problemas possíveis de serem analisados. Por fim, a utilização deCUDA para o pós-processamento dos sinais também pode ser explorada já que as suasbiblioteca já possuem ferramentas para tratamento de números complexos e Transformadade Fourier.

Dentre as possibilidades a serem desenvolvidas, há o estudo da viabilidade de sedesenvolver uma solução que opera exclusivamente na GPU, ou seja, uma solução All inDevice. O Host seria utilizado apenas como inicializador do processo, mas todo o programaseria executado pela GPU. Além disso, a utilização de CUDA como ferramenta para

Page 69: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

5.2. Propostas de Continuidade 67

paralelização de outros métodos, como Elementos Fnitos ou Meshless podem ser explorada.

Como continuidade deste trabalho é proposta a sua integração a uma rotina deotimização de antenas impressas, podendo atuar como núcleo principal de processamentodessa estrutura de otimização. A cada iteração da rotina de otimização, os dados sãoenviados para o software desenvolvidos, processados e em seguida retornados para a rotinaprincipal. Feitas as verificações do que foi obtido, novos dados são enviados para seremprocessados até que tenha se atingido o objetivo desejado.

Page 70: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is
Page 71: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

69

Referências

ADAMS, S.; PAYNE, J.; BOPPANA, R. Finite difference time domain (fdtd) simulationsusing graphics processors. In: 2007 DoD High Performance Computing ModernizationProgram Users Group Conference. [S.l.: s.n.], 2007. p. 334–338. Citado na página 37.

BEGGS, J. H. et al. Finite-difference time-domain implementation of surface impedanceboundary conditions. IEEE Transactions on Antennas and Propagation, v. 40, n. 1, p.49–56, Jan 1992. ISSN 0018-926X. Citado na página 34.

BÉRENGER, J. Perfectly Matched Layer (PML) for Computational Electromagnetics.Morgan & Claypool Publishers, 2007. (Synthesis lectures on computationalelectromagnetics). ISBN 9781598290820. Disponível em: <https://books.google.com.br/books?id=FlBG8gILebsC>. Citado 2 vezes nas páginas 31 e 32.

BO, Z. et al. Accelerating fdtd algorithm using gpu computing. In: 2011 IEEEInternational Conference on Microwave Technology Computational Electromagnetics. [S.l.:s.n.], 2011. p. 410–413. Citado 2 vezes nas páginas 43 e 44.

CHENG, J.; GROSSMAN, M.; MCKERCHER, T. Professional CUDA CProgramming. Wiley, 2014. (EBL-Schweitzer). ISBN 9781118739327. Disponível em:<https://books.google.com.br/books?id=q3DvBQAAQBAJ>. Citado 5 vezes naspáginas 11, 38, 39, 40 e 49.

CHEW, W. C.; WEEDON, W. H. A 3d perfectly matched medium from modifiedmaxwell’s equations with stretched coordinates. Microwave and Optical TechnologyLetters, Wiley Subscription Services, Inc., A Wiley Company, v. 7, n. 13, p. 599–604, 1994.ISSN 1098-2760. Disponível em: <http://dx.doi.org/10.1002/mop.4650071304>. Citadona página 32.

CHI, J. et al. Gpu-accelerated fdtd modeling of radio-frequency field-tissue interactions inhigh-field mri. IEEE Transactions on Biomedical Engineering, v. 58, n. 6, p. 1789–1796,June 2011. ISSN 0018-9294. Citado 2 vezes nas páginas 43 e 44.

CINALLI, M.; SCHIAVONI, A. A stable and consistent generalization of the fdtdtechnique to nonorthogonal unstructured grids. IEEE Transactions on Antennas andPropagation, v. 54, n. 5, p. 1503–1512, May 2006. ISSN 0018-926X. Citado na página 21.

DEMIR, V.; ELSHERBENI, A. Compute unified device architecture (cuda) based finite-difference time-domain (fdtd) implementation. Applied Computational ElectromagneticsSociety Journal, Applied Computational Electromagnetics Society (ACES), v. 25, n. 4, p.303–314, 2010. ISSN 1054-4887. Citado 12 vezes nas páginas 38, 41, 42, 43, 44, 45, 47, 48,49, 60, 61 e 66.

DONNO, D. D. et al. Introduction to gpu computing and cuda programming: A casestudy on fdtd [em programmer’s notebook]. IEEE Antennas and Propagation Magazine,v. 52, n. 3, p. 116–122, June 2010. ISSN 1045-9243. Citado na página 43.

DU, L.; LI, K.; KONG, F. Parallel 3d finite difference time domain simulations ongraphics processors with cuda. In: 2009 International Conference on Computational

Page 72: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

70 Referências

Intelligence and Software Engineering. [S.l.: s.n.], 2009. p. 1–4. Citado 5 vezes nas páginas37, 38, 43, 44 e 45.

ELSHERBENI, A.; DEMIR, V. The Finite Difference Time Domain for Electromagnetics:With Matlab Simulations. SciTech Publishing Incorporated, 2016. (Aces Series onComputational Electromagnetics and Engineering). ISBN 9781613531754. Disponívelem: <https://books.google.com.br/books?id=dOjwnQEACAAJ>. Citado 20 vezes naspáginas 11, 21, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 43, 48, 49, 63 e 65.

HOLLAND, R. Threds: A finite-difference time-domain emp code in 3d sphericalcoordinates. IEEE Transactions on Nuclear Science, v. 30, n. 6, p. 4592–4595, Dec 1983.ISSN 0018-9499. Citado na página 21.

HYDE, P. Java Thread Programming. Sams, 1999. (Sams Professional Series).ISBN 9780672315855. Disponível em: <https://books.google.com.br/books?id=7x10QgAACAAJ>. Citado na página 40.

INMAN, M. J.; ELSHERBENI, A. Z. Acceleration of field computations using graphicalprocessing units. In: 2006 12th Biennial IEEE Conference on Electromagnetic FieldComputation. [S.l.: s.n.], 2006. p. 51–51. Citado na página 37.

INMAN, M. J.; ELSHERBENI, A. Z.; SMITH, C. E. Fdtd calculations using graphicalprocessing units. In: IEEE/ACES International Conference on Wireless Communicationsand Applied Computational Electromagnetics, 2005. [S.l.: s.n.], 2005. p. 728–731. Citadona página 37.

KRAKIWSKY, S. E.; TURNER, L. E.; OKONIEWSKI, M. M. Graphics processor unit(gpu) acceleration of finite-difference time-domain (fdtd) algorithm. In: 2004 IEEEInternational Symposium on Circuits and Systems (IEEE Cat. No.04CH37512). [S.l.: s.n.],2004. v. 5, p. V–265–V–268 Vol.5. Citado na página 37.

KUZUOGLU, M.; MITTRA, R. Frequency dependence of the constitutive parametersof causal perfectly matched anisotropic absorbers. IEEE Microwave and Guided WaveLetters, v. 6, n. 12, p. 447–449, Dec 1996. ISSN 1051-8207. Citado na página 32.

LIVESEY, M. et al. Development of a cuda implementation of the 3d fdtd method. IEEEAntennas and Propagation Magazine, v. 54, n. 5, p. 186–195, Oct 2012. ISSN 1045-9243.Citado 6 vezes nas páginas 37, 38, 43, 44, 45 e 47.

LUEBBERS, R. J.; HUNSBERGER, F. Fdtd for nth-order dispersive media. IEEETransactions on Antennas and Propagation, v. 40, n. 11, p. 1297–1301, Nov 1992. ISSN0018-926X. Citado na página 34.

NAGAOKA, T.; WATANABE, S. A gpu-based calculation using the three-dimensionalfdtd method for electromagnetic field analysis. In: 2010 Annual International Conferenceof the IEEE Engineering in Medicine and Biology. [S.l.: s.n.], 2010. p. 327–330. ISSN1094-687X. Citado 3 vezes nas páginas 43, 44 e 45.

NAKANO, H.; YASUI, H.; YAMAUCHI, J. Numerical analysis of two-arm spiralantennas printed on a finite-size dielectric substrate. IEEE Transactions on Antennas andPropagation, v. 50, n. 3, p. 362–370, Mar 2002. ISSN 0018-926X. Citado 2 vezes naspáginas 54 e 66.

Page 73: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

Referências 71

NVIDIA. NVIDA - CUDA C Programming Guide 8.0.61. [S.l.], 2017. Disponível em:<http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html>. Citado 11 vezesnas páginas 11, 21, 38, 39, 40, 41, 42, 46, 48, 49 e 61.

NVIDIA. Tesla K40 GPU Accelerator - Board Specification. [S.l.], 2017 (accessedApril 17, 2017). Disponível em: <http://www.nvidia.com/content/PDF/kepler/Tesla-K40-PCIe-Passive-Board-Spec-BD-06902-001_v05.pdf>. Citado na página 53.

ONG, C. Y. et al. Speed it up. IEEE Microwave Magazine, v. 11, n. 2, p. 70–78, April2010. ISSN 1527-3342. Citado na página 45.

OPPENHEIM, A.; WILLSKY, A.; NAWAB, S. Signals and Systems. Prentice Hall,1997. (Prentice-Hall signal processing series). ISBN 9780138147570. Disponível em:<https://books.google.com.br/books?id=LwQqAQAAMAAJ>. Citado na página 25.

PIMENTA, R. C. M. et al. 3d cuda fdtd based method for analysis of microstrip antennas.In: 2017 SBMO/IEEE MTT-S International Microwave and Optoelectronics Conference(IMOC). [S.l.: s.n.], 2017. p. 1–5. Citado na página 65.

RAMOS, G. L. Caracterizacão Banda Larga de Antenas Impressas sobre Substratoscom Pequenas Perdas: uma Abordagem via FDTD/WP-PML e Expansão em MultipolosEsfericos no Domnio do Tempo. Tese (Phd thesis) — Universidade Federal de MinasGerais, 2013. Citado 2 vezes nas páginas 26 e 30.

RODEN, J. A.; GEDNEY, S. An efficient fdtd implementation of the pml with cfs ingeneral media. In: IEEE Antennas and Propagation Society International Symposium.Transmitting Waves of Progress to the Next Millennium. 2000 Digest. Held in conjunctionwith: USNC/URSI National Radio Science Meeting (C. [S.l.: s.n.], 2000. v. 3, p. 1362–1365vol.3. Citado 2 vezes nas páginas 21 e 35.

RODEN, J. A.; GEDNEY, S. An efficient fdtd implementation of the pml with cfs ingeneral media. In: IEEE Antennas and Propagation Society International Symposium.Transmitting Waves of Progress to the Next Millennium. 2000 Digest. Held in conjunctionwith: USNC/URSI National Radio Science Meeting (C. [S.l.: s.n.], 2000. v. 3, p. 1362–1365vol.3. Citado na página 21.

RODEN, J. A.; GEDNEY, S. D. Convolution pml (cpml): An efficient fdtd implementationof the cfs–pml for arbitrary media. Microwave and Optical Technology Letters, JohnWiley & Sons, Inc., v. 27, n. 5, p. 334–339, 2000. ISSN 1098-2760. Disponível em:<http://dx.doi.org/10.1002/1098-2760(20001205)27:5<334::AID-MOP14>3.0.CO;2-A>.Citado 5 vezes nas páginas 21, 32, 33, 34 e 35.

SHEEN, D. M. et al. Application of the three-dimensional finite-difference time-domainmethod to the analysis of planar microstrip circuits. IEEE Transactions on MicrowaveTheory and Techniques, v. 38, n. 7, p. 849–857, Jul 1990. ISSN 0018-9480. Citado 8 vezesnas páginas 11, 20, 22, 53, 54, 55, 62 e 66.

SULLIVAN, D. Electromagnetic Simulation Using the FDTD Method. Wiley, 2000. (IEEEPress Series on RF and Microwave Technology). ISBN 9780780347472. Disponível em:<https://books.google.com.br/books?id=U7lzQgAACAAJ>. Citado 5 vezes nas páginas11, 22, 27, 53 e 66.

Page 74: FerramentaComputacionalDirecionadaà ......Palavras-chave:FDTD.CUDA.ProcessamentoParalelo.CondiçõesdeContorno.CPML. Abstract In the present project, a computational application is

72 Referências

TAFLOVE, A.; HAGNESS, S. Computational Electrodynamics: The Finite-differenceTime-domain Method. Artech House, 2005. (Artech House antennas and propagationlibrary). ISBN 9781580538329. Disponível em: <https://books.google.com.br/books?id=n2ViQgAACAAJ>. Citado 9 vezes nas páginas 21, 25, 26, 28, 29, 30, 31, 35 e 36.

TOIVANEN, J. I. et al. Comparison of CPML implementations for the GPU-acceleratedFDTD solver. Progress In Electromagnetics Research (PIER) M, v. 19, p. 61–75, 2011.Disponível em: <http://www.jpier.org/PIERM/pierm19/06.11061002.pdf>. Citado 2vezes nas páginas 43 e 65.

TUCKER, A. Computer Science Handbook, Second Edition. CRC Press, 2004.ISBN 9780203494455. Disponível em: <https://books.google.com.br/books?id=hNLKBQAAQBAJ>. Citado na página 40.

WILT, N. The CUDA handbook: a comprehensive guide to GPU programming. Upper SaddleRiver, NJ: Addison-Wesley, 2013. Disponível em: <http://cds.cern.ch/record/1599061>.Citado 3 vezes nas páginas 40, 41 e 49.

YEE, K. Numerical solution of initial boundary value problems involving maxwell’sequations in isotropic media. IEEE Transactions on Antennas and Propagation, v. 14,n. 3, p. 302–307, May 1966. ISSN 0018-926X. Citado 6 vezes nas páginas 21, 25, 26, 29,30 e 42.