Pagina inicial » como » Por que ainda estamos usando CPUs em vez de GPUs?

    Por que ainda estamos usando CPUs em vez de GPUs?

    Cada vez mais as GPUs estão sendo usadas para tarefas não gráficas, como cálculos de risco, cálculos de dinâmica de fluidos e análise sísmica. O que nos impede de adotar dispositivos acionados por GPU?

    A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas da comunidade..

    A questão

    Leitor de SuperUsuários Ell se atualiza com notícias de tecnologia e está curioso para saber por que não estamos usando mais sistemas baseados em GPU:

    Parece-me que hoje em dia muitos cálculos são feitos na GPU. Obviamente gráficos são feitos lá, mas usando CUDA e similares, AI, algoritmos hash (pense Bitcoins) e outros também são feitos na GPU. Por que não podemos simplesmente nos livrar da CPU e usar a GPU por conta própria? O que torna a GPU muito mais rápida que a CPU?

    Por que de fato? O que torna o processador exclusivo?

    A resposta

    Contribuidor do SuperUser DragonLord oferece uma visão geral bem suportada das diferenças entre GPUs e CPUs:

    TL; resposta DR: As GPUs têm muito mais núcleos de processador do que CPUs, mas como cada núcleo de GPU é executado significativamente mais lento que um núcleo de CPU e não possui os recursos necessários para sistemas operacionais modernos, eles não são apropriados para executar a maior parte do processamento na computação cotidiana. Eles são mais adequados para operações de computação intensiva, como processamento de vídeo e simulações físicas.

    A resposta detalhada: O GPGPU ainda é um conceito relativamente novo. As GPUs foram inicialmente usadas apenas para renderizar gráficos; À medida que a tecnologia avançava, o grande número de núcleos em GPUs em relação às CPUs era explorado pelo desenvolvimento de recursos computacionais para GPUs, de modo que eles pudessem processar muitos fluxos paralelos de dados simultaneamente, independentemente de quais dados fossem. Embora as GPUs possam ter centenas ou mesmo milhares de processadores de fluxo, cada uma delas é mais lenta do que o núcleo da CPU e possui menos recursos (mesmo que estejam completas e possam ser programadas para executar qualquer programa que uma CPU possa executar). Recursos ausentes das GPUs incluem interrupções e memória virtual, que são necessárias para implementar um sistema operacional moderno.

    Em outras palavras, CPUs e GPUs têm arquiteturas significativamente diferentes que os tornam mais adequados para diferentes tarefas. Uma GPU pode manipular grandes quantidades de dados em muitos fluxos, executando operações relativamente simples, mas é inadequada para processamento pesado ou complexo em um ou poucos fluxos de dados. Uma CPU é muito mais rápida em uma base por núcleo (em termos de instruções por segundo) e pode realizar operações complexas em um ou poucos fluxos de dados com mais facilidade, mas não pode manipular com eficiência muitos fluxos simultaneamente.

    Como resultado, as GPUs não são adequadas para lidar com tarefas que não se beneficiam significativamente ou não podem ser paralelizadas, incluindo muitos aplicativos comuns de consumidor, como processadores de texto. Além disso, as GPUs usam uma arquitetura fundamentalmente diferente; um teria que programar um aplicativo especificamente para uma GPU para que funcione, e técnicas significativamente diferentes são necessárias para programar as GPUs. Essas diferentes técnicas incluem novas linguagens de programação, modificações em linguagens existentes e novos paradigmas de programação que são mais adequados para expressar uma computação como uma operação paralela a ser executada por muitos processadores de fluxo. Para obter mais informações sobre as técnicas necessárias para programar GPUs, consulte os artigos da Wikipédia sobre processamento de fluxo e computação paralela..

    As GPUs modernas são capazes de realizar operações de vetor e aritmética de ponto flutuante, com os cartões mais recentes capazes de manipular números de ponto flutuante de precisão dupla. Frameworks como CUDA e OpenCL permitem que programas sejam escritos para GPUs, e a natureza das GPUs os torna mais adequados para operações altamente paralelizáveis, como em computação científica, onde uma série de placas de computação GPU especializadas pode ser uma substituição viável para uma pequena computar cluster como nos supercomputadores pessoais NVIDIA Tesla. Consumidores com GPUs modernas e experientes com o Folding @ home podem usá-los para contribuir com clientes de GPUs, que podem realizar simulações de dobramento de proteína em velocidades muito altas e contribuir com mais trabalho para o projeto (leia as Perguntas Frequentes primeiro, especialmente aquelas relacionadas a GPUs). As GPUs também permitem uma melhor simulação física em videogames usando o PhysX, aceleram a codificação e a decodificação de vídeo e realizam outras tarefas de computação intensiva. São esses tipos de tarefas que as GPUs são mais adequadas para executar.

    A AMD é pioneira no design de um processador chamado APU (Accelerated Processing Unit, unidade de processamento acelerado), que combina os núcleos convencionais de CPU x86 com GPUs. Isso pode permitir que os componentes de CPU e GPU trabalhem juntos e melhorem o desempenho em sistemas com espaço limitado para componentes separados. À medida que a tecnologia continua avançando, veremos um grau crescente de convergência dessas partes antes separadas. No entanto, muitas tarefas executadas por sistemas operacionais e aplicativos de PC ainda são mais adequadas para CPUs, e muito trabalho é necessário para acelerar um programa usando uma GPU. Como tanto software existente usa a arquitetura x86, e como as GPUs exigem diferentes técnicas de programação e faltam vários recursos importantes necessários para os sistemas operacionais, uma transição geral da CPU para a GPU para a computação diária é extremamente difícil..


    Tem algo a acrescentar à explicação? Soe fora nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.