Prototipação de Circuitos Digitais
Thyago Maia
E-mail: tmtf@cin.ufpe.br
Workshop – OpenCL
FPGA
Instruções Iniciais
Instruções Iniciais
• Baixar o projeto soma_vetor:
– https://db.tt/jaAjlMMM
• Tal projeto é uma adaptação do projeto vecto...
Compilando o Kernel para
simulação
Compilando o Kernel para simulação
• Execute a aplicação VS2012 x64 Cross Tools Command
Prompt como administrador:
– Norma...
Gerando o executável do
Host
Gerando o executável do host
• Na pasta soma_vetor/vector_add, execute o arquivo
de solução Visual Studio vector_add.sln;
...
Lançando o Kernel para o
Device
Lançando o Kernel para o Device
• Ainda no VS, Clique na opção de menu arquivo Debug,
submenu Start Without Debugging;
201...
Trechos que poderão ser
customizados para outras
soluções
Trechos que poderão ser customizados para outras soluções
• Exemplo de projeto criado a partir do projeto base
soma_vetor:...
Trechos que poderão ser customizados para outras soluções
• Kernel (vector_add.cl)
– Quantidade e tipo de parâmetros;
– Co...
Trechos que poderão ser customizados para outras soluções
• OBS.: A cada alteração no kernel de aplicações OpenCL
Altera, ...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Entre as linhas 37 e 40: Adição de novas bib...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Editar as variáveis (buffers) de kernel (ent...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Editar as variáveis (buffers) de kernel (ent...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Editar a quantidade de work-items (threads) ...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Editar as variáveis de host (entre as linhas...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Passo a passo a ser seguido pelo Host OpenCL...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função cria_programa();
2015.1 Prototipação ...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função cria_objetos_device();
2015.1 Prototi...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função cria_objetos_device();
2015.1 Prototi...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função cria_objetos_device();
2015.1 Prototi...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função cria_objetos_device();
2015.1 Prototi...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função inicia_problema();
2015.1 Prototipaçã...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função inicia_problema();
2015.1 Prototipaçã...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função inicia_problema();
2015.1 Prototipaçã...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função executa_kernel();
2015.1 Prototipação...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função executa_kernel();
2015.1 Prototipação...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função executa_kernel();
2015.1 Prototipação...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função exibe_resultado();
2015.1 Prototipaçã...
Trechos que poderão ser customizados para outras soluções
• Host (main.cpp)
– Função testbench();
2015.1 Prototipação de C...
Exercício
Exercício
• Crie um projeto OpenCL altera a partir do projeto
soma_vetor ou converteECG;
• Tente seguir o passo a passo de...
Thyago Maia Tavares de Farias
E-mail: tmtf@cin.ufpe.br
Slideshare: http://slideshare.net/thyagomaia
Lattes: http://lattes....
Próximos SlideShares
Carregando em…5
×

Workshop - OpenCL em FPGA

329 visualizações

Publicada em

Workshop - OpenCL em FPGA

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
329
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Workshop - OpenCL em FPGA

  1. 1. Prototipação de Circuitos Digitais Thyago Maia E-mail: tmtf@cin.ufpe.br Workshop – OpenCL FPGA
  2. 2. Instruções Iniciais
  3. 3. Instruções Iniciais • Baixar o projeto soma_vetor: – https://db.tt/jaAjlMMM • Tal projeto é uma adaptação do projeto vector_add disponibilizado pela Altera (http://www.altera.com/support/examples/opencl/ve ctor-addition.html) • O objetivo da adaptação foi: – Tornar o código mais legível; – Destacar todas as etapas de implementação de um código Host para o OpenCL da Altera; – Facilitar o desenvolvimento de novos projetos a partir deste; 2015.1 Prototipação de Circuitos Digitais 3
  4. 4. Compilando o Kernel para simulação
  5. 5. Compilando o Kernel para simulação • Execute a aplicação VS2012 x64 Cross Tools Command Prompt como administrador: – Normalmente localizado em C:Program Files (x86)Microsoft Visual Studio XX.XVC • No prompt, acesse a pasta soma_vetor/vector_add; – Comando cd <path do projeto> • Digite o comando: – aoc -march=emulator devicevector_add.cl -o binvector_add.aocx –board s5_ref • A compilação será concluída com sucesso se o arquivo vector_add.aocx seja gerado na pasta soma_vetor/vector_add/bin 2015.1 Prototipação de Circuitos Digitais 5
  6. 6. Gerando o executável do Host
  7. 7. Gerando o executável do host • Na pasta soma_vetor/vector_add, execute o arquivo de solução Visual Studio vector_add.sln; • No Visual Studio: – Para visualizar o código de host, no painel Solution Explorer, acesse vector_add/Source Files/main.cpp; – Para visualizar o código de kernel, no painel Solution Explorer, acesse vector_add/OpenCL Kernel Files/vector_add.cl; – Para compilar o código de Host, clique na opção de menu arquivo build, submenu Rebuild Solution; 2015.1 Prototipação de Circuitos Digitais 7
  8. 8. Lançando o Kernel para o Device
  9. 9. Lançando o Kernel para o Device • Ainda no VS, Clique na opção de menu arquivo Debug, submenu Start Without Debugging; 2015.1 Prototipação de Circuitos Digitais 9
  10. 10. Trechos que poderão ser customizados para outras soluções
  11. 11. Trechos que poderão ser customizados para outras soluções • Exemplo de projeto criado a partir do projeto base soma_vetor: converteECG – https://db.tt/BGWiFzzX • Tal projeto: – Obtém amostras decimais de um sinal ECG arrítmico (obtido no MIT Arrhythmia Database: http://www.physionet.org/physiobank/database/mitdb/ ) a partir do Host; – O device, a partir de kernels, converte cada amostra decimal para milivolt (mV); 2015.1 Prototipação de Circuitos Digitais 11
  12. 12. Trechos que poderão ser customizados para outras soluções • Kernel (vector_add.cl) – Quantidade e tipo de parâmetros; – Comportamento do Kernel; – Nome do Kernel; 2015.1 Prototipação de Circuitos Digitais 12
  13. 13. Trechos que poderão ser customizados para outras soluções • OBS.: A cada alteração no kernel de aplicações OpenCL Altera, o mesmo deverá ser recompilado (siga as instruções do slide 5). Lembre-se de renomear o arquivo .cl para o novo nome do kernel; 2015.1 Prototipação de Circuitos Digitais 13 Soma de Vetores Conversão - Decimal para Milivolt
  14. 14. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Entre as linhas 37 e 40: Adição de novas bibliotecas; • Ex.: OpenCL para o tratamento de imagens; 2015.1 Prototipação de Circuitos Digitais 14
  15. 15. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Editar as variáveis (buffers) de kernel (entre as linhas 54 e 57); 2015.1 Prototipação de Circuitos Digitais 15 Soma de Vetores Conversão - Decimal para Milivolt
  16. 16. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Editar as variáveis (buffers) de kernel (entre as linhas 54 e 57); 2015.1 Prototipação de Circuitos Digitais 16 Soma de Vetores Conversão - Decimal para Milivolt
  17. 17. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Editar a quantidade de work-items (threads) (linha 60); 2015.1 Prototipação de Circuitos Digitais 17 Soma de Vetores Conversão - Decimal para Milivolt
  18. 18. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Editar as variáveis de host (entre as linhas 64 e 67); 2015.1 Prototipação de Circuitos Digitais 18 Soma de Vetores Conversão - Decimal para Milivolt
  19. 19. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Passo a passo a ser seguido pelo Host OpenCL e funções que poderão ser customizadas, dependendo da solução; 2015.1 Prototipação de Circuitos Digitais 19
  20. 20. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função cria_programa(); 2015.1 Prototipação de Circuitos Digitais 20 Soma de Vetores Conversão - Decimal para Milivolt
  21. 21. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função cria_objetos_device(); 2015.1 Prototipação de Circuitos Digitais 21 Soma de Vetores Conversão - Decimal para Milivolt Retirada da chamada de reset para um buffer excedente
  22. 22. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função cria_objetos_device(); 2015.1 Prototipação de Circuitos Digitais 22 Soma de Vetores Conversão - Decimal para Milivolt
  23. 23. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função cria_objetos_device(); 2015.1 Prototipação de Circuitos Digitais 23 Soma de Vetores
  24. 24. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função cria_objetos_device(); 2015.1 Prototipação de Circuitos Digitais 24 Conversão - Decimal para Milivolt
  25. 25. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função inicia_problema(); 2015.1 Prototipação de Circuitos Digitais 25 Soma de Vetores
  26. 26. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função inicia_problema(); 2015.1 Prototipação de Circuitos Digitais 26 Conversão - Decimal para Milivolt
  27. 27. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função inicia_problema(); 2015.1 Prototipação de Circuitos Digitais 27 Conversão - Decimal para Milivolt
  28. 28. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função executa_kernel(); 2015.1 Prototipação de Circuitos Digitais 28 Soma de Vetores Conversão - Decimal para Milivolt Tamanho do vetor de eventos de escrita é igual a quantidade de entradas
  29. 29. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função executa_kernel(); 2015.1 Prototipação de Circuitos Digitais 29 Soma de Vetores Conversão - Decimal para Milivolt
  30. 30. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função executa_kernel(); 2015.1 Prototipação de Circuitos Digitais 30 Soma de Vetores Conversão - Decimal para Milivolt Quantidade de eventos de escrita
  31. 31. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função exibe_resultado(); 2015.1 Prototipação de Circuitos Digitais 31 Soma de Vetores Conversão - Decimal para Milivolt
  32. 32. Trechos que poderão ser customizados para outras soluções • Host (main.cpp) – Função testbench(); 2015.1 Prototipação de Circuitos Digitais 32 Soma de Vetores Conversão - Decimal para Milivolt Exercício: Crie um testbench para a conversão!
  33. 33. Exercício
  34. 34. Exercício • Crie um projeto OpenCL altera a partir do projeto soma_vetor ou converteECG; • Tente seguir o passo a passo descrito no Workshop; • O projeto poderá ter como objetivo o processamento de algum fluxo de dados específico (dados contidos em vetores); 2015.1 Prototipação de Circuitos Digitais 34
  35. 35. Thyago Maia Tavares de Farias E-mail: tmtf@cin.ufpe.br Slideshare: http://slideshare.net/thyagomaia Lattes: http://lattes.thyagomaia.net LinkedIn: https://br.linkedin.com/in/thyagomaia Obrigado!

×