Introdução

Entender qual formato de precisão utilizar em um cálculo é fundamental, mas às vezes pode parecer um processo de equilíbrio: A exatidão da computação de precisão dupla parece competir com o valor do desempenho de seu equivalente de precisão simples. Ambas garantem a exatidão e ampliam as limitações dos valores numéricos, mas cada técnica oferece uma finalidade e um custo operacional exclusivos.

Aqui, vamos analisar detalhadamente cada formato, como eles diferem entre si e como a combinação de diferentes níveis de precisão pode ajudar a manter a eficiência sem perder a exatidão.

O papel da precisão na ciência da computação

Para entender a diferença entre computação de precisão simples e dupla, é importante compreender o papel da precisão na ciência da computação. Imagine realizar um cálculo usando um número irracional (como o pi) e incluir apenas dois dígitos à direita do ponto decimal (3,14). Você chegaria a um resultado mais preciso se fizesse o cálculo incluindo dez dígitos à direita do ponto decimal (3,1415926535).

Nos computadores, esse nível de exatidão é chamado de precisão e é medido em dígitos binários (bits) em vez de casas decimais. Quanto mais bits forem usados, maior será a precisão.

Man on computer in a dim room with a city view.

Representação de números de ponto de flutuação padrão IEEE

A representação de números grandes em formato binário de computador requer um padrão para garantir que não haja grandes discrepâncias nos cálculos. Assim, o IEEE (Institute of Electrical and Electronics Engineers) desenvolveu o Padrão IEEE para aritmética de ponto de flutuação (IEEE 754)

Há três componentes no IEEE 754:

  1. A base: 0 representa um número positivo e 1 representa um número negativo. 
  2. O expoente de polaridade: o expoente é usado para representar expoentes positivos e negativos. Portanto, é necessário adicionar uma polaridade ao expoente real para obter o expoente armazenado. 
  3. A mantissa: também conhecida como coeficiente, representa os bits de precisão do número.

Usando esses componentes, o IEEE 754 representa os números de ponto de flutuação de duas maneiras: formato de precisão simples e formato de precisão dupla. Embora ainda existam várias maneiras de representar números de ponto de flutuação, o IEEE 754 é o mais comum porque geralmente é a representação mais eficiente de valores numéricos. 

Blue abstract data dots

Representação de números de ponto de flutuação padrão IEEE

A representação de números grandes em formato binário de computador requer um padrão para garantir que não haja grandes discrepâncias nos cálculos. Assim, o IEEE (Institute of Electrical and Electronics Engineers) desenvolveu o Padrão IEEE para aritmética de ponto de flutuação (IEEE 754)

Há três componentes no IEEE 754:

  1. A base: 0 representa um número positivo e 1 representa um número negativo. 
  2. O expoente de polaridade: o expoente é usado para representar expoentes positivos e negativos. Portanto, é necessário adicionar uma polaridade ao expoente real para obter o expoente armazenado. 
  3. A mantissa: também conhecida como coeficiente, representa os bits de precisão do número.

Usando esses componentes, o IEEE 754 representa os números de ponto de flutuação de duas maneiras: formato de precisão simples e formato de precisão dupla. Embora ainda existam várias maneiras de representar números de ponto de flutuação, o IEEE 754 é o mais comum porque geralmente é a representação mais eficiente de valores numéricos. 

O que é o formato de ponto de flutuação de precisão simples?

O formato de ponto de flutuação de precisão simples usa 32 bits de memória do computador e pode representar uma ampla variedade de valores numéricos. Normalmente chamado de FP32, esse formato é mais bem utilizado para cálculos que não sofrerão uma leve aproximação.

O que é o formato de ponto de flutuação de precisão dupla?

O formato de ponto de flutuação de precisão dupla, por outro lado, ocupa 64 bits da memória do computador e é muito mais preciso que o formato de precisão simples. Esse formato é geralmente chamado de FP64 e é usado para representar valores que exigem um intervalo maior ou um cálculo mais preciso.

Embora a precisão dupla permita maior exatidão, ela também exige mais recursos computacionais, armazenamento de memória e transferência de dados. O custo de usar esse formato nem sempre faz sentido para todos os cálculos.

A diferença entre precisão simples e dupla

A maneira mais simples de distinguir entre computação de precisão simples e dupla é observar quantos bits representam o número de ponto de flutuação. Para precisão simples, 32 bits são usados para representar o número de ponto de flutuação. Para precisão dupla, 64 bits são usados para representar o número de ponto de flutuação. 

Veja o número de Euler (e), por exemplo. Estes são os primeiros 50 dígitos decimais de e: 2.7182818284590452353602874713526624977572470936999.

Veja o número de Euler em binário, convertido em precisão única:  
01000000001011011111100001010100

Este é o número de Euler em binário, convertido em precisão dupla: 
010000000000010110111111 0000101010001011000101000101011101101001

O primeiro número representa a base. O próximo conjunto de números (oito para precisão simples e onze para precisão dupla) representa o expoente polarizado. O conjunto final de números (23 para precisão simples e 52 para precisão dupla) representa a mantissa.

Gráfico de comparação: Precisão simples versus Precisão dupla

 

Precisão simples

Precisão dupla

Visão Geral

Usa 32 bits de memória para representar um valor numérico, com um dos bits representando o sinal da mantissa

Usa 64 bits de memória para representar um valor numérico, com um dos bits representando o sinal da mantissa

 

Expoente polariza

 

8 bits usados para o expoente

 

11 bits usados para o expoente

 

Mantissa

 

Usa 23 bits para a mantissa (para representar a parte fracionária)

 

Usa 52 bits para a mantissa (para representar a parte fracionária)

 

Aplicação no mundo real

Geralmente usado em jogos ou em qualquer programa que exija uma representação mais ampla sem um alto nível de precisão

Geralmente usado para cálculos científicos e programas complexos que exigem um alto nível de precisão

Computação de precisão múltipla versus computação de precisão mista

Além da computação de precisão simples e dupla, consideradas de precisão múltipla, há também a computação de precisão mista.

A computação de precisão mista, às vezes chamada de transprecisão, é comumente usada no campo do aprendizado de máquina. Ela executa cálculos começando com valores de meia precisão (16 bits) para matemática matricial rápida. Em seguida, à medida que os números são computados, eles são armazenados pela máquina em uma precisão maior. 

A vantagem da computação de precisão mista é que ela oferece respostas acumuladas com precisão semelhante às executadas na computação de precisão dupla, sem exigir o mesmo nível de potência, tempo de execução e memória.

Blue abstract computer chip layout

Benefícios da combinação de diferentes níveis de precisão

Diferentes cargas de trabalho exigem níveis de precisão, pois a execução de cálculos não é uma prática única para todos. Os cientistas da computação precisam de uma variedade de formatos para computação com base nos recursos disponíveis, no orçamento, no armazenamento e em outras variáveis. 

Por exemplo, por ser incrivelmente precisa, a precisão dupla pode ser a melhor opção para algumas pesquisas de big data ou modelagem climática. Mas o armazenamento e os recursos necessários para esses cálculos nem sempre compensam seu uso. Os desenvolvedores podem otimizar a eficiência e o gasto computacional combinando diferentes níveis de precisão, conforme necessário. 

Otimize sua eficiência computacional

Embora a precisão na computação seja sem dúvida essencial, é importante entender como você pode se beneficiar do uso de uma variedade de níveis de precisão. Para garantir a eficiência operacional sem abrir mão de cálculos precisos, você precisa de recursos flexíveis compatíveis com diferentes formatos de ponto de flutuação.

AMD Vivado™ Design Suite

O AMD Vivado™ ML e o System Generator for DSP, da AMD, oferecem ferramentas robustas compatíveis com várias precisões de ponto de flutuação, seja de precisão múltipla ou mista. Esse conjunto de ferramentas líder do setor também oferece a flexibilidade da precisão personalizada necessária para acelerar o desenvolvimento, aumentar a produtividade e permitir o uso eficiente de recursos. Saiba mais sobre como o AMD Vivado pode aumentar sua eficiência computacional.

Mantenha-se conectado

Inscreva-se para receber o boletim com as últimas atualizações sobre data centers ou entre em contato com um representante de vendas da AMD.