Skip to content

sudonikroot/Local-Nuvem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

Análise de Algoritmos, Paralelismo e Execução na Nuvem

Este projeto apresenta a implementação e análise de desempenho do algoritmo Merge Sort, explorando o paralelismo em nível de processo (multiprocessing) e a portabilidade via Containers (Docker).

🚀 Objetivo

  • Analisar dependências de dados (RAW, WAR, WAW) em algoritmos computacionais.
  • Implementar e comparar estratégias de execução sequencial e paralela.
  • Validar a portabilidade e desempenho em ambiente Local (Linux/openSUSE) e Nuvem (Google Cloud Shell) via Docker.

🛠️ Análise Técnica (Hazards)

Com base no relatório técnico, foram identificados:

  • RAW (Read After Write): A função merge aguarda a escrita das sublistas pelas chamadas recursivas.
  • WAR (Write After Read): Controle de índices para garantir que a leitura ocorra antes da atualização.
  • WAW (Write After Write): Escritas sucessivas na lista de resultado que exigem sincronização na intercalação final.

🐳 Execução via Docker (Portabilidade)

O projeto foi containerizado para garantir que a execução seja idêntica em qualquer ambiente (Ubuntu, openSUSE ou Nuvem).

Como Rodar (Local ou Cloud Shell):

# 1. Build da imagem
docker build -t g6-aed-mergesort .

# 2. Execução do container
docker run --name g6-execucao g6-aed-mergesort

📊 Estratégia de Paralelismo

O código utiliza o multiprocessing para escalar conforme os núcleos da CPU:

  1. Split: Divisão do array em fatias baseada no cpu_count().
  2. Pool de Processos: Ordenação independente de cada fatia.
  3. Sincronização: Intercalação final realizada pelo processo pai após a barreira de sincronização.

📈 Histórico de Evolução (Commits)

  1. 4769f5f: Implementação básica sequencial.
  2. d1891b0: Adição de métricas de tempo.
  3. 9e9a1e2: Integração de multiprocessing.
  4. Atual: Dockerização para deploy em Google Cloud Shell.

Ambiente de Execução: Local (openSUSE Tumbleweed) | Cloud (Google Cloud Shell / Docker).