Pelo que entendi o problema, existem problemas que podem ser fortemente paralelizados, por exemplo, renderização, decodificação de vídeo. Como as CPUs não são excelentes em tais tarefas, as GPUs foram criadas. Eles usam arquiteturas diferentes para empregar a execução SIMD. Eles também possuem um tipo especial de memória que funciona bem para acesso independente aos “threads” da GPU.
Porém, o que vemos é que a arquitetura x86 recebe inúmeras extensões que focam no processamento de streaming, como SSE ou AVX. Eles também são SIMD e, por algum motivo, são executados no lado da CPU. Então, qual é o sentido de adicioná-los?
Que tipo de vantagem essas extensões oferecem em relação a uma GPU normal? Quero dizer, as GPUs têm maior largura de banda de memória e outras coisas, mas isso não coloca as CPUs com extensões em desvantagem? Eles não sofrem de problemas de largura de banda de memória?
Entendo que nem todo computador deve ter uma GPU dedicada, por exemplo, servidores ou estações de trabalho. Mas se a carga útil for pequena, isso não deverá ser um problema. E se a carga útil for grande o suficiente, você compraria uma placa gráfica para essa tarefa. As extensões SIMD são como um meio-termo entre CPU e GPU.
Se as extensões SIMD tornam a CPU mais capaz de executar tarefas que normalmente são executadas pela GPU, isso não torna a GPU mais obsoleta? Quero dizer, se eles podem tornar a CPU mais amigável ao SIMD, por que não fizeram isso e decidiram terceirizar esse problema para um dispositivo diferente?
Só quero saber quais aplicações essas extensões recebem em um software onde o desempenho é importante. Por exemplo, um mecanismo de jogo ou um renderizador certamente usaria uma GPU. As extensões SIMD fariam diferença?