Artigo: https://1drv.ms/b/s!Aq6i6K-GwXx8qVk6h62d5csaNzl9
Este artigo avalia a implementação de uma biblioteca de classes em C++ para algoritmos concorrente e paralelo para realizar o produto escalar, uma operação usada na criação de classificadores lineares para algoritmos de aprendizado de máquina. As classes foram desenvolvidas em linguagem de programação paralela CUDA (Compute Unified Device Architecture), explorando recursos de GPU's, e em linguagem C++ com uma API de programação de memória compartilhada OpenMP, utilizando os recursos das CPU's. Ao final, o artigo discute a redução do custo computacional do produto escalar comparando essas abordagens com a implementação convencional, sequencial, realizada em CPU.
Medindo e Modelando o Desempenho de Aplicações em um Ambiente VirtualRafael Reis
Análise do artigo "Medindo e Modelando o Desempenhode Aplicações em umAmbiente Virtual" dos autores F. Benevenuto, C. Fernandes, M. Caldas, V. Almeida.
Medindo e Modelando o Desempenho de Aplicações em um Ambiente VirtualRafael Reis
Análise do artigo "Medindo e Modelando o Desempenhode Aplicações em umAmbiente Virtual" dos autores F. Benevenuto, C. Fernandes, M. Caldas, V. Almeida.
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Rodrigo Almeida
A segurança e a confiabilidade em sistemas embarcados são áreas críticas e de recente desenvolvimento. Além das complicações inerentes à área de segurança, existem restrições quanto a capacidade de processamento e de armazenamento destes sistemas. Isto é agravado em sistemas de baixo custo. Neste trabalho, é apresentada uma técnica que, aplicada à troca de contexto em sistemas operacionais, aumentando a segurança destes. A técnica é baseada na detecção e correção de erros em sequência de valores binários. Para realização dos testes, foi desenvolvido um sistema operacional de tempo real e implementado numa placa de desenvolvimento. Observou-se que o consumo de processamento das técnicas de detecção de erro são inferiores às de correção, cerca de 2% para CRC e 8% para Hamming. Objetivando-se minimizar o tempo de processamento optou-se por uma abordagem mista entre correção e detecção. Esta abordagem reduz o consumo de processamento medida que os processos que exigem tempo real apresentem uma baixa taxa de execução, quando comparados com o período de troca de contexto. Por fim, fica comprovada a possibilidade de implementação desta técnica em qualquer sistema embarcado, inclusive em processadores de baixo custo.
Introdução à programação de kits Lego NXT usando linguagem gráfica nativa ou NXT-G. Noções de controle automático: malha aberta x malha fechada. Programando Seguidor de Linha usando Sensor de Cor, inicialmente por comparação (movimento bastante oscilatório), terminando com controlador Proporcional (movimento suave, inclui auto-calibração). Noção de controlador industrial PID (Proporcional - Integrativo - Derivativo). Outras sugestões de montagem.
Video (dos slides) em: http://youtu.be/FzGMM5R8ZPg
CONTROLE MPC MULTIVARIÁVEL COM RESTRIÇÕES USANDO FUNÇÕES DE LAGUERREUFPA
Neste trabalho apresenta-se o projeto de um controlador preditivo multivariável baseado em modelo, com restrições, usando as Funções de Laguerre, tendo o intuito de demonstrar os benefícios e facilidades da aplicação deste tipo de controlador em sistemas MIMO (Multiple- Input and Multiple-Output) com restrições. O controlador proposto apresenta a vantagem de diminuir a carga computacional utilizada para resolver o problema de otimização envolvido no projeto, isto porque utiliza uma rede de filtros de funções ortonormais de Laguerre para obter a trajetória futura do sinal de controle dentro de um horizonte de predição, além de melhorar
o compromisso entre a viabilidade do sinal de controle e o desempenho de malha fechada do sistema para os casos com restrições, no qual as funções de Laguerre são utilizadas em
conjunto com a Programação Quadrática de Hildreth para encontrar a solução ótima do sinal de controle com restrições. Este controlador apresenta grandes vantagens se comparado com o controle preditivo baseado em modelo em sua abordagem clássica, em que os operadores de avanço de tempo são utilizados para predizer a trajetória futura do sinal de controle, o que leva à soluções, em alguns casos, pouco satisfatórias, e a uma alta carga computacional para casos
onde o sinal de controle requer um longo horizonte de predição e uma alto desempenho em malha fechada. Este trabalho também relata testes experimentais com um manipulador robótico configurado como um sistema MIMO com três entradas e três saídas e testes simulados com a coluna de destilação binária de Wood e Berry que é um sistema MIMO com duas entradas e duas saídas, contendo atrasos de transporte. Os testes têm como objetivo comparar os resultados do controlador apresentado com o controlador que usa a abordagem tradicional e com isso demonstrar as vantagens do método usando as funções de Laguerre e sua eficiência para sistemas
MIMO.
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Rodrigo Almeida
A segurança e a confiabilidade em sistemas embarcados são áreas críticas e de recente desenvolvimento. Além das complicações inerentes à área de segurança, existem restrições quanto a capacidade de processamento e de armazenamento destes sistemas. Isto é agravado em sistemas de baixo custo. Neste trabalho, é apresentada uma técnica que, aplicada à troca de contexto em sistemas operacionais, aumentando a segurança destes. A técnica é baseada na detecção e correção de erros em sequência de valores binários. Para realização dos testes, foi desenvolvido um sistema operacional de tempo real e implementado numa placa de desenvolvimento. Observou-se que o consumo de processamento das técnicas de detecção de erro são inferiores às de correção, cerca de 2% para CRC e 8% para Hamming. Objetivando-se minimizar o tempo de processamento optou-se por uma abordagem mista entre correção e detecção. Esta abordagem reduz o consumo de processamento medida que os processos que exigem tempo real apresentem uma baixa taxa de execução, quando comparados com o período de troca de contexto. Por fim, fica comprovada a possibilidade de implementação desta técnica em qualquer sistema embarcado, inclusive em processadores de baixo custo.
Introdução à programação de kits Lego NXT usando linguagem gráfica nativa ou NXT-G. Noções de controle automático: malha aberta x malha fechada. Programando Seguidor de Linha usando Sensor de Cor, inicialmente por comparação (movimento bastante oscilatório), terminando com controlador Proporcional (movimento suave, inclui auto-calibração). Noção de controlador industrial PID (Proporcional - Integrativo - Derivativo). Outras sugestões de montagem.
Video (dos slides) em: http://youtu.be/FzGMM5R8ZPg
CONTROLE MPC MULTIVARIÁVEL COM RESTRIÇÕES USANDO FUNÇÕES DE LAGUERREUFPA
Neste trabalho apresenta-se o projeto de um controlador preditivo multivariável baseado em modelo, com restrições, usando as Funções de Laguerre, tendo o intuito de demonstrar os benefícios e facilidades da aplicação deste tipo de controlador em sistemas MIMO (Multiple- Input and Multiple-Output) com restrições. O controlador proposto apresenta a vantagem de diminuir a carga computacional utilizada para resolver o problema de otimização envolvido no projeto, isto porque utiliza uma rede de filtros de funções ortonormais de Laguerre para obter a trajetória futura do sinal de controle dentro de um horizonte de predição, além de melhorar
o compromisso entre a viabilidade do sinal de controle e o desempenho de malha fechada do sistema para os casos com restrições, no qual as funções de Laguerre são utilizadas em
conjunto com a Programação Quadrática de Hildreth para encontrar a solução ótima do sinal de controle com restrições. Este controlador apresenta grandes vantagens se comparado com o controle preditivo baseado em modelo em sua abordagem clássica, em que os operadores de avanço de tempo são utilizados para predizer a trajetória futura do sinal de controle, o que leva à soluções, em alguns casos, pouco satisfatórias, e a uma alta carga computacional para casos
onde o sinal de controle requer um longo horizonte de predição e uma alto desempenho em malha fechada. Este trabalho também relata testes experimentais com um manipulador robótico configurado como um sistema MIMO com três entradas e três saídas e testes simulados com a coluna de destilação binária de Wood e Berry que é um sistema MIMO com duas entradas e duas saídas, contendo atrasos de transporte. Os testes têm como objetivo comparar os resultados do controlador apresentado com o controlador que usa a abordagem tradicional e com isso demonstrar as vantagens do método usando as funções de Laguerre e sua eficiência para sistemas
MIMO.
3. Introdução
O produto escalar é uma operação entre dois vetores, cujo,
resultado é um escalar.
– muito utilizado nos problemas de visão computacional;
– criação de classificadores lineares para algoritmos de
aprendizado de máquina.
CUDA (Compute Unified Device Architecture)
– arquitetura de abstração com modelo de programação
embutido;
– executada em GPU.
API OpenMP (Open Multi Processing)
– crescido bastante nos últimos anos;
– memória compartilhada;
– conjunto de threads;
– realizado em CPU.
12/12/133/18
4. Introdução
OpenMP executado em CPU e CUDA realizado
em GPU.
12/12/134/18
Figura 1: CPU Intel Core i7. Figura 2: GPU NVIDIA GeForce.
5. Introdução
Representação das arquiteturas CPU's e
GPU's.
12/12/135/18
Figura 3: Arquitetura de CPU’s à esquerda, e GPU’s à direita
[Graphics Hardware 2008].
Cache
ALUControl
ALU
ALU
ALU
DRAM
CPU
DRAM
GPU
7. Objetivos
Reduzir o custo computacional do cálculo do
produto escalar utilizando as abordagens da
implementação de algoritmos concorrente
empregando OpenMP e paralelo recorrendo
CUDA;
Ao final, será comparado essas visões com a
implementação sequencial do produto escalar.
12/12/137/18
8. Produto Escalar
Produto escalar em sistema de coordenada
cartesiana ortogonal:
- Produto escalar:
w=x1y1+x2y2
12/12/138/18
Figura 5: Plano no espaço R² [Lages 2007].
9. Algoritmo Utilizando CUDA
Dividido em duas partes:
– Multiplicação dos vetores feita em paralelo:
●
Declarado construtor __global__;
●
Executado no dispositivo, kernel;
●
Cada thread calcula sua parcela do produto
escalar:
– res[tid] = v1[tid]*v2[tid]
●
tid é a identificação da thread;
– Soma de todo o vetor resultante feita
sequencialmente;
12/12/139/18
10. Algoritmo Utilizando OpenMP
Foram definidos dois vetores, v1 e v2 com
tamanhos idênticos;
Para realizar o produto escalar concorrente:
– Cada thread calcula sua parcela do produto
escalar e armazena na sua cópia na variável
prod_reduction:
●
prod_reduction += v1*v2;
– No final da região paralela, essa cópia é atualizada
com a soma dos valores calculados por todas as
threads;
– A cláusula reduction:
●
Cada thread tem seu valor privado;
●
Processo de compartilhamento;
12/12/1310/18
11. Comparação dos Tempos de Execução
dos Algoritmos
Paralelo com o Sequencial;
Concorrente com o Sequencial;
Teste 1:
– um tamanho fixo para os vetores;
– medindo o tempo para uma quantidade de execuções do
produto escalar.
Teste 2:
– uma quantidade fixa de execuções;
– mediu-se o tempo para tamanhos diferentes dos vetores.
Foi utilizado linhas de tendência:
– encontrar o melhor tempo do algoritmo sequencial em relação
ao algoritmo paralelo e concorrente.
Foi utilizado o método da variação percentual:
– Saber o ganho percentuais em relação aos resultados sequencial
em relação ao paralelo e concorrente.
12/12/1311/18
12. Utilizando CUDA
●
Variação percentual com quant. execução
(máxima) de 200:
– Diminuição percentual de 2278,0833% do tempo.
12/12/1312/18
Figura 6: Comparação entre dos tempos de execução paralelo e sequencial
modificando quantidade de execuções.
13. Utilizando CUDA
●
Variação percentual com tam. vetor (máxima) de
985000:
– Diminuição percentual de 2339,0803% do tempo.
12/12/1313/18
Figura 7: Comparação entre dos tempos de execução paralelo e sequencial
modificando o tamanho do vetor.
14. Utilizando OpenMP
●
Variação percentual com quant. execução
(máxima) de 200:
– Diminuição percentual de 401,0940% do tempo.
12/12/1314/18
Figura 8: Comparação entre dos tempos de execução concorrente e
sequencial modificando quantidade de execuções.
15. Utilizando OpenMP
●
Variação percentual com tam. vetor (máxima) de
985000:
– Diminuição percentual de 401,7781% do tempo.
12/12/1315/18
Figura 9: Comparação entre dos tempos de execução concorrente e
sequencial modificando o tamanho do vetor.
16. Conclusão
A implementação com OpenMP gerou desempenho
satisfatório, sendo superior à sequencial:
– melhoria no desempenho cerca de 400% nos dois
testes.
Utilizando CUDA, mesmo sendo feito somente a
paralelização da multiplicação, foi satisfatório:
– diminuição percentual cerca de 2000%
Uso de paralelismo voltado para visão
computacional:
– paralelização do produto escalar mostrou-se
apropriado.
12/12/1316/18
17. Referências
Utilizadas na apresentação:
– Graphics Hardware 2008. Disponível em: http://www.graphicshardware.org
Acesso em 09 de dezembro de 2013;
– Lages, E. N. (2007). Vetores – Produto Escalar, Universidade Federal de
Alagoas, Faculdade de Arquitetura e Urbanismo, Alagoas.
Outras:
– Biezuner, R. J. (2009). Vetores, Universidade Federal de Minas Gerais,
Departamento de Matemática, Belo Horizonte, Minas Gerais.
– Sanders, J. and Kandrot, E. (2011). CUDA by Example: An Introduction to
General-Purpose GPU Programming, Pearson Education, United States.
– Sena, Maria C. R. and Costa, Joseaderson A. C. (2008). TUTORIAL OpenMP
C/C++, Universidade Federal de Alagoas, SUN microsysterms.
12/12/1317/18