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
executadas uma em cada processador
Um vetor de dados e cada processador
executando uma tarefa em ranges diferentes
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™
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
- 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
- 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
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
- 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
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
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
- http://www.adapteva.com/wp-content/uploads/2013/02/hpec11_poster1.pdf
Instruction pipelining
- http://simple.wikipedia.org/wiki/Instruction_pipelining
- http://simple.wikipedia.org/wiki/Instruction_pipelining
Site da Adapteva
- http://www.adapteva.com/
- http://www.adapteva.com/
Site da Parallella
- http://www.parallella.org/
- 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
(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
http://www.techpowerup.com/reviews/ASUS/MAXIMUS_VI_IMPACT/2.html
