Visão Geral
O curso Programação Paralela e SIMD com Mojo é focado no desenvolvimento de aplicações extremamente performáticas, explorando paralelismo, vetorização SIMD e otimizações de baixo nível, utilizando a linguagem Mojo.
O curso aborda desde os fundamentos de execução paralela até técnicas avançadas usadas em IA, Machine Learning, HPC, Data Science e processamento numérico intensivo, permitindo que o aluno extraia o máximo do hardware moderno (CPU e vetores).
Conteúdo Programatico
1. Fundamentos de Computação Paralela
- Evolução do hardware moderno
- CPUs multicore e pipelines
- Paralelismo vs concorrência
- Latência, throughput e escalabilidade
- Onde Mojo se destaca
2. Arquitetura de Processadores e SIMD
- Registradores vetoriais
- Instruções SIMD (AVX, AVX2, AVX-512 – visão conceitual)
- Diferença entre código escalar e vetorizado
- Impacto da memória no desempenho SIMD
- Limites e cuidados com vetorização
3. Modelo de Execução Paralela do Mojo
- Filosofia de paralelismo do Mojo
- Execução paralela segura
- Relação entre paralelismo e ownership
- Comparação com Python (GIL)
- Comparação com C++ e Rust
4. Paralelismo de Dados (Data Parallelism)
- Processamento em lote
- Divisão de dados (chunking)
- Loops paralelos
- Redução (reduce)
- Map e transformações paralelas
5. Paralelismo de Tarefas (Task Parallelism)
- Execução de tarefas independentes
- Sincronização
- Dependências entre tarefas
- Granularidade de tarefas
- Padrões comuns de paralelismo
6. SIMD em Mojo – Fundamentos
- Tipos vetoriais
- Operações vetoriais
- Alinhamento de memória
- Vetorização manual vs automática
- Quando usar SIMD explicitamente
7. SIMD Avançado
- Operações matemáticas vetorizadas
- Processamento de arrays e matrizes
- Filtros e transformações numéricas
- Evitando branch divergence
- Técnicas de loop unrolling
8. Paralelismo + SIMD (Híbrido)
- Combinação de threads e vetores
- Escalando em múltiplos núcleos
- Balanceamento de carga
- Evitando false sharing
- Estratégias híbridas de otimização
9. Segurança, Sincronização e Race Conditions
- Data races e deadlocks
- Uso seguro de dados compartilhados
- Ownership aplicado ao paralelismo
- Boas práticas de sincronização
- Debugging de código paralelo
10. Benchmarking e Profiling
- Medição de performance
- Comparação código sequencial vs paralelo
- Comparação escalar vs SIMD
- Análise de speedup
- Interpretação de resultados
11. Casos Reais de Uso
- Processamento numérico em larga escala
- Pipelines de IA e ML
- Operações vetoriais em Data Science
- Simulações computacionais
- Comparação Python vs Mojo
12. Projeto Prático Avançado
- Código Python sequencial
- Reescrita paralela em Mojo
- Aplicação de SIMD
- Otimização progressiva
- Benchmark final e relatório técnico
13. Boas Práticas Profissionais
- Quando paralelizar
- Quando usar SIMD
- Evitando over-engineering
- Checklist de performance
- Padrões para projetos corporativos