1 / 12

Implementação de um algoritmo de imagens em forma distribuída utilizando Qt /C++

Implementação de um algoritmo de imagens em forma distribuída utilizando Qt /C++. André Felipe Bitencourt Moraes. O Que é Qt ?. Criada pela TrollTech Versão 4.0 lançada em 2004 É a base do KDE Adquirida pela Nokia em 2009 Biblioteca para C++ (mas há o PyQt)

anika
Download Presentation

Implementação de um algoritmo de imagens em forma distribuída utilizando Qt /C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Implementação de um algoritmo de imagens em forma distribuída utilizando Qt/C++ André Felipe Bitencourt Moraes

  2. O Que é Qt? • Criada pela TrollTech • Versão 4.0 lançada em 2004 • É a base do KDE • Adquirida pela Nokia em 2009 • Biblioteca para C++ (mas há o PyQt) • É intrusiva na linguagem, é necessário ferramentas próprias para compilação. • Estende as funcionalidades do C++. • Foi criada uma IDE própria. (QT Creator) • Roda em Windows, Linux, MacOS, Symbian e há um beta para Android).

  3. Algoritmo

  4. Desafios do Algoritmo • Caracteres tem alturas iguais: • Linhas podem ser calculadas simultaneamente devido a independência de dados. • Caracteres tem espaçamentos horizontais diferentes. • É necessário avaliar em conjuntos de caracteres para a linha. Uma Hash foi utilizada que faz cache de resultados intermediários • Avaliação do melhor caractere e sequencia: • Foi utilizado uma métrica para avaliar a menor distancia entre as cores dos pixels.

  5. Paralelismo • Verificar o nº de threads que a máquina pode executar simultaneamente. • Cada linha é executada por uma thread. Quando terminada, uma nova linha é processada. • Threads são sincronizadas com a thread principal, assim é possível as operações de Parar ou avisar o resultado.

  6. Demonstração na máquina local

  7. Qt e sincronização de Threads 1 • Um dos fundamentos do Qt é o Signal Slot: • O programador declara os signals que os objetos possuem bem como os slots (que são nada mais que funções marcadas e sem retorno). • A ferramenta QMAKE durante a compilação gera os stubs desses sinais e funções. • Durante a execução pode ser fazer conexões e desconexões entre signal-slot ou signal-signal. Uma conexão só é feita se os parâmetros são corretos.

  8. Qt e sincronização de Threads 2 • Objetos do QT são pertencentes a threads. • Quando é emitido um sinal, a conexão verifica se o receptor pertence a mesma thread, e executa como se fosse uma função normal. • Quando o receptor é de uma thread diferente, a mensagem é colocada numa fila e o slot só é chamado pelo receptor quando estiver livre. • QT suporta também: • Mutex, Pool de Threads (utilizados) • Semáforos, Inteiros e Ponteiros atômicos. • Como alto nivel: Computação Assincrona e MapReduce

  9. Distruibuição de tarefas • Máquinas se conectam via TCP. • Quando uma das máquinas precisa executar uma tarefa, ela atribui trabalhos (linhas) as máquinas conectadas. • É enviado todos os dados necessários a execução da tarefa. • O receptor cria uma thread e executa a tarefa. • Quando a tarefa termina, verifica-se que se tratava de uma tarefa remota então é devolvido o resultado. • Ao receber a resposta, verifica se a resposta é a do problema corrente.

  10. Demonstração com várias máquinas

  11. Escalonador e tolerância a falhas • Ao iniciar o processo, o host escolhe as tarefas. • O nº de tarefas atribuídas a cada maquina é igual ao nº de processadores lógicos da máquina. • Quando uma máquina estiver livre, é dado um trabalho que ainda não foi atribuído a ela, e que foi menos atribuídos a outras máquinas. • Assim, garante-se tolerância a falhas caso alguma máquina pare de responder. • A interface do usuário mostra qual máquina terminou o trabalho.

  12. Benchmark

More Related