FPGA e Epiphany 
na 
Computação Paralela
Lucas Teske
LatinoWare 2014
Paralelismo
Paralelismo por Tarefa
Paralelismo por Dados
Varias tarefas independentes, sendo
executadas uma em cada processador
Um vetor de dados e cada processador
executando uma tarefa em ranges diferentes
Sistemas Multicore Atuais
Xeon PHI
Fonte: Do Multicore ao Manycore: Práticas de Configuração,
 Compilação e Execução no coprocessador Intel® Xeon Phi™ 
http://bit.ly/1w1Jb85
- Até 61 núcleos
- Até 1,2 TFlops
- Até 352GB/s de acesso
   a memória
- Consumo de ~300W
Epiphany IV
- 64 Núcleos
- 100 GFLOPS
- 1.6 TB/s Acesso a memória local
- 102 GB/s Acesso entre cores
- 6.4 GB/s Acesso de memória fora do chip
- 2 MB Memoria Compartilhada Distribuida Interna
- Consumo máximo de 2W por chip

Fonte: Epiphany-IV 64-core 28nm Microprocessor (E64G401)
http://www.adapteva.com/epiphanyiv/
FPGA
O que é um FPGA?
Como se trabalha com um FPGA?
1. Descrever a função lógica em um computador.
2. Compilar a função lógica em um computador.
3. Conectar o FPGA ao computador
4. Enviar o binário para o FPGA

Observações:
- FPGA baseado em RAM
- Mais rápido do que usar chips com circuito equivalente
- Caso desligado, perde a funcionalidade

Processamento em Pipeline
Placa Parallella
(Epiphany + FPGA)
 - Zynq-Z7010 or Z7020 Dual-core ARM A9 CPU
- Acelerador Multi-núcleo Epiphany de 16 ou 64 núcleos
- 1GB RAM
- MicroSD Card
- 2x USB 2.0
- 4 Conectores de Expansão de uso Geral
- Rede Gigabit (10/1000/1000Mbps) 
- Porta HDMI
- Sistema Operacional Linux

- Plataforma Multicore de baixo custo e
baixo consumo de energia
- HDMI, Ethernet, USB e 48 GPIOs
- ARM Dual Core e Acelerador Epiphany
- Programável em ANSI C/C++ e OpenCL

Exemplo: Gerador de Tiles do HyperSignal
unsigned char Data[] = {
 157,83 ,153,147,223,114,248,200,
 120,185,30 ,86 ,50 ,28 ,29 ,180,
 153,169,225,146,20 ,115,229,108,
 50 ,206,89 ,51 ,89 ,99 ,19 ,112,
 74 ,9 ,232,185,36 ,54 ,210,66 ,
 151,206,52 ,100,232,163,191,135,
 125,81 ,122,246,20 ,197,194,210,
 87 ,122,11 ,16 ,163,90 ,1 ,152 
}; // 8x8 Matrix
Bilinear
"Bicossênica"
Bibliografia
A 1024-core 70GFLOP/W Floating Point Manycore Microprocessor (HPEC-2011)
     - http://www.adapteva.com/wp-content/uploads/2013/02/hpec11_poster1.pdf

Instruction pipelining
 - http://simple.wikipedia.org/wiki/Instruction_pipelining
Site da Adapteva
  - http://www.adapteva.com/
Site da Parallella
 - http://www.parallella.org/
A Closer Look at Epiphany-IV 28nm 64-core Coprocessor by Andreas Olofsson
 (PEGPUM 2013)
   - http://www.adapteva.com/wp-content/uploads/2013/07/olofsson_pegpum_publish.pdf
ASUS MAXIMUS VI IMPACT (Intel LGA1150) - 
    http://www.techpowerup.com/reviews/ASUS/MAXIMUS_VI_IMPACT/2.html