• Nenhum resultado encontrado

fastRTM: um ambiente integrado para desenvolvimento rápido da migração reversa no tempo (RTM) em plataformas FPGA de alto desempenho

N/A
N/A
Protected

Academic year: 2021

Share "fastRTM: um ambiente integrado para desenvolvimento rápido da migração reversa no tempo (RTM) em plataformas FPGA de alto desempenho"

Copied!
154
0
0

Texto

(1)

Pós-Graduação em Ciência da Computação

fastRTM

: Um Ambiente Integrado para

Desenvolvimento Rápido da Migração Reversa

no Tempo (RTM) em Plataformas FPGA de Alto

Desempenho”

Por

Victor Wanderley Costa de Medeiros

Tese de Doutorado

Universidade Federal de Pernambuco posgraduacao@cin.ufpe.br www.cin.ufpe.br/~posgraduacao

(2)
(3)

UNIVERSIDADE*FEDERAL*DE*PERNAMBUCO*

CENTRO*DE*INFORMÁTICA*

PÓS5GRADUAÇÃO*EM*CIÊNCIA*DA*COMPUTAÇÃO!

*

VICTOR*WANDERLEY*COSTA*DE*MEDEIROS*

“fastRTM:*Um*Ambiente*Integrado*para*Desenvolvimento*Rápido*da*

Migração*Reversa*no*Tempo*(RTM)*em*Plataformas*FPGA*de*Alto*

Desempenho*"*

*

*

*

*

ESTE TRABALHO FOI APRESENTADO À PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO DO CENTRO DE INFORMÁTICA DA UNIVERSIDADE FEDERAL DE PERNAMBUCO COMO REQUISITO PARCIAL PARA OBTENÇÃO DO GRAU DE DOUTOR EM CIÊNCIA DA COMPUTAÇÃO.

(4)

Catalogação na fonte

Bibliotecária Jane Souto Maior, CRB4-571

Medeiros, Victor Wanderley Costa de

fastRTM: um ambiente integrado para desenvolvimento rápido da migração reversa no tempo (RTM) em plataformas FPGA de alto desempenho. / Victor Wanderley Costa de Medeiros - Recife: O Autor, 2013.

xxv, 126 p.: fig., tab.

Orientador: Manoel Eusebio de Lima.

Tese (doutorado) - Universidade Federal de Pernambuco. CIn, Ciência da Computação, 2013.

Inclui bibliografia.

1. Arquitetura de computadores. 2. Computação de alto desempenho. 3. FPGA. I. Lima, Manoel Eusebio de (orientador). II. Título.

(5)

Tese de Doutorado apresentada por Victor Wanderley Costa de Medeiros à Pós Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco, sob o título “fastRTM: Um Ambiente Integrado para Desenvolvimento Rápido da Migração Reversa no Tempo (RTM) em Plataformas FPGA de Alto Desempenho” orientada pelo Prof. Manoel Eusebio de Lima e aprovada pela Banca Examinadora formada pelos professores:

______________________________________________ Prof. Abel Guilhermino da Silva

Centro de Informática / UFPE

______________________________________________ Profa. Edna Natividade da Silva Barros

Centro de Informática / UFPE

_______________________________________________ Prof. Edward David Moreno Ordonez

Departamento de Computação / UFS

_________________________________________________ Prof. Carlos Augusto Paiva da Silva Martins

Departamento de Engenharia Elétrica / PUC-MG

_________________________________________________ Prof. Jairo Panetta

Divisão de Ciência da Computação / ITA

Visto e permitida a impressão. Recife, 8 de março de 2013

___________________________________________________ Profa. Edna Natividade da Silva Barros

(6)
(7)
(8)
(9)

Agradecimentos

Aos meus Pais, Aldir e Ângela e à minha irmã Carol pelo companheirismo, amizade e carinho em todos os momentos da minha vida e pelo apoio incondicional dado em todas as circunstâncias.

A Bárbara pelo amor, pela amizade e por toda a atenção a mim dedicada.

Ao meu orientador e amigo, Professor Manoel Eusebio de Lima, por todo o suporte fornecido durante a execução deste trabalho e pelas críticas construtivas que me ajudaram a melhorá-lo.

Ao meu orientador na Alemanha Professor Wolfgang Rosenstiel, por ter me recebido e dado todo o suporte e infra-estrutura para a execução do trabalho.

Aos Professores Abel Guilhermino, Edna Barros, Edward Moreno, Carlos Augusto Martins e Jairo Panetta, integrantes da banca de avaliação, que contribuíram significativa-mente para o engrandecimento do trabalho.

Aos meus grandes amigos Ana Carolina, Hermano, Jayro, Natália, Rafael, Taciana, Victor e Viviane pelos momentos de descontração, pelos conselhos, e pelo apoio nas horas de maior estresse.

Aos meus grandes amigos do outro lado do atlântico Alexandre, Annika, Júlio, Suzanne e Marco que muito me ajudaram nos momentos de saudade de casa.

A todos os colegas de trabalho do projeto Sísmica pelo suporte técnico e pela troca de conhecimentos.

Ao Centro de Informática, professores e funcionários, pela infra-estrutura acadêmica e física fornecida a todos os alunos.

Ao CENPES/Petrobrás, CAPES, CNPq, Finep e o DAAD por fomentar e incentivar a pesquisa científica em nosso país.

(10)
(11)

Que a inspiração chegue não depende de mim. A única coisa que posso fazer é garantir que ela me encontre trabalhando. L’inspiration existe mais il vaut mieux qu’elle nous trouve déjà en train

de travailler. —PABLO PICASSO

(12)
(13)

Resumo

O aumento constante da demanda por desempenho e eficiência, e a barreira imposta ao aumento da frequência de operação dos processadores pela tecnologia utilizada na construção dos chips atuais, trouxe o foco da indústria para o desenvolvimento de ar-quiteturas multi-core. Esta abordagem focada em paralelismo foi empregada não só em arquiteturas baseadas em processadores de propósito geral, como também, em novas pla-taformas como: os processadores gráficos (GPUs); processadores Cell; e os dispositivos reconfiguráveis (FPGAs).

Esta mudança de paradigma tem exigido grandes investimentos em pesquisa e desen-volvimento. Além do desenvolvimento do hardware é necessário desenvolver linguagens, compiladores, ferramentas e sistemas operacionais capazes de lidar com o caráter paralelo e heterogêneo destas novas tecnologias. Outro ponto importante a se destacar é o cenário em que vivemos hoje, onde o uso eficiente e sustentável dos recursos naturais é essencial.

Neste contexto, os dispositivos reconfiguráveis, mais especificamente os FPGAs (Field Programmable Gate Arrays), se apresentam como uma excelente alternativa devido ao seu caráter intrinsecamente paralelo e a baixa frequência em que operam, permitindo uma grande capacidade computacional a um baixo custo energético em muitas aplicações. No entanto, o desenvolvimento de aplicações em FPGAs ainda é uma tarefa bastante árdua, exigindo um tempo de desenvolvimento, muitas vezes, incompatível com a necessidade da indústria.

Este trabalho apresenta o ambiente fastRTM, que tem como principal objetivo dar suporte ao desenvolvimento da modelagem e migração sísmicas RTM em plataformas FPGAs de alto desempenho. A modelagem e migração sísmicas são algoritmos computa-cionalmente intensivos utilizados na indústria para prospecção de óleo e gás. O ambiente provê mecanismos para descrição das arquiteturas em FPGA, reuso de componentes, simulação e exploração de espaço de projeto visando reduzir o tempo de desenvolvimento e explorando o potencial de desempenho presente na plataforma FPGA.

O trabalho também apresenta um estudo que confirma a viabilidade do FPGA para este tipo de aplicação, comparando o seu desempenho com o de outras arquiteturas. Palavras-chave: FPGA, HPC, RTM, processamento em stream.

(14)
(15)

Abstract

The constant increasing demand for performance and efficiency, and the barrier imposed to the processors clock frequency by the technology used on current chips, made the industry focus on developing multi-core architectures. This approach, focused on parallelism, was used not just in architectures based on general-purpose processors, but also on new platforms such as the graphics processing units (GPUs); the Cell processors, and the reconfigurable devices (FPGAs).

This paradigm shift has required large investments in research and development. Besides the hardware development, it is also necessary to develop languages, compilers, tools and operating systems capable of dealing with the parallel and heterogeneous characteristics of these new technologies. Another important point to be highlighted is the scenario in which we live today where the efficient and sustainable use of natural resources is essential.

In this context, the reconfigurable devices - specially FPGAs (Field Programmable Gate Arrays), have been considered an excellent alternative due to its intrinsic parallelism and the low operating clock frequency, that allow a large computational power at a low energy cost in many applications. However, the development of applications in FPGAs is still a very arduous task, requiring a development time often incompatible with the industry needs.

This work presents the fastRTM environment. Its main objective is support the de-velopment of the seismic modeling and migration RTM in high performance FPGA platforms. The seismic modeling and migration are computing and data intensive algo-rithms used for oil and gas prospection. The environment provides tools for architectures description, components reuse, simulation and design space exploration aiming to reduce development time and exploring the performance potential of the FPGA platforms.

It is also presented a study that confirms the viability of the FPGA for this type of application, comparing obtained performance with other architectures.

(16)
(17)

Sumário

Lista de Figuras xix

Lista de Tabelas xxiii

Lista de Acrônimos xxv 1 Introdução 1 1.1 Motivação . . . 3 1.2 Objetivos . . . 5 1.3 Metodologia empregada . . . 5 2 Fundamentação teórica 9 2.1 Reverse Time Migration (RTM) . . . 10

2.1.1 Modelagem sísmica em 2D. . . 12

2.2 Escala do problema . . . 14

2.3 Considerações finais . . . 16

3 Ambientes, ferramentas e linguagens para implementação de soluções em plataformas FPGAs 17 3.1 Maxeler Technologies. . . 17

3.1.1 MaxGenFD . . . 20

3.1.2 Conclusões sobre a ferramenta MaxGenFD . . . 21

3.2 ASC: um compilador de aplicações em stream para computação com FPGAs. . . 22

3.2.1 Geração da arquitetura em ASC . . . 24

3.2.2 Considerações sobre o ambiente ASC . . . 26

3.3 FPGA Brook . . . 26

3.3.1 Conclusões sobre o ambiente FPGA Brook . . . 27

3.4 Streams-C . . . 28

3.4.1 Consideração sobre o ambiente Stream C . . . 28

3.5 Convey Computers . . . 28

3.5.1 Personalidades . . . 30

3.5.2 Considerações sobre o Convey Hybrid-core Computer System . 31 3.6 HIDE: A Hardware Intelligent Description Environment . . . 32

(18)

3.6.3 Conclusões sobre o ambiente HIDE . . . 36

3.7 CAPH: uma DSL para implementação de aplicações de processamento em stream para FPGAs . . . 37

3.7.1 Considerações sobre o ambiente CAPH . . . 38

3.8 FlexWAFE . . . 39

3.8.1 Considerações sobre a arquitetura FlexWAFE . . . 40

3.9 Considerações finais . . . 40

4 Implementação da modelagem sísmica em diversas arquiteturas 43 4.1 Processadores multi-core . . . 44 4.1.1 Código seqüencial C . . . 44 4.1.2 Multithreading . . . 47 4.1.3 SIMD . . . 50 Instruções SSE . . . 51 Instruções AltiVec . . . 52

4.1.4 SIMD e multithreading combinados . . . 53

4.2 Processadores gráficos (GPUs) . . . 54

4.3 Plataforma FPGA . . . 59

4.3.1 Hardware utilizado . . . 60

4.4 Considerações sobre o estudo comparativo . . . 61

5 Implementação da modelagem sísmica em FPGA 63 5.1 Implementação da modelagem sísmica 2D em FPGA . . . 64

5.1.1 Caminho de dados . . . 64

Exploração de paralelismo espacial . . . 64

Exploração de paralelismo temporal (Pipeline temporal) . . . . 65

Elementos de processamento (PEs) . . . 68

Inserção de pulso sísmico . . . 69

5.1.2 Arquitetura de memória . . . 69

Organização dos dados . . . 70

Multiport . . . 70

FIFOs e registradores de deslocamento . . . 72

5.1.3 Suporte de software. . . 74

5.1.4 Unidades de controle . . . 76

(19)

6 O ambiente fastRTM 79

6.1 Visão geral do ambiente. . . 79

6.2 Descrição de arquiteturas . . . 82

6.2.1 Módulos da biblioteca padrão libStandard . . . 83

6.2.2 Módulos das bibliotecas libRTM2D e libRTM3D . . . 85

6.3 Simulação . . . 87

6.4 Geração de estimativas . . . 89

6.4.1 Estimativas de desempenho . . . 90

6.4.2 Estimativas de utilização da memória interna . . . 90

6.5 Exploração de espaço de projeto . . . 91

6.5.1 Número de estágios do pipeline temporal e tamanho de partição versus desempenho . . . 91

6.5.2 Distribuição dos buffers de dados nos bancos de memória da plataforma . . . 96

6.6 Conclusões sobre o ambiente fastRTM . . . 97

7 Resultados 99 7.1 Resultados da implementação da modelagem sísmica em plataformas diversas . . . 99

7.1.1 Resultados de desempenho . . . 100

7.1.2 Resultados de eficiência energética . . . 101

7.2 Resultados da utilização das funcionalidades do ambiente fastRTM . . . 102

7.2.1 Descrição da arquitetura para implementação da modelagem sísmica 2D no ambiente fastRTM . . . 103

7.2.2 Simulação da modelagem sísmica 2D no ambiente fastRTM . . 105

7.2.3 Estimativas de desempenho . . . 106

7.2.4 Exploração de espaço de projeto . . . 107

Número de estágios do pipeline temporal e tamanho de partição versus desempenho . . . 107

Distribuição dos buffers de dados nos bancos de memória da plataforma . . . 109

7.3 Publicações realizadas . . . 112

8 Conclusões 115 8.1 Trabalhos Futuros . . . 116

(20)
(21)

Lista de Figuras

1.1 Etapas da metodologia utilizada . . . 6

2.1 Visão geral da exploração sísmica . . . 10

2.2 Fluxo do algoritmo RTM . . . 11

2.3 Modelo de velocidades Marmousi . . . 12

2.4 Operador de quarta ordem no espaço e segunda ordem no tempo . . . . 13

2.5 Equação de propagação da onda e suas respectivas matrizes de processa-mento . . . 14

2.6 Modelo de velocidades 3D (SEG/EAGE Salt Model). . . 15

3.1 Visão geral da arquitetura Maxeler . . . 18

3.2 Fluxo de desenvolvimento de aplicações no ambiente da Maxeler . . . . 19

3.3 Comparação entre a aplicação implementada totalmente em software e na MaxCard utilizado a ferramenta MaxGenFD . . . 21

3.4 Níveis de abstração do ambiente ASC . . . 24

3.5 Exemplo de um código que realiza o incremento dos valores de um vetor 25 3.6 Arquitetura gerada através de ASC para incremento de um vetor. . . 25

3.7 Conceito do Hybrid-core Computer System . . . 29

3.8 Visão geral da plataforma . . . 30

3.9 Abstração através de blocos (blocks) na linguagem HIDE . . . 33

3.10 Sintaxe para criação dos blocos e conexões na linguagem HIDE . . . . 34

3.11 Somador completo de 2-bits na linguagem HIDE. . . 34

3.12 O ambiente de desenvolvimento HIDE. . . 37

3.13 Fluxo de projeto em CAPH . . . 38

3.14 Componentes da placa FlexWAFE . . . 39

3.15 Comparativo das funcionalidades oferecidas pelas plataformas estudadas 42 4.1 Cluster da Universidade de Tübingen . . . 44

4.2 Estratégia seqüencial para processamento da modelagem sísmica 2D . . 46

4.3 Particionamento dos dados das matrizes entre as threads . . . 48

4.4 Estratégia para exploração de paralelismo na modelagem sísmica 2D utilizando threads . . . 48

4.5 Estratégia para exploração de paralelismo na modelagem sísmica 2D utilizando uma arquitetura SIMD . . . 51

(22)

utilizando uma combinação de threads com instruções SIMD . . . 54

4.8 Crescente diferença de desempenho entre GPUs e CPUs . . . 55

4.9 Diferença de filosofia entre as arquiteturas da GPU e CPU . . . 55

4.10 Exploração de paralelismo na modelagem sísmica 2D em GPU . . . 58

4.11 Estrutura interna do FPGA . . . 59

4.12 Visão geral da plataforma baseada em FPGA . . . 61

4.13 Estratégia de exploração do paralelismo temporal e especial na modela-gem sísmica 2D utilizando o FPGA . . . 62

5.1 Dados utilizados nas matrizes de campo de pressão e velocidade (PPF, CPF e VEL) para cálculo de 4 elementos do campo de pressão seguinte (NPF) simultaneamente . . . 65

5.2 Processamento sem pipeline temporal (Um passo de tempo calculado por

vez) . . . 66

5.3 Processamento com pipeline temporal (Quatro passos de tempo calcula-dos simultaneamente) . . . 66

5.4 Visão geral do core de processamento em stream . . . 67

5.5 Estêncil e interface do PE . . . 68

5.6 Organização dos dados nos bancos de memória . . . 71

5.7 Estrutura do Multiport para dados distribuídos em uma única memória física. . . 73

5.8 Arquitetura da estrutura de FIFOs e registradores de deslocamento . . . 75

6.1 Pacotes de classes do ambiente fastRTM . . . 81

6.2 Fluxo do projeto dentro do ambiente . . . 83

6.3 Módulo de controle da inicialização que utiliza as classes EventCounter e BooleanOperation . . . 86

6.4 Área útil e bordas de um problema solucionado com um único passo temporal . . . 92

6.5 Quantidade de dados de borda e dados úteis em cada um dos estágios de um pipeline temporal de 4 estágios . . . 92

6.6 Diferença na relação dados úteis versus dados totais . . . 93

7.1 Comparação de desempenho entre CPU, GPU e FPGA . . . 100

7.2 Módulo de mais alto nível na hierarquia da arquitetura do core de proces-samento (top) . . . 104

(23)

7.3 Módulo que implementa o controle dos blocos de processamento . . . . 105

7.4 Destaque para parte do controle dos blocos de processamento onde são gerados os sinais o_step e o_rd_ppf_and_vel_data . . . 105

7.5 Espaço explorado versus ganho de desempenho em relação a um único passo temporal na plataforma FPGA Stratix V AB . . . 108

7.6 Quantidade de memória necessária para o espaço explorado na FPGA Stratix V AB . . . 109

7.7 Distribuição de dados nos bancos de memória na modelagem sísmica 2D 111

7.8 Impacto do aumento da freqüencia no desempenho . . . 111

(24)
(25)

Lista de Tabelas

4.1 Plataformas e configurações exploradas no estudo de viabilidade da plataforma FPGA . . . 45

7.1 Plataformas e configurações utilizadas nos experimentos e seus respecti-vos resultados de desempenho . . . 101

7.2 Informações sobre as plataformas utilizadas no estudo comparativo . . . 102

7.3 Comparativo de desempenho e eficiência das plataformas . . . 102

7.4 Relatório de síntese da modelagem sísmica 2D . . . 106

7.5 Avaliação de precisão do modelo implementado . . . 107

7.6 Melhor solução encontrada pela ferramenta para três dispositivos FPGA diferentes . . . 108

(26)
(27)

Lista de Acrônimos

ALU Arithmetic Logic Unit

CPF Current Pressure Field

FPGA Field Programmable Gate Array

GPU Graphics Processing Unit

HDL Hardware Description Language

MIMD Multiple Instruction Multiple Data

PPF Previous Pressure Field

RTM Reverse Time Migration

SIMD Single Instruction Multiple Data

SISD Single Instruction Single Data

(28)
(29)

1

Introdução

There is nothing more difficult to take in hand, more perilous to conduct, or more uncertain in its success, than to take the lead in the introduction of a new order of things. —NICCOLO MACHIAVELLI (historiador, poeta, diplomata e músico

italiano do Renascimento)

Nos últimos anos a indústria de semicondutores se deparou com o limite ao aumento da freqüência de operação dos processadores de propósito geral, devido a tecnologia empregada na construção dos mesmos. O aumento constante da freqüência de operação desses processadores e a miniaturização cada vez maior dos transistores eram até então, as estratégias mais utilizadas para a melhoria de desempenho. Contudo, a grande densidade de transistores operando em alta freqüência eleva o consumo de energia a níveis inviáveis de utilização do processador. Diante deste desafio, muitos autores argumentam que novas

abordagens precisam ser adotadas para que a lei de Moore [64] continue ditando o avanço

dos circuitos integrados nos próximos anos[33][46][50][23][29].

Sendo assim, no intuito de atenuar o consumo inviável de energia dos processadores single-core, ao aumentar o número de transistores e a freqüência de operação, os novos processadores passaram a incorporar mais de um core processador em um mesmo die, os

já consolidados processadores multi-core [51].

Esta mudança de abordagem gerou um grande impacto na indústria, visto que, uma mudança do paradigma seqüencial para um paradigma totalmente paralelo, exige o advento de novas linguagens de programação, compiladores, sistemas operacionais e

ambientes de desenvolvimento [8]. Mesmo no mercado de HPC, onde a computação

(30)

multi-core precisam de suporte desses ambientes e linguagens para que seja possível explorar as diferentes formas de paralelismo. Apesar dos esforços da indústria para manter o aumento do poder computacional destes processadores de propósito geral, novas plataformas e arquiteturas, baseadas em co-processadores ou aceleradores, como as Graphic Processing Units (GPUs) e os Field Programmable Gate Arrays (FPGAs), surgem no intuito de prover mais poder computacional de forma ainda mais eficiente. Observando a atual lista dos 500 computadores mais rápidos do mundo (Novembro de

2012) [80], 62 dos 500 utilizam aceleradores ou co-processadores, incluindo o primeiro,

o Titan, e o oitavo, o Tianhe-1A. Na lista anterior, de Junho de 2012, 58 dos 500 eram baseados em aceleradores e co-processadores.

Neste contexto, os dispositivos reconfiguráveis, mais especificamente os FPGAs, aparecem como uma alternativa para computação de alto desempenho (HPC). Apesar de não ser uma tecnologia recente, os FPGAs nunca foram largamente utilizados no

mercado de HPC [36]. Contudo, eles começaram a surgir como uma alternativa atraente

em computação de alto desempenho, principalmente em problemas que necessitem de processamento massivo de dados e cuja arquitetura de processamento possua um alto grau de paralelismo intrínseco. Inicialmente voltados apenas para prototipação de pequenos e médios circuitos digitais, estes dispositivos ganharam um novo fôlego no final da última década, com a inclusão em sua arquitetura reconfigurável de módulos com maior capacidade de armazenamento, processamento aritmético, transceivers de alta velocidade para interconexão, etc. Hoje, os FPGAs possuem uma quantidade de memória interna (BRAMs) que permitem: implementações bastante flexíveis de buffers de armazenamento temporário, dando grande liberdade aos projetistas para extrair o melhor desempenho da arquitetura; grande quantidade de elementos lógicos, que possibilitam a implementação de sistemas cada vez mais complexos; blocos multiplicadores dedicados ao processamento digital de sinais (DSP blocks); e Hard-IPs, que podem ser desde processadores completos

embarcados no FPGA [4] ou interfaces de comunicação como PCIe, por exemplo. Além

da flexibilidade presente no FPGA, que permite a implementação de arquiteturas com alto grau de paralelismo, outra grande vantagem é seu baixo consumo de energia quando comparados com CPUs convencionais e GPUs.

Devido ao fato destes dispositivos operarem em freqüências mais baixas que as outras plataformas, eles apresentam um boa relação entre consumo de energia e desempenho.

Em [79] é possível ver um estudo comparativo entre o consumo de potência no FPGA e

em outras plataformas para a geração de números aleatórios. Em um cenário mundial, onde o uso consciente e responsável das matrizes energéticas vem se destacando, o FPGA

(31)

1.1. MOTIVAÇÃO

aparece como uma tecnologia promissora.

Apesar das vantagens apresentadas, o FPGA possui duas grandes desvantagens. A primeira é o preço do dispositivo, que, apesar de estar sendo constantemente reduzido, ainda é alto quando comparado com as outras alternativas existentes no mercado, como por exemplo, GPUs e CPUs. No entanto, este problema é solucionado com escala de produção. A medida que a tecnologia passar a ser largamente utilizada no mercado de HPC, este custo tende a decrescer. Apesar do custo unitário do FPGA ser elevado, em aplicações onde o ganho de desempenho em relação a outras alternativas é elevado, o alto custo da tecnologia pode ser justificado. A relação custo por FLOPS (floating points operations per second) é comumente utilizada como métrica para avaliar a viabilidade no uso do FPGA.

O segundo problema, que é o foco deste trabalho, está relacionado ao tempo de

de-senvolvimento [65]. Devido ao alto grau de complexidade envolvido no desenvolvimento

para FPGA, o tempo gasto para implementar uma aplicação de alto desempenho e o número de pessoas envolvidas, pode tornar o projeto inviável, em especial quando

consi-deramos a dinâmica da evolução do mercado de HPC [27]. As linguagens de descrição de

hardware (HDLs) como Verilog e VHDL, ainda não oferecem um grau de abstração que tire do desenvolvedor a exigência de um conhecimento mínimo de eletrônica digital. Por outro lado, já existem no mercado linguagens para desenvolvimento de aplicações para

FPGAs que apresentam alto grau de abstração, como Impulse C [67], MitrionC [63] e

Handel-C [45]. Apesar destas linguagens em geral atenderem ao seu principal propósito,

que é reduzir o tempo de desenvolvimento, o desempenho final da implementação não é o mesmo quando uma solução é totalmente customizada utilizando uma HDL como

VHDL ou Verilog [12][10][41].

Neste contexto, este trabalho propõe a construção de um ambiente de desenvolvi-mento, o fastRTM, que tem como principal objetivo dar suporte ao desenvolvimento da modelagem e migração sísmica RTM em plataformas que utilizam FPGAs como co-processador aritmético. Este ambiente deve ser capaz de prover um alto desempe-nho computacional na execução do algoritmo, desenvolvimento mais simplificado e conseqüentemente redução no tempo de desenvolvimento.

1.1 Motivação

Os algoritmos de exploração sísmica, em geral, são computacionalmente muito custosos. No entanto, a busca por petróleo em regiões com estruturas geológicas mais complexas, como o pré-sal, passaram a exigir a necessidade do emprego de algoritmos sísmicos

(32)

ainda mais custosos, como o RTM[40][84][1]. Devido ao alto custo computacional destes algoritmos, é importante que todas as alternativas de plataformas computacionais existentes na atualidade sejam exploradas. Além do uso dos processadores de propósito geral, em especial os multi-cores, novas arquiteturas passaram a ser avaliadas, como por exemplo: as GPUs, os processadores Cell e os FPGAs.

Soluções baseadas nesses dispositivos, capazes de prover uma grande quantidade de poder computacional, podem trazer uma grande vantagem na identificação de novas bacias de petróleo em regiões de estruturas geológicas complexas, aumentar o nível de

acerto na perfuração de poços e conseqüentemente melhorar a produtividade [24].

Para que estes tipos de aplicações consigam de fato obter um excelente desempenho em arquiteturas como FPGAs, o algoritmo deve ser repensado de forma a se adaptar à estrutura provida por ele. Este processo, em geral, é bastante custoso em tempo de desenvolvimento, e por esta razão, a implementação de ferramentas de suporte é de fundamental importância para reduzir este tempo.

Esta tese pretende abordar dois aspectos principais. Primeiramente, verificar a viabili-dade do uso do FPGA na solução destes algoritmos. Em seguida, propor um ambiente onde é possível explorar e implementar, de uma maneira mais simples, várias arquiteturas que executam a modelagem e migração sísmica RTM em FPGA.

O interesse nestes tipos de aplicações teve início no ano de 2007. Neste ano, foi firmado um projeto de cooperação entre o Centro de Informática da UFPE com a rede

de pesquisa RPCMOD [72], vinculada a Petrobras. Este primeiro projeto visava o

desenvolvimento de aceleradores em FPGA para a biblioteca matemática BLAS (Basic

Linear Algebra Subprograms) [17], que realiza operações de álgebra linear, tais como,

multiplicação de vetores e matrizes. Este projeto foi denominado HPCIn - Sistemas Dinamicamente Reconfiguráveis para Computação de Alto Desempenho, e resultou na implementação de um pequeno cluster de FPGAs capaz de acelerar uma subrotina do BLAS que realiza a multiplicação de matrizes.

Devido a visibilidade conquistada através deste projeto, no ano de 2008, um novo projeto, desta vez vinculado ao Centro de Pesquisa da Petrobras (CENPES), foi iniciado e recebeu o nome de: Soluções de Alto Desempenho para Modelagem e Migração Sísmica Baseados em FPGA. O principal objetivo deste projeto era compreender alguns algoritmos relacionados a exploração sísmica, fundamentais no processo de exploração de óleo e gás, e implementá-los, de forma eficiente, em um acelerador baseado em FPGA.

(33)

1.2. OBJETIVOS

1.2 Objetivos

O principal objetivo deste trabalho é propor um ambiente de desenvolvimento capaz de apoiar a implementação da modelagem e migração sísmica RTM em uma plataforma FPGA de alto desempenho. Através do ambiente fastRTM é possível se obter uma solução de alto desempenho com um tempo menor de desenvolvimento quando comparado a implementação convencional.

Para atingir este objetivo, o ambiente provê mecanismos para descrição de arquiteturas, exploração de espaço de projeto, estimativas de desempenho, estimativas de uso do FPGA e uma estrutura que permite a fácil incorporação de novas funcionalidades ao projeto.

1.3 Metodologia empregada

A metodologia utilizada neste trabalho é apresentada a seguir. Os tópicos estão dispostos na ordem cronológica em que foram realizados.

• Entendimento dos algoritmos envolvidos na pesquisa

O principal objetivo desta etapa consistiu em entender o funcionamento dos al-goritmos de modelagem e migração sísmica RTM. Em seguida, também foram identificados os pontos de possível exploração de paralelismo.

• Levantamento do estado da arte e trabalhos relacionados

Esta etapa consistiu na pesquisa dos trabalhos relacionados ao desenvolvimento de algoritmos sísmicos em diversas plataformas, as linguagens e ambientes para de-senvolvimento de aplicações de alto desempenho em FPGA, assim como, soluções comerciais para o problema.

• Avaliação de desempenho da modelagem sísmica em diversas arquiteturas

Esta etapa visou verificar a viabilidade de uso do FPGA como uma plataforma para solução dos algoritmos sísmicos com alto desempenho. A estratégia consistiu em implementar a modelagem sísmica em diferentes plataformas e realizar um benchmark entre elas. Para este estudo foram consideradas diversas plataformas de propósito geral (CPUs) explorando instruções SIMD e multithreading, e as GPUs. • Definição de estratégias para implementação da modelagem sísmica em FPGA

(34)

Baseado no estudo do algoritmo realizado na primeira etapa da pesquisa, esta etapa teve o objetivo de consolidar um conjunto de estratégias capazes de explorar eficientemente o paralelismo no FPGA.

• Desenvolvimento do ambiente fastRTM

Nesta etapa ocorreu a implementação do ambiente fastRTM. O ambiente é capaz de descrever arquiteturas, simular a execução do algoritmo, gerar estimativas de desempenho e utilização do FPGA, e explorar algumas variáveis das arquiteturas desenvolvidas. A descrição de arquiteturas é feita através de componentes pré-definidos no ambiente.

• Implementação da modelagem sísmica no ambiente fastRTM

Nesta etapa, a modelagem sísmica 2D foi implementada no ambiente fastRTM de acordo com as estratégias previamente definidas.

A Figura1.1resume a metodologia de trabalho empregada no desenvolvimento desta

tese. Entendimento dos algoritmos envolvidos na pesquisa Desenvolvimento do ambiente fastRTM Levantamento do estado da arte e trabalhos relacionados Avaliação de desempenho da modelagem sísmica em diversas arquiteturas Definição de estratégias para implementação da modelagem sísmica em FPGA Implementação da modelagem sísmica no ambiente fastRTM

Figura 1.1 Etapas da metodologia utilizada

A organização do trabalho foi realizada baseando-se no fluxo da metodologia utilizada.

O Capítulo2apresenta os fundamentos teóricos necessários a compreensão do trabalho. O

Capítulo3apresenta uma série de trabalhos relacionados a implementação de linguagens

e ambientes para desenvolvimento de arquiteturas de alto desempenho em FPGAs. O

Capítulo4descreve o estudo realizado através da implementação da modelagem sísmica

(35)

1.3. METODOLOGIA EMPREGADA

implementação da modelagem sísmica 2D na plataforma FPGA. O Capítulo6descreve o

fluxo de projeto, as funcionalidades e detalhes de implementação do ambiente fastRTM.

O Capítulo7 apresenta os resultados obtidos neste trabalho. E por fim, o Capítulo 8

(36)
(37)

2

Fundamentação teórica

Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest. —ISAAC ASIMOV (escritor e bioquímico americano)

Este capítulo apresenta os principais conceitos utilizados ao longo deste trabalho, mais especificamente, descreve o funcionamento dos algoritmos de modelagem e migração sísmica RTM.

A exploração sísmica de petróleo pode ser dividida em 3 áreas principais: aquisição,

processamento e interpretação [38]. A aquisição é responsável pela obtenção dos traços

sísmicos, através da injeção de um pulso sísmico, no solo ou na água, e posterior captura dos sinais refletidos através de receptores (geofones ou hidrofones), como pode ser

visualizado na Figura2.1.

O processamento pode ser realizado através de vários algoritmos, tais como, Kirchhoff

[15] e a migração reversa no tempo, o RTM (Reverse Time Migration) [74]. Estes

algoritmos são capazes de transformar uma informação confusa, obtida nos conjuntos de traços sísmicos (sismogramas), em algo compreensível por especialistas. No estágio de interpretação, com base na informação de vários níveis geológicos extraídos de uma seção sísmica processada, as imagens resultantes são finalmente analisadas por geólogos e geofísicos. O ambiente proposto neste trabalho dá suporte a etapa de processamento.

Alguns métodos de modelagem e migração sísmica têm sido aplicados em diferentes áreas geológicas. O método de Kirchhoff tem sido o mais usado na indústria de petróleo, devido ao seu baixo custo computacional comparado a outros métodos existentes. No entanto, este método não é adequado para áreas que têm estruturas geológicas muito

(38)

geofones (receptores) camadas do solo (refletores) superfície explosão (pulso sísmico) reflexões internas

Figura 2.1 Visão geral da exploração sísmica

complexas [69][1]. O método RTM, por outro lado, permite resolver diretamente a

equação da onda acústica/elástica com resultados bem mais precisos. Sendo assim, quanto maior a demanda por precisão dos resultados gerados, maior a necessidade de estratégias para se aumentar o desempenho de tais aplicações.

2.1 Reverse Time Migration (RTM)

O RTM é um algoritmo de processamento de imagem, utilizado na indústria de petróleo, para identificar possíveis jazidas de óleo e gás. A saída do algoritmo nada mais é do que uma imagem das camadas que compõem o subsolo de uma determinada região. Através destas imagens é possível definir qual o melhor local para se realizar a perfuração de um novo poço.

Inicialmente, um geólogo, que tem conhecimento sobre a formação geológica da região de interesse, constrói um modelo de velocidades desta região. Este modelo contém a velocidade de propagação da onda em cada uma das diferentes camadas que ele acredita existir no subsolo. Apesar de todas as implementações realizadas nesta tese utilizarem modelos baseados na velocidade de propagação da onda, outros tipos de modelos de

terreno podem ser utilizados, como o modelo elástico ou visco-elástico [69]. A Figura

2.2ilustra o fluxo do algoritmo RTM.

O algoritmo é dividido em duas etapas, que são realizadas utilizando o mesmo modelo de velocidades do terreno. A primeira etapa consiste em propagar a onda através do modelo de velocidades de forma direta. A onda é propagada a partir de uma fonte geradora para alguns receptores (geofones). O sinal gerado na fonte é uma simulação de um pulso sísmico gerado em uma explosão real durante a etapa de aquisição. Esta explosão é

(39)

2.1. REVERSE TIME MIGRATION (RTM)

comumente chamada de tiro. A segunda etapa consiste em realizar a propagação da onda na ordem inversa do tempo. Os dados coletados na aquisição pelos geofones, são aplicados ao modelo em posições relativas a posição real dos geofones de campo e são propagados do instante de tempo final ‘n’ para o instante inicial ‘0’.

A imagem final é o resultado da correlação das duas etapas. Ao final deste processo, a imagem gerada é analisada pelo geólogo. Caso tenha uma boa qualidade, o processo é finalizado e a imagem passa a ser interpretada. Caso não tenha um bom resultado, o especialista faz alguns ajustes no modelo proposto inicialmente, e toda a etapa de processamento é repetida. A etapa de propagação direta recebe o nome de modelagem sísmica. A etapa reversa recebe o nome de migração sísmica. A ferramenta proposta nesta tese dá suporte às duas etapas. No entanto, apenas a modelagem foi implementada como estudo de caso. Os modelos de velocidade, citados acima, podem ser de duas (2D) ou três dimensões (3D).

A modelagem sísmica 2D é discutida com mais detalhes na próxima Seção.

geofones (receptores) camadas do solo (refletores) superfície explosão (pulso sísmico) reflexões internas geofones (receptores) camadas do solo (refletores) superfície ponto da explosão reflexões internas modelo de velocidades proposto

propagação direta modelagem sísmica

propagação reversa migração sísmica

resultado da correlação das duas etapas imagem não satisfatória

o processo se repete

imagem satisfatória

interpretação por um especialista

(40)

2.1.1 Modelagem sísmica em 2D

A modelagem sísmica corresponde à primeira etapa do algoritmo RTM. Como dito anteriormente, o funcionamento do algoritmo consiste em simular a propagação de uma onda sísmica em um modelo de velocidades do terreno, que foi previamente definido por

um geólogo. A Figura2.3apresenta o exemplo de um modelo de velocidades proposto

pelo IFP (Institut Français du Pétrole) em 1988, conhecido como modelo Marmousi [43].

Este modelo tornou-se um padrão para pesquisas na área. Neste modelo é possível ver as diferentes camadas de solo existentes no terreno. Cada uma dessas camadas apresenta uma velocidade de propagação diferente.

Fonte: Institut Français du Pétrole,

http://www.reproducibility.org/RSF/book/data/marmousi/paper_html/node2.html

Figura 2.3 Modelo de velocidades Marmousi

A equação de propagação da onda sísmica é resolvida através do método numérico de diferenças finitas. No caso abordado neste trabalho o operador discreto utilizado corresponde a uma aproximação de quarta ordem no espaço e segunda ordem no tempo.

A Equação 2.1corresponde a equação de propagação da onda discretizada através do

método de diferenças finitas. Utilizar uma aproximação de quarta ordem no espaço significa que serão necessários utilizar, da matriz de campo de pressão atual, quatro pontos além do ponto central em cada uma das dimensões, sendo dois pontos para cada lado. A segunda ordem no tempo significa que o cálculo de um ponto da matriz não depende apenas dos valores atuais do ponto, mas também de um passo de tempo anterior.

O operador pode ser melhor visualizado através da Figura2.4. Portanto, para realizar

a propagação de onda é necessário uma matriz que contenha os valores de cada um dos pontos para o instante de tempo atual e uma outra matriz de mesmo tamanho que armazene os valores dos pontos no instante anterior. Cada uma dessas matrizes recebe o

(41)

2.1. REVERSE TIME MIGRATION (RTM)

nome de matrizes de campo de pressão, onde: a matriz PPF (Previous Pressure Field), corresponde ao campo de pressão do instante de tempo anterior; e a matriz CPF (Current Pressure Field), corresponde ao campo de pressão no instante de tempo atual. Além das matrizes CPF e PPF, tem-se a matriz VEL que armazena o modelo de velocidades, o modelo Marmousi, por exemplo. Os novos valores de campo de pressão que são calculados através das matrizes PPF, CPF e VEL são armazenados na matriz de campo de pressão seguinte, denominada NPF (Next Pressure Field).

Pi, jn+1= 1 12 ⇤ ✓Ci, jDt h ◆2 ⇤ [Pi 2, jn +Pi+2, jn +Pi, j 2n +Pi, j+2n 16 ⇤ Pi 2, jn +Pi+2, jn +Pi, j 2n +Pi, j+2n + 60 ⇤ Pi, jn] +2 ⇤ Pi, jn Pi, jn 1 ↵ ⌦ 2.1 onde:

Pi, jn 1, Pi, jn e Pi, jn+1 são os valores do campo de pressão nos tempos n 1, n e n + 1,

respectivamente no ponto (i, j), e correspondem as matrizes PPF, CPF e NPF;

Ci, jé a velocidade de propagação acústica da onda no ponto (i, j);

h é o espaço entre pontos consecutivos do grid; Dt é o intervalo de tempo.

(42)

Resumidamente, para o cálculo de um novo ponto da matriz de campo de pressão seguinte são necessários: o ponto central bem como os pontos da vizinhaça da matriz de campo de pressão atual (CPF); o ponto central da matriz de campo de pressão anterior (PPF); e o ponto central da matriz de velocidades. Para cada passo de tempo, todos os pontos da matriz são calculados. Ao fim de cada passo de tempo o campo de pressão atual (CPF) passa a ser o campo de pressão anterior (PPF) e os pontos do campo de pressão que acabaram de ser calculados (NPF) passam a ser o campo de pressão atual (CPF). O número de passos de tempo é função do tamanho do modelo e de alguns parâmetros da equação que definem a velocidade de propagação. Um modelo do tamanho do Marmousi (751 linhas e 2301 colunas), por exemplo, pode realizar mais de 10.000

iterações temporais. A Figura2.5ilustra a associação das matrizes com a equação de

propagação de onda discretizada. Mais detalhes sobre o funcionamento do algoritmo

podem ser encontrados em [21].

Figura 2.5 Equação de propagação da onda e suas respectivas matrizes de processamento

2.2 Escala do problema

A modelagem sísmica em 3D segue os mesmos princípios da modelagem em 2D. O acréscimo de mais uma dimensão, faz com que o operador também aumente em uma dimensão assim como todos as matrizes utilizadas no processamento. Além dos conceitos

(43)

2.2. ESCALA DO PROBLEMA

já existentes de linhas e colunas (que agrupadas de quatro em quatro formam slices), surge agora o conceito de planos.

O grande desafio presente no 3D é o aumento em algumas ordens de grandeza na dimensão do problema. Este aumento implica na demanda de grande capacidade de

armazenamento e grande capacidade computacional. A Figura2.6ilustra um exemplo de

modelo de velocidades de três dimensões.

Fonte: Sandia National Laboratories,

http://www.cs.sandia.gov/~ccober/seismic/3d_model_trans.gif

Figura 2.6 Modelo de velocidades 3D (SEG/EAGE Salt Model)

O modelo Marmousi 2D possui 751 linhas x 2301 colunas, o que corresponde a aproximadamente 1,728 mega pontos. Como cada ponto corresponde a um valor em ponto-flutuante de precisão simples (32 bits), cada matriz possui cerca de 6,9 MB de tamanho. Em um modelo 3D, com dimensões de 1250 linhas x 2500 colunas x 250 planos, tem-se um total de 781,25 mega pontos, o que corresponde a aproximadamente a 3 GB de dados por matriz. Alguns modelos em 3D podem ter tamanhos de matrizes com mais de 30 GB de tamanho.

Em uma exploração sísmica real em 3D cerca de 100.000 tiros são simulados. Para cada simulação, em torno de 10.000 passos de tempo são executados e existem duas etapas, a modelagem e a migração. Até que a imagem resultante seja satisfatória, são necessários de 3 a 5 passos de refinamento do modelo de velocidades. Para o cálculo de

cada ponto, são necessários cerca de 28 operações de ponto-flutuante [68]. Multiplicando

todos esses números: 100.000 tiros * 10.000 passos de tempo * 2 etapas * 5 passos de refinamento no pior caso * 28 operações de ponto-flutuante por ponto calculado * 781,25 mega pontos (número total de pontos calculados por processamento). Chega-se a um total de 218,75 exaflops. A máquina mais rápida do Brasil hoje, segundo o ranking do

(44)

médio de 251,5 teraflops. Considerando que todo este processamento fosse realizado sem pausas, o que não seria possível na prática, o tempo total de processamento seria de aproximadamente 10 dias para este modelo 3D.

Também é importante destacar que a exploração apresentada trata de apenas uma área explorada. Contudo, em regiões como o litoral brasileiro que possui um grande número de bacias petrolíferas ao longo do litoral diversas explorações como esta são necessárias para identificar novos pontos de extração. Desta forma, é possível perceber que o ganho de desempenho na execução dos algoritmos de exploração sísmica é essencial para o aumento da produção de petróleo.

2.3 Considerações finais

Este capítulo apresentou o algoritmo RTM, principal foco deste trabalho, foi discutido com mais detalhes sua primeira etapa, a modelagem sísmica, que foi utilizada como um estudo de caso. Também foi apresentada uma breve exposição sobre o aumento da com-plexidade do problema, quando o mesmo é tratado em três dimensões (3D). O próximo Capítulo apresenta trabalhos relacionados ao desenvolvimento de a implementação de linguagens e ambientes para desenvolvimento de arquiteturas de alto desempenho em FPGAs.

(45)

3

Ambientes, ferramentas e linguagens para

implementação de soluções em

plataformas FPGAs

Machines take me by surprise with great frequency. —ALAN TURING (matemático e cientista da computação britânico)

Este capítulo apresenta os resultados do levantamento de trabalhos acadêmicos e soluções comerciais relacionadas ao desenvolvimento de aplicações de alto desempenho em FPGAs. Os trabalhos estão dispostos em ordem de relevância, dos mais relevantes para os menos relevantes.

3.1 Maxeler Technologies

A Maxeler Technologies é uma empresa especializada em fornecer soluções de alto

desempenho baseadas em dispositivos aceleradores que utilizam FPGAs[54]. Uma das

principais características da Maxeler é fornecer o ambiente completo para desenvolvi-mento de aplicações em servidores acelerados por FPGAs. Além de fornecer as placas que contêm os dispositivos FPGAs, e que normalmente são conectadas aos servidores através de uma interface PCIe, a Maxeler fornece todo o ambiente de desenvolvimento de hardware e software que têm como principal objetivo, solucionar os principais desafios encontrados no desenvolvimento de aplicações de alto desempenho em dispositivos re-configuráveis, que são: o tempo de desenvolvimento e complexidade da implementação. O objetivo é possibilitar que os usuários possam desenvolver aplicações na plataforma sem a necessidade de conhecimentos em eletrônica digital.

(46)

IMPLEMENTAÇÃO DE SOLUÇÕES EM PLATAFORMAS FPGAS

A Figura3.1ilustra um sistema acelerado em hardware pela solução da Maxeler[53].

O sistema é constituído por um ou mais FPGAs conectados a vários bancos de memória RAM em uma placa de circuito impresso. Esta por sua vez, é conectada ao computador host através de um canal PCIe. As placas, denominadas MaxCards, possuem grande quantidade de memória RAM (96 GB). Esta grande quantidade de memória por nó, remove o gargalo de acesso aos dados através do barramento PCIe já que, todos os dados gerados durante o processamento são armazenados na memória RAM da placa. Apenas no fim de todo o processamento, os dados resultantes são enviados para o host. Dentro do FPGA estão os elementos computacionais, que recebem o nome de kernels, e que realizam os cálculos aritméticos nos dados que fluem pelo caminho de dados. Também estão alocados no FPGA, os módulos que realizam o controle da entrada e saída de dados dos kernels. Estes módulos recebem o nome de managers.

Fonte: Maxeler Technologies, MaxCompiler White Paper

http://www.maxeler.com/media/documents/MaxelerWhitePaperMaxCompiler.pdf

Figura 3.1 Visão geral da arquitetura Maxeler

O ganho de desempenho (speed-up) nesta plataforma está diretamente associado a exploração de paralelismo através da instanciação de múltiplos kernels que operam sobre dados independentes. A princípio, o número de elementos computacionais instaciados só é limitado pela quantidade de recursos lógicos do FPGA e pelo paralelismo inerente a aplicação. Contudo, o aumento do número de elementos computacionais dentro do FPGA cria rapidamente um gargalo no acesso aos dados na memória.

Para desenvolver aplicações no ambiente da Maxeler três partes devem ser consi-deradas: o desenvolvimento dos kernels; os parâmetros de configuração dos managers e o ambiente de execução. O MaxCompiler, ambiente fornecido pela Maxeler para desenvolver as soluções aceleradas em FPGA, dá suporte a todas estas três partes: o Kernel Compiler para geração dos kernels de processamento; o Manager Compiler para

(47)

3.1. MAXELER TECHNOLOGIES

geração dos parâmetros de configuração dos managers; e o MaxelerOS para geração do

ambiente de execução. A Figura3.2apresenta o fluxo de desenvolvimento na ferramenta

e os principais componentes do MaxCompiler.

Fonte: Maxeler Technologies, MaxCompiler White Paper

http://www.maxeler.com/media/documents/MaxelerWhitePaperMaxCompiler.pdf

Figura 3.2 Fluxo de desenvolvimento de aplicações no ambiente da Maxeler

Tanto os kernels quanto os parâmetros de configuração dos managers são desenvolvi-dos na linguagem Java. O Kernel Compiler e o Manager Compiler são responsáveis por traduzir o código Java dos kernels e dos managers, respectivamente, em uma descrição de hardware de baixo nível. A partir desta descrição em baixo nível é possível gerar tanto uma simulação do projeto, quanto o bitstream que será carregado no FPGA. O MaxelerOS, por sua vez, é responsável por integrar o hardware e o software. Ele permite que a interface de software seja desenvolvida em C, C++ ou FORTRAN, pelo usuário.

O compilador é integrado com as ferramentas CAD do fabricante do FPGA permitindo assim, a geração dos bitstreams. Quando o processo de compilação é iniciado pelo usuário, a ferramenta automaticamente dispara as ferramenta de síntese do hardware e gera um arquivo de extensão “.max”. Este arquivo contém o bitstream de configuração do FPGA e alguns outros dados utilizados para acessar o acelerador em tempo de execução. Em seguida, é realizada a compilação da aplicação que é executada no host. Por fim, a partir do arquivo “.max”, da aplicação compilada e de alguns componentes do MaxelerOS, é gerado o arquivo executável. Este executável inclui todo o código necessário para lidar com as tarefas de funcionamento da aplicação acelerada em hardware, como: carga da configuração do FPGA e configuração dos fluxos de dados entre CPU, FPGAs e memórias.

(48)

IMPLEMENTAÇÃO DE SOLUÇÕES EM PLATAFORMAS FPGAS

3.1.1 MaxGenFD

A Maxeler também fornece ferramentas especializadas, que permitem o desenvolvimento ágil de aplicações em algumas áreas como: óleo e gás, finanças e computação científica. O MaxGenFD é a ferramenta utilizada para gerar, em hardware, os algoritmos que utilizam

o método de diferenças finitas [55]. O método de diferenças finitas é comumente utilizado

nos algoritmos relacionados a exploração sísmica, inclusive a modelagem e migração sísmica RTM.

O objetivo principal da ferramenta é prover uma extensão do compilador MaxCompi-ler para um domínio específico (diferenças finitas em 3D) mantendo todas as vantagens já oferecidas pelo MaxCompiler, em especial, o desenvolvimento de soluções de alto desempenho em FPGA sem a necessidade de conhecimentos em projeto de circuitos digitais.

Entre os algoritmos em processamento sísmico que são contemplados pelo Max-GenFD podemos citar: modelagem e migração sísmica RTM e a inversão de forma de onda (waveform inversion). Para simplificar o desenvolvimento, a ferramenta trata alguns dos pontos mais complexos no desenvolvimento destes tipos de algoritmos, como: geren-ciamento de um grande conjunto de dados, condições de amortecimento nas fronteiras e decomposição do problema entre diversos elementos de processamento, inclusive a troca de bordas de dados nas intersecções das regiões decompostas. A ferramenta tira do programador a responsabilidade de realizar otimizações específicas do FPGA como customização dos tipos de dados e implementação da arquitetura do algoritmo no FPGA.

A Figura3.3apresenta uma comparação entre uma aplicação desenvolvida totalmente

em software (3.3(a)) e outra em MaxGenFD (3.3(b)). Na implementação totalmente

em software, a CPU executa o kernel computacional e a memória armazena todos os dados utilizados durante o processamento. Quando usa-se o ambiente da Maxeler, o core computacional, que implementa parte do cálculo de diferenças finitas (normalmente um timestep ou parte de um timestep), é implementado como um kernel especializado. Este kernel recebe o nome de FDKernel. O FDKernel se comporta como uma função que recebe como parâmetros os dados necessários ao processamento. Após a compilação, o FDKernel é mapeado como um IP-core no FPGA. Os dados necessários ao processamento são enviados para a memória RAM associada ao FPGA.

O MaxGenFD fornece recursos de otimização. Para otimizar a largura de banda com a memória, por exemplo, o MaxGenFD pode utilizar compressão de dados. Módulos podem ser adicionados ao fluxo de dados para descomprimir os dados na entrada e comprimir os dados na saída, diminuindo a necessidade de largura de banda com a memória. Essa

(49)

3.1. MAXELER TECHNOLOGIES

Fonte: Maxeler Technologies, MaxGenFD White Paper http://www.maxeler.com/media/documents/MaxelerWhitePaperMaxGenFD.pdf

(a) Execução totalmente em software

Fonte: Maxeler Technologies, MaxGenFD White Paper http://www.maxeler.com/media/documents/MaxelerWhitePaperMaxGenFD.pdf

(b) Execução utilizando uma MaxCard através de ambiente gerado no MaxGenFD

Figura 3.3 Comparação entre a aplicação implementada totalmente em software e na MaxCard utilizado a ferramenta MaxGenFD

diminuição da necessidade de largura de banda pode ser utilizada para aumentar a capacidade computacional do sistema através da instanciação de mais elementos de processamento.

MaxGendFD também possui uma ferramenta de suporte a depuração, o FDSimulator. Esta ferramenta é capaz de garantir a corretude dos FDKernels desenvolvidos. Ela permite ao usuário simular o funcionamento dos FDKernels rapidamente, a fim de verificar sua funcionalidade, e realizar os ajustes necessários. Através deste ambiente de simulação é possível executar vários time steps de problemas pequenos, permitindo assim que as operações matemáticas descritas possam ser verificadas antes que a solução seja colocada no hardware.

Uma vez que o problema esteja verificado, a geração do hardware pode ser realizada e problemas maiores podem ser executados. Mesmo após o porte da solução para o FPGA, ainda é possível realizar depuração através das exceções geradas pelo hardware, como: detecção de overflow e underflow; divisão por zero e operações inválidas. Também é possível utilizar o MaxDebug, uma ferramenta gráfica capaz de depurar todo o fluxo de dados do sistema desenvolvido.

3.1.2 Conclusões sobre a ferramenta MaxGenFD

A ferramenta comercial MaxCompiler, e sua especialização o MaxGenFD, da empresa Maxeler Technologies é a solução que mais se assemelha ao ambiente fastRTM apresen-tado nesta tese. Elas suportam o desenvolvimento de aplicações, baseados no método de diferenças finitas em 3D, com alto desempenho em FPGAs. A Maxeler fornece tanto o

(50)

IMPLEMENTAÇÃO DE SOLUÇÕES EM PLATAFORMAS FPGAS

ambiente de software quanto o de hardware, as MaxCards.

O ambiente proposto pela Maxeler dispõe de mecanismos para rápida descrição dos elementos aritméticos, os kernels. E de todo o controle do caminho de dados, os managers. A descrição destes módulos é realizada em Java e o MaxCompiler e o MaxGenFD são responsáveis por traduzir estas descrições em uma linguagem de descrição de hardware (HDL) e posteriormente em um bitstream que será carregado no FPGA. Estes compiladores visam tirar do programador a necessidade de conhecimentos em eletrônica digital e reduzir o tempo de desenvolvimento. A arquitetura de memória presente nas MaxCards também são bastante favoráveis aos problemas baseados em diferenças finitas. Estes problemas são intensivos no acesso aos dados. Por isso, uma arquitetura que forneça grande largura de banda é fundamental para se obter um alto desempenho da solução final. Uma das desvantagens da Maxeler é que seu ambiente de software está totalmente vinculado ao seu ambiente de hardware. Isto impede que a plataforma de hardware de outro fabricante seja utilizada.

3.2 ASC: um compilador de aplicações em stream para

computação com FPGAs

A plataforma ASC (A Stream Compiler), apresentada em [58], se propõe a disponibilizar

um compilador capaz de minimizar o tempo de projeto e desenvolvimento de aplicações em FPGA. O autor argumenta que as ferramentas CAD para este fim não foram capazes de acompanhar a evolução do próprio hardware do FPGA.

A plataforma ataca este problema provendo uma interface de desenvolvimento no nível de software, no entanto, mantendo o desempenho esperado para uma solução manu-almente customizada. ASC melhora a produtividade permitindo que o projetista otimize sua implementação no nível algorítmico, no nível de arquitetura, no nível aritmético e no nível de gates, todos na mesma descrição em C++. O compilador simplifica a exploração de espaço de projeto transformando a tarefa de descrição de hardware em um processo de desenvolvimento de software utilizando apenas ‘gcc’ e ‘make’ para obter o netlist do hardware.

O autor argumenta que o desenvolvimento de aceleradores de hardware eficientes para aplicações específicas consiste em várias tarefas desafiadoras. Primeiramente têm-se a definição do caminho de dados (datapath). Nesta definição do caminho de dados existem quatro graus de liberdade: a arquitetura do sistema, a microarquitetura, as unidades funcionais e o nível de programabilidade e granularidade da configuração. Segundo, é

(51)

3.2. ASC: UM COMPILADOR DE APLICAÇÕES EM STREAM PARA COMPUTAÇÃO COM FPGAS

necessário definir a arquitetura de memória ideal. A hierarquia de memória num sistema baseado em acelerador pode utilizar desde registradores on-chip, passando por memórias estáticas (SRAM) on-chip e off-chip, até o nível de pentes de memória dinâmica (DRAM), embarcados na placa onde encontra-se o dispositivo FPGA. A utilização eficiente destes recursos de memória é essencial para se obter a melhor performance do sistema. Terceiro, o desenvolvimento das rotinas de comunicação entre o processador e o acelerador em hardware. É essencial que estas rotinas sejam o mais otimizadas possíveis, de forma a garantir que o gargalo na execução da aplicação não esteja no software. Quarto, o desenvolvimento das estruturas de controle do caminhos de dados. Quinto, a escolha de uma interface de comunicação entre o dispositivo acelerador e o processador que maximize a taxa de transferência de dados. Esta divisão de tarefas influenciou fortemente o desenvolvimento desta tese. O ambiente ASC é capaz de automatizar os passos quatro e cinco deixando o programador livre para focar nos três primeiros passos.

Como mencionado anteriormente, o ambiente ASC se propõe a oferecer um ambiente de desenvolvimento em alto nível, no entanto, conservando o desempenho de uma solução customizada. Para isso, é necessário que a ferramenta ofereça ao desenvolvedor um certo grau de flexibilidade que o permita explorar o espaço de projeto. Neste sentido, ASC permite ao desenvolvedor explorar o espaço de projeto de duas maneiras. Primeiro, é possível explorar alternativas ao caminho de dados no nível da microarquitetura. As descrições em ASC produzem implementações com alternativas de caminho de dados que podem ser exploradas de forma a atender trade-offs definidos pelo usuário. Segundo, o ambiente é capaz de gerar automaticamente os blocos de controle, as rotinas de execução do algoritmo e as interfaces de comunicação entre a CPU e o dispositivo acelerador. Tudo baseado em configurações realizadas pelo usuário. Estas configurações permitem que o usuário explore diferentes alternativas de arquitetura sem se preocupar em ter que realizar o árduo trabalho de implementação em baixo nível. É possível, por exemplo, definir uma hierarquia de memória no alto nível e todas as estruturas necessárias ao funcionamento desta hierarquia serão gerados automaticamente.

A parametrização oferecida pelas descrições em ASC permite que o desenvolvedor explore trade-offs como: área do FPGA, latência, troughput e precisão dos operadores aritméticos. Como ASC trata-se de uma biblioteca de C++, ela pode ser compilada por um compilador C++ padrão sem problema algum. A arquitetura do ambiente ASC é

dividida em alguns níveis de abstração que podem ser visualizados na Figura3.4.

A primeira camada, que recebe o nome de camada de análise do algoritmo (algorithm analysis layer), trata-se de uma etapa totalmente manual. As principais tarefas associadas

(52)

IMPLEMENTAÇÃO DE SOLUÇÕES EM PLATAFORMAS FPGAS

Fonte: Mencer, O. (2006). ASC: a stream compiler for computing with FPGAs

Figura 3.4 Níveis de abstração do ambiente ASC

a esta camada são: definir a hierarquia de memória adequada a aplicação; desenrolar loops para paralelizar execução de tarefas; análise da precisão aritmética ideal para o problema em questão; transformações de estruturas de dados; e a definição da arquitetura inicial. Resumidamente, esta etapa consiste no entendimento do algoritmo e na definição de como uma arquitetura de hardware (FPGA) pode solucionar este problema de forma eficiente. A segunda é a camada de geração da arquitetura (architecture generation layer). Nesta camada o usuário descreve a arquitetura projetada na camada anterior em linguagem ASC. A terceira camada, a camada de geração de módulos (module generation layer), mapeia a descrição realizada em ASC para uma biblioteca integrada, conhecida como

PAM-Blox II [59]. Em seguida, na camada Gate level to netlist, os módulos descritos em

PAM-Blox II são traduzidos para PamDC [16], uma biblioteca em C++ capaz de realizar

projeto em FPGAs em nível de gates, simulação, e geração de netlists em formato EDIF.

3.2.1 Geração da arquitetura em ASC

A geração da arquitetura consiste em transformar uma descrição da arquitetura em ASC para uma estrutura que consiste em um caminho de dados, controle e interfaces. ASC possui uma estrutura de módulos parametrizáveis que recebe o nome de arquitetura em stream. Todos estes módulos da biblioteca são totalmente descritos em C++ através de tipos e operadores customizados, assim como, uma série de macros e chamada de funções.

(53)

3.2. ASC: UM COMPILADOR DE APLICAÇÕES EM STREAM PARA COMPUTAÇÃO COM FPGAS

int i, a[SIZE], b[SIZE]; for (i = 0; i<SIZE; i++) { b[i] = a[i] + 1; }

(a) Código em C

STREAM START;

HWint a(IN, 32), b(OUT, 32); STREAM_LOOP(SIZE);

STREAM_OPTIMIZE = THROUGHPUT; b = a + 1;

STREAM END;

(b) Código em ASC

Figura 3.5 Exemplo de um código que realiza o incremento dos valores de um vetor

incremento dos valores de um vetor. Na Figura 3.5(a) o código em C onde todos os

valores do vetor são acessados e incrementados através de um laço (for). Em uma

estru-tura em stream, descrita em ASC na Figura3.5(b), as declarações STREAM_START e

STREAM_ENDdefinem o escopo da estrutura que está sendo criada. Em seguida, são

declarados os streams de entrada e saída de dados. O tipo utilizado, HWint, garantirá que estes vetores de dados sejam enviados e armazenados na memória do dispositivo co-processador como valores inteiros. O stream ‘a’ trata-se de um vetor de entrada com largura de bits igual a 32. O stream ‘b’ um vetor de saída de mesma largura de bits. Ao iniciar-se o processamento, os dados do vetor ‘a’ serão enviados da memória do processador host para a memória do co-processador. Durante o processamento os dados de saída são armazenados na memória do co-processador numa região alocada para o vetor ‘b’. Por fim, os dados do vetor ‘b’ são transferidos de volta para a memória do processador host. A diretiva STREAM_LOOP(SIZE) por sua vez é responsável por controlar o laço. Ao informar o número de iterações que existiria em uma execução seqüencial convencional, é possível saber a quantidade de dados que irá fluir pelo pi-peline da estrutura em stream. A diretiva STREAM_OPTIMIZE = THROUGHPUT é responsável por definir que tipo de otimização será realizada. ASC permite otimização de taxa de transferência (THROUGHPUT), latência (LATENCY) e área (AREA). Se não for informado, o compilador assume taxa de transferência como otimização padrão. Por fim, a linha b = a + 1 realiza o incremento do vetor. A arquitetura gerada pelo código

ASC da Figura3.5(b)pode ser visualizado na Figura3.6.

+

FIFO de entrada FIFO de saída a b 1

Figura 3.6 Arquitetura gerada através de ASC para incremento de um vetor.

(54)

IMPLEMENTAÇÃO DE SOLUÇÕES EM PLATAFORMAS FPGAS

múltiplas saídas. A cada ciclo de clock um grupo de entradas flui através da implementa-ção do DFG. Contudo, para que o DFG esteja devidamente sincronizado, é necessário a inserção de FIFOs para atrasar corretamente os dados que alimentam os elementos computacionais existentes. ASC possui um escalonador responsável por realizar este sincronismo. As operações presentes no DFG que foram traduzidas do código C++ são escalonadas inserindo FIFOs de atraso entre os produtores e consumidores de dados a fim de garantir que os operandos de cada uma das operações cheguem sincronizados aos seus respectivos elementos computacionais no grafo.

Para validação do ambiente o autor implementou diversos algoritmos baseados em stream. Para validação da exploração de espaço de projeto (latência x taxa de transferência x área) foram utilizados: os algoritmos de compressão de wavelet; codificação Kasumi, parte do padrão de comunicação sem fio 3G; e algumas funções elementares como seno, cosseno e rotações. Para avaliação de desempenho foram implementados os algoritmos de codificação IDEA e um algoritmo de compressão de dados sem perdas. Os resultados

obtidos realmente validaram a proposta do ambiente e podem ser encontrados em [58].

3.2.2 Considerações sobre o ambiente ASC

A ferramenta acadêmica ASC inspirou várias características do ambiente fastRTM. Ela fornece um ambiente de alto nível, baseado em C++, onde são descritos os algoritmos. O ambiente também disponibiliza estruturas para exploração de espaço de projeto porém, de maneira manual. É possível definir diferentes caminhos de dados e avaliar o desempenho das alternativas. Um dos pontos fortes da linguagem é a geração automática do código para a plataforma FPGA a partir do modelo criado no alto nível. Apesar do ambiente apresentado neste trabalho prever esta funcionalidade, ela ainda não foi implementada. Por outro lado, o ambiente ASC não fornece estimativas de desempenho e não possibilita a exploração de espaço de projeto automatizada.

3.3 FPGA Brook

Plavec descreve em sua tese de doutorado o projeto e a implementação de um novo fluxo de compilação que implementa circuitos em FPGAs a partir de uma linguagem de

programação de aplicações em stream [71][70]. A linguagem é chamada FPGA Brook, e é

baseada nas já existentes Brook e GPU Brook [20], utilizadas em processadores de stream

e GPUs, respectivamente. Plavec defende que a linguagem é adequada para FPGAs porque permite que projetistas de sistema desenvolvam as aplicações descrevendo o

Referências

Documentos relacionados

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Verificada a efetividade da proposta, a Comissão de Licitações declarou vencedor o licitante Francisco Souza Lima Helm, sendo o total do item 14 licitado o valor de

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no

Objetivo: Garantir estimativas mais realistas e precisas para o projeto, ao considerar nesta estimativa o esforço necessário (em horas ou percentual do projeto) para

The strict partition problem is relaxed into a bi-objective set covering problem with k-cliques which allows over-covered and uncovered nodes.. The information extracted

Para que os resultados da amostra possam ser comparados com os de um grupo de falantes de língua materna portuguesa e compreender, deste modo, mais extensivamente o nível de

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades