Unidades de computação AMD vs. Nvidia CUDA Cores: Qual é a diferença?
Se você tem seguido a Nvidia e a AMD, provavelmente conhece as especificações de suas GPUs que ambas as empresas gostam de usar. Por exemplo, a Nvidia gosta de enfatizar a contagem de núcleos CUDA para diferenciar sua oferta das placas da AMD, enquanto a AMD faz o mesmo com suas unidades de computação.
Mas o que esses termos realmente significam? Um núcleo CUDA é a mesma coisa que uma unidade de computação? Se não, qual é a diferença?
Vamos responder a essas perguntas e ver o que torna uma GPU AMD diferente de uma Nvidia.
Arquitetura Geral de uma GPU
Todas as GPUs, sejam da AMD, Nvidia ou Intel, funcionam da mesma maneira em geral. Eles têm os mesmos componentes principais e o layout geral desses componentes é semelhante em um nível superior.
Portanto, de uma perspectiva de cima para baixo, todas as GPUs são iguais.
Quando olhamos para os componentes proprietários específicos que cada fabricante inclui em sua GPU, as diferenças começam a surgir. Por exemplo, a Nvidia incorpora núcleos Tensor em suas GPUs, enquanto as GPUs AMD não têm núcleos Tensor.
Da mesma forma, a AMD usa componentes como o Infinity Cache, que as GPUs Nvidia não têm.
Portanto, para entender a diferença entre unidades de computação (CUs) e núcleos CUDA, primeiro temos que examinar a arquitetura geral de uma GPU. Uma vez que podemos entender a arquitetura e ver como funciona uma GPU, podemos ver claramente a diferença entre unidades de computação e núcleos CUDA.
Como funciona uma GPU?
A primeira coisa que você precisa entender é que uma GPU processa milhares ou até milhões de instruções simultaneamente. Portanto, uma GPU precisa de muitos núcleos pequenos e altamente paralelos para lidar com essas instruções.
Esses pequenos núcleos de GPU são diferentes dos grandes núcleos de CPU que processam uma instrução complexa por núcleo por vez.
Por exemplo, um Nvidia RTX 3090 tem 10496 núcleos CUDA. Por outro lado, o AMD Threadripper 3970X topo de linha tem apenas 64 núcleos.
Portanto, não podemos comparar núcleos de GPU com núcleos de CPU. Existem muitas diferenças entre uma CPU e GPU porque os engenheiros os projetaram para executar tarefas diferentes.
Além disso, ao contrário de uma CPU média, todos os núcleos da GPU são organizados em clusters ou grupos.
Por fim, um cluster de núcleos em uma GPU possui outros componentes de hardware, como núcleos de processamento de textura, unidades de pontos flutuantes e caches
para ajudar a processar milhões de instruções ao mesmo tempo. Esse paralelismo define a arquitetura de uma GPU. Do carregamento de uma instrução ao processamento, uma GPU faz tudo de acordo com os princípios do processamento paralelo.
- Primeiro, a GPU recebe uma instrução para processar de uma fila de instruções. Essas instruções são quase sempre predominantemente relacionadas a vetores.
- Em seguida, para resolver essas instruções, um planejador de thread as passa para clusters de núcleo individuais para processamento.
- Depois de receber as instruções, um planejador de cluster de núcleo integrado atribui as instruções aos núcleos ou elementos de processamento para processamento.
- Finalmente, diferentes clusters principais processam diferentes instruções em paralelo e os resultados são exibidos na tela. Então, todos os gráficos que você vê na tela, um videogame, por exemplo, são apenas uma coleção de milhões de vetores processados.
Resumindo, uma GPU possui milhares de elementos de processamento que chamamos de “núcleos” organizados em clusters. Os agendadores atribuem trabalho a esses clusters para atingir o paralelismo.
O que são unidades de computação?
Como visto na seção anterior, cada GPU possui clusters de núcleos contendo elementos de processamento. A AMD chama esses clusters principais de “unidades de computação”.
www.youtube.com/watch?v=uu-3aEyesWQ&t=202s
As unidades de computação são uma coleção de recursos de processamento como unidades lógicas e aritméticas (ALUs) paralelas, caches, unidades de ponto flutuante ou processadores de vetor, registradores e alguma memória para armazenar informações de thread.
Para simplificar, a AMD apenas anuncia o número de unidades de computação de suas GPUs e não detalha os componentes subjacentes.
Portanto, sempre que você vir o número de unidades de computação, pense nelas como um grupo de elementos de processamento e todos os componentes relacionados.
O que são núcleos CUDA?
Enquanto a AMD gosta de manter as coisas simples com o número de unidades de computação, a Nvidia complica as coisas usando termos como núcleos CUDA.
Os núcleos CUDA não são exatamente núcleos. Eles são apenas unidades de ponto flutuante que a Nvidia gosta de denominar como núcleos para fins de marketing. E, se você se lembrar, os clusters principais têm muitas unidades de ponto flutuante integradas. Essas unidades realizam cálculos vetoriais e nada mais.
Portanto, chamá-los de “núcleo” é marketing puro.
Portanto, um núcleo CUDA é um elemento de processamento que executa operações de ponto flutuante. Pode haver muitos núcleos CUDA dentro de um cluster de núcleo único.
Por fim, a Nvidia chama os clusters principais de “Streaming Multiprocessors ou SMs”. SMs são equivalentes às unidades de computação AMD, uma vez que as unidades de computação são os próprios clusters de núcleo.
Qual é a diferença entre unidades de computação e núcleos CUDA?
A principal diferença entre uma unidade de computação e um núcleo CUDA é que o primeiro se refere a um cluster principal e o último se refere a um elemento de processamento.
Para entender melhor essa diferença, tomemos o exemplo de uma caixa de engrenagens.
Uma caixa de engrenagens é uma unidade composta por várias engrenagens. Você pode pensar na caixa de engrenagens como uma unidade de computação e as engrenagens individuais como unidades de ponto flutuante de núcleos CUDA.
Em outras palavras, onde Compute Units são uma coleção de componentes, os núcleos CUDA representam um componente específico dentro da coleção. Portanto, unidades de computação e núcleos CUDA não são comparáveis.
É também por isso que quando a AMD menciona o número de unidades de computação para suas GPUs, elas são sempre bem menores em comparação com as placas Nvidia concorrentes e sua contagem de núcleos CUDA. Uma comparação mais favorável seria entre o número de Multiprocessadores Streaming da placa Nvidia e o número de unidades de computação da placa AMD.
Núcleos CUDA e unidades de computação são diferentes e não comparáveis
As empresas têm o hábito de usar terminologia confusa para apresentar seus produtos da melhor maneira. Isso não apenas confunde o cliente, mas também dificulta o controle das coisas que importam.
Portanto, certifique-se de saber o que procurar ao pesquisar uma GPU. Ficar longe do jargão de marketing tornará sua decisão muito melhor e mais tranquila.