Introdução à computação com GPU no LabVIEW

Publicação: jul 25, 2013 | 0 Avaliação | 0.00 de 5 | 
Read in English
  | Imprimir

Índice

Introdução 

Arquiteturas em paralelo, como FPGAs e GPUs, têm sido amplamente utilizadas para acelerar a análise de grandes conjuntos de dados. Com essas tecnologias, é possível retirar da CPU o processamento das partes dos algoritmos que exigem uso intenso de computação e transferi-lo a essas arquiteturas altamente paralelas. Os FPGAs oferecem um alto grau de flexibilidade e baixa latência de processamento, mas apresentam certas limitações em termos de cálculos com ponto flutuante, devido a restrições de espaço. As GPUs ganharam popularidade como uma opção flexível, acessível e de baixo custo para o processamento em paralelo. Elas podem ser usadas com FPGAs para otimizar a velocidade de execução de algoritmos. Os cálculos in-line de um algoritmo, por exemplo, podem ser executados rapidamente em um FPGA, enquanto uma GPU analisa os dados de ponto flutuante. A criação de algoritmos para computação por GPU é facilitada pela Compute Unified Device Architecture, CUDA™, da NVIDIA®, que permite que os usuários criem código usando a linguagem de programação C com extensões da NVIDIA.

Figura 1: FPGAs e GPUs podem ser usados juntos, em conjunto com uma CPU, para otimizar o desempenho

Na área da computação de tempo real com alto desempenho, há muitas aplicações que têm requisitos de dados e tarefas bastante adequados ao processamento em uma GPU. Algoritmos com alto grau de intensidade aritmética são muito indicados para processamento em GPUs; uma alta relação entre operações aritméticas e operações de memória indica ser possível obter uma aceleração significativa utilizando a computação em uma arquitetura GPU. Como exemplo, aplicações que lidam com operações em múltiplos canais, como o cálculo de diversas transformadas rápidas de Fourier (FFTs) em paralelo, ou operações matemáticas como operações de matrizes extensas, são realizadas com eficiência pelas GPUs.

Com o LabVIEW GPU Analysis Toolkit, desenvolvedores podem aproveitar o poder da arquitetura paralela da GPU dentro da estrutura de uma aplicação do LabVIEW. Esse toolkit aproveita das funções do toolkit CUDA da NVIDIA e das bibliotecas CUBLAS e CUFFT, permitindo também que os desenvolvedores utilizem o código já escrito para uma GPU, usando o LVGPU SDK.

O LabVIEW GPU Analysis Toolkit

O LabVIEW GPU Analysis Toolkit permite que os desenvolvedores utilizem os principais recursos do NVIDIA CUDA e os métodos CUBLAS e CUFFT, aproveitando as funções contidas nessas bibliotecas dentro do LabVIEW. Para operações avançadas, códigos desenvolvidos no CUDA podem ser executados em uma GPU, através do LabVIEW GPU Analysis Toolkit. Observe que esse toolkit não compilará código do LabVIEW para uso em uma GPU, mas permitirá que funções incluídas no CUDA ou kernels do CUDA definidos pelo usuário sejam utilizados no LabVIEW. Trabalhando com operações kernel do CUDA e seus parâmetros em um único ambiente de execução de dispositivos, conhecido como contexto de CUDA, kernels avançados definidos pelo usuário podem ser chamados com segurança durante a execução do LabVIEW. Esse contexto também garante que todas as solicitações de recursos e funções da GPU serão gerenciadas adequadamente.

Com o LabVIEW GPU Analysis Toolkit, cientistas e engenheiros podem realizar a aquisição de dados em larga escala, levar esses dados em blocos a uma GPU, para processá-los rapidamente, e ver os dados processados em uma aplicação do LabVIEW. Técnicas comuns de processamento de sinais e operações matemáticas, como o cálculo da transformada rápida de Fourier de um sinal, estão disponíveis em VIs que fazem chamadas diretamente nas bibliotecas NVIDIA equivalentes. Isso permite que os desenvolvedores desenvolvam métodos de prototipagem rapidamente, utilizando todos os recursos de computação disponíveis. Aplicações complexas desenvolvidas em CUDA podem ser executadas no LabVIEW para acelerar o processamento dos dados conforme algoritmos definidos pelo usuário.

Transferência de uma operação FFT para processamento rápido em uma GPU

De forma geral, a comunicação com uma GPU através do LabVIEW GPU Analysis Toolkit pode ser dividida em três estágios principais: inicialização da GPU, execução de cálculos na GPU e liberação dos recursos da GPU. A próxima sessão discute a transferência de uma operação de FFT da CPU a uma GPU com o uso do LabVIEW GPU Analysis Toolkit.

Figura 2: Fluxo de programa quando um cálculo de FFT é transferido da CPU a uma GPU para análise

Esse exemplo calcula a FFT de sinais simulados de vários canais simulados, com o objetivo de imitar a aquisição de dados de entrada de vários canais de um dispositivo DAQ ou arquivo de dados. O fluxo de trabalho utilizado é típico da transferência de operações de FFT e álgebra linear a uma GPU em uma aplicação do LabVIEW.

I. Inicialização de recursos da GPU

Figura 3: Inicialização de recursos da GPU 

Em primeiro lugar, é necessário selecionar um dispositivo de GPU. Por sua vez, isso cria o contexto de CUDA utilizado para facilitar a comunicação entre o LabVIEW e a GPU. Isso é realizado pelo uso do VI Initialize Device. Em seguida, a GPU é preparada para operações de FFT pela seleção do tipo de FFT a ser calculado.  Esse tipo inclui informações sobre o tamanho da FFT, o número de FFTs a serem executadas em paralelo na GPU e o tipo de dado dos sinais ou espectros de entrada. Esse processo reserva recursos na GPU para maximizar o desempenho.  O VI Allocate Memory é utilizado para criar um buffer de memória na GPU, que facilitará a transferência de dados entre a CPU e a GPU para uma operação FFT implementada. Esse VI armazena os dados de canal para transferi-los à GPU e os resultados dos cálculos executados na GPU, que serão transferidos à CPU quando o processamento tiver sido concluído.

II. A execução dos cálculos FFT na GPU

Figura 4: A execução dos cálculos FFT na GPU

Para a execução dos cálculos, em primeiro lugar os dados são transferidos da CPU ao buffer da GPU. O cálculo de FFT é executado na GPU, aproveitando sua arquitetura intensamente paralela para calcular a FFT de todos os canais simultaneamente. Quando os cálculos estão concluídos, os dados são transferidos do buffer da GPU de volta a um array na CPU. O VI Download Data transfere os canais de dados, armazenados em um array do LabVIEW, da CPU ao buffer alocado durante a fase de inicialização. O VI FFT calcula em paralelo o espectro de cada canal transferido. Para finalizar, o VI Upload Data transfere os dados de espectro armazenados no buffer da GPU de volta a um array do LabVIEW, para que sejam utilizados pela CPU.

III. Liberação dos recursos da GPU

Figura 5: Liberação dos recursos da GPU

O objetivo dessa seção final é liberar os recursos do GPU que foram inicializados no primeiro passo. O VI Free Memory libera o buffer da GPU utilizado para armazenar os dados da FFT. O VI Release Library libera os recursos da GPU que foram reservados durante a inicialização para os cálculos de FFT. Para finalizar, o VI Release Device libera os recursos da GPU reservados durante a inicialização do contexto CUDA para estabelecer comunicações com a GPU.

Conclusão

Usando o LabVIEW GPU Analysis Toolkit, desenvolvedores têm a capacidade de transferir cálculos significativos a uma GPU para processamento, liberando a CPU para trabalhar em outras tarefas. Isso proporciona ao usuário do LabVIEW um recurso de processamento muito poderoso, que ainda não estava disponível. Os dados adquiridos podem agora ser processados rapidamente, utilizando não apenas FPGAs e CPUs, mas também GPUs, e visualizados através de uma aplicação do LabVIEW. Como resultado, os usuários podem utilizar os recursos de sistema disponíveis com maior eficácia, minimizando também os custos computacionais associados às operações e transformações do processamento de dados de alto paralelismo.

Próximos passos

Participe da comunidade de computação com GPU no LabVIEW
Avaliar ou comprar o LabVIEW GPU Analysis Toolkit

NVIDIA e CUDA são marcas comerciais ou marcas comerciais registradas da NVIDIA Corporation. Outros nomes de empresas e produtos podem ser marcas comerciais das empresas às quais estão associados.

 

Voltar ao topo

Favoritos & compartilhar


Notas

Avalie este documento

Sua pergunta foi respondida?
Sim Não

Enviar