Skip to content

Projeto 1 - Otimizações em CPU

Projeto 1 - Mineração de Hashes CPU em ambiente de HPC

Neste projeto, seu grupo deverá diagnosticar e otimizar um algoritmo de mineração de criptomoedas implementado em C++. O código inicial foi propositalmente escrito de forma ineficiente, apresentando gargalos péssimas práticas de uso de memória.

Espera-se que seu grupo seja capaz de identificar esses problemas, propor hipóteses de melhoria, aplicar técnicas de otimização e mensurar o impacto das mudanças no desempenho da aplicação. Ao final, seu grupo deverá elaborar um relatório técnico com perfil, documentando todo o processo de análise e otimização.

A dificuldade da mineração é ajustada pela quantidade de zeros exigida no início do hash. À medida que vocês aumentam essa dificuldade, o desafio computacional cresce, o que demanda boas decisões de otimização e uso eficiente de CPU e memória. Analise adequadamente os recursos disponíveis das filas do Cluster Franky para realizar os seus testes e suas otimizações.


Objetivo

Aplicar conhecimentos de:

  • Análise de desempenho
  • Diagnóstico de gargalos
  • Boas práticas de gerenciamento de memória
  • Paralelismo com OpenMP
  • Distribuição com MPI

Rúbrica de Avaliação

Conceito Critérios Técnicos
C Executa o minerador sequencial no cluster Franky com dificuldade 6 zeros, Realiza Passagem de objetos grandes por referência ou ponteiro; Minimização de cópias desnecessárias; Uso eficiente de buffers; Implementa uma heurísitca eficiente.
B Executa o minerador com dificuldade 7 zeros, Realiza as otimizações da rúbrica C e aplica paralelização com OpenMP ou distribuição com MPI
A Executa o minerador com dificuldade 8 zeros, Realiza as otimizações da rúbrica C e aplica paralelização com OpenMP E distribuição com MPI

Entrega

A entrega deve conter:

  1. Código-fonte funcional

  2. Comentado e organizado

  3. Inclui versão base e versão otimizada
  4. Deve ser entregue via GitHub Classroom

  5. Relatório Técnico

  6. Diagnóstico dos gargalos do código base

  7. Proposta de otimização e hipótese de melhoria
  8. Implementação da hipótese
  9. Comparação de desempenho (tempo, speedup, eficiência, etc.)
  10. Discussão dos resultados e limitações encontradas

Bônus por Qualidade do relatório técnico

Conceito Base Com Bônus
C C+
B B+
A A+

Observações

  • Espera-se que o aluno entenda os problemas do código base antes de corrigir.
  • O binário transacoes simula um ambiente de rede assíncrono com envio de blocos não simultâneos, para que o código minerador seja tolerante a ordem e tempo de chegada.
  • A execução dos testes pode demorar minutos. Se planeje bem, escolha adequadamente a fila que será utilizada nos seus testes.