Se eu estava construindo um computador, com qual item devo me preocupar mais?
Do ponto de vista prático, você provavelmente deve prestar bastante atenção à placa-mãe e à CPU, dada a relativa dificuldade de atualização em comparação à GPU. Após a compra, é um momento terrível para descobrir que você não tem espaço para quatro GPUs ou um processador rápido o suficiente para mantê-los todos ocupados.
Você também deve estar ciente de que o desempenho da GPU é mais frequentemente relatado em FLOPs de precisão única e diminui bastante na precisão dupla. Se você precisar de precisão extra em suas simulações, acabará bem abaixo da velocidade anunciada.
Para as corridas de engenharia de software
Na verdade, existem duas preocupações principais do ponto de vista de software, o gargalo de Von Neumann e o modelo de programação. A CPU possui um acesso bastante bom à memória principal, a GPU possui uma grande quantidade de memória mais rápida integrada. Não é de se estranhar que o tempo em que os dados entram e saem da GPU nega completamente qualquer ganho de velocidade. Em geral, a CPU é vencedora em computação moderada em grandes quantidades de dados, enquanto a GPU se destaca em computação pesada em quantidades menores. Tudo isso nos leva ao modelo de programação.
Em um nível alto, o problema é o antigo e honrado debate MIMD / SIMD. Os sistemas de instrução múltipla / dados múltiplos têm sido os grandes vencedores na computação geral e comercial. Nesse modelo, que inclui o SMP, existem vários processadores, cada um executando seu próprio fluxo de instruções individual. É o equivalente a computador de uma cozinha francesa, onde você direciona um pequeno número de cozinheiros qualificados para concluir tarefas relativamente complicadas.
Os sistemas de instrução única / dados múltiplos, por outro lado, se assemelham mais a uma enorme sala cheia de funcionários acorrentados às suas mesas, seguindo as instruções de um controlador mestre. "Todo mundo ADICIONA as linhas 3 e 5!" Foi usado em sua forma pura no ILLIAC e em alguns sistemas "mini-super", mas perdeu no mercado. As GPUs atuais são primos próximos, são mais flexíveis, mas compartilham a mesma filosofia geral.
Resumir brevemente:
- Para qualquer operação, a CPU será mais rápida, enquanto a GPU pode executar várias simultaneamente. A diferença é mais aparente com flutuadores de 64 bits.
- Os núcleos da CPU podem operar em qualquer endereço de memória; os dados da GPU devem ser compactados em uma área menor. Você só ganha se estiver fazendo cálculos suficientes para compensar o tempo de transferência.
- Código pesado em condicionais normalmente será mais feliz na CPU.