Computação paralela é a técnica de dividir um problema grande em partes menores e processá-las ao mesmo tempo em vários núcleos ou processadores, para terminar mais rápido do que executando tudo em sequência.
Como funciona
Imagine somar um milhão de números. Um único núcleo soma um a um. Com quatro núcleos, cada um soma um quarto da lista e depois os resultados parciais são combinados. Se o trabalho se divide bem, o tempo cai quase na mesma proporção.
Exemplo em código
from multiprocessing import Pool
def quadrado(n):
return n * n
if __name__ == "__main__":
with Pool(4) as p:
print(p.map(quadrado, range(10)))
Tipos de paralelismo
- Paralelismo de dados: a mesma operação aplicada a partes diferentes dos dados (como em GPUs).
- Paralelismo de tarefas: tarefas distintas executadas simultaneamente.
- Em nível de instrução: o processador executa várias instruções ao mesmo tempo (pipeline, superescalar).
Paralela x concorrente x distribuída
| Conceito | Ideia |
|---|---|
| Paralela | Execução realmente simultânea, em vários núcleos. |
| Concorrente | Várias tarefas em andamento, que podem se alternar em um só núcleo. |
| Distribuída | Vários computadores conectados em rede cooperando. |
Vantagens e desafios
O ganho é desempenho em problemas grandes, como simulações, renderização, aprendizado de máquina e processamento de imagens. Os desafios são a sincronização entre as partes, as condições de corrida e a Lei de Amdahl: a parte do programa que não pode ser paralelizada limita o ganho total.
Onde está no dia a dia
Processadores multinúcleo, placas de vídeo (milhares de núcleos pequenos), bancos de dados e supercomputadores usam paralelismo. Para aproveitar, o software precisa ser escrito para isso, com threads, processos ou frameworks apropriados.
