O Raspberry Pi tem suporte a ponto flutuante de hardware?

34

Existem alguns artigos dizendo que é melhor usar algoritmos de flutuação suave em dispositivos ARM, porque muito poucos chips ARM possuem coprocessadores de flutuação rígida. Então, o RPi tem suporte para float rígido? Em caso afirmativo, é mais rápido esse flutuador suave? (Deveria ser, certo?)

Alex Chamberlain
fonte

Respostas:

30

De acordo com as perguntas frequentes , o Raspberry Pi usa um chip ARM 11 com suporte a ponto flutuante:

Que SoC você está usando?

O SoC é um Broadcom BCM2835. Ele contém um ARM1176JZFS, com ponto flutuante, rodando a 700 MHz e uma GPU Videocore 4. A GPU é capaz de reproduzir com qualidade BluRay, usando H.264 a 40MBits / s. Ele possui um núcleo 3D rápido acessado usando as bibliotecas OpenGL ES2.0 e OpenVG fornecidas.

Isso será mais rápido do que a flutuação suave (se não for, eu ficaria surpreso!), Embora em sistemas sem suporte de hardware seja frequentemente uma idéia melhor aproveitar o processamento de ponto fixo se você não precisar especificamente do intervalo oferecido pela flutuação precisão pontual.

Matt Lacey
fonte
9

Ele possui suporte a ponto flutuante de hardware. Até onde sei, isso não está disponível na distribuição padrão do Debian fornecida para o RPi (ainda). Não tenho muita certeza sobre Arch, embora se eles não tiverem suporte, imagino que em breve.

Eu tenho o Gentoo no meu RPi, então tenho tudo compilado com suporte a hard float por padrão. É rápido :)

CFLAGS="-O2 -pipe -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard"
CXXFLAGS="${CFLAGS}"
CHOST="armv6j-hardfloat-linux-gnueabi"

(distcc e compilação cruzada são usadas extensivamente, é claro!)

Xiol
fonte
Xiol, você pode fazer um Unixbench-Benchmark no seu sistema Gentoo e postar os resultados? Certamente seria interessante para comparação, pois a diferença de desempenho entre o soft-fpu e o hard-fpu é bastante grande. De acordo com copypaste.at/2012/06/raspberry-pi-und-debian-7-wheezy-soft.html (desculpe, idioma alemão), o benchmark whetstone é cerca de 10x mais rápido com Raspian (ARMHF arch w / HardFPU) versus RPI Debian recomendado (ARMEL com SoftFPU). Eu acho que para o GenToo deve ser ainda maior.
6

Então, o RPi tem suporte para float rígido?

Sim, especificamente (no Pi original) VFPv2.

Em caso afirmativo, é mais rápido esse flutuador suave?

sim

Existem alguns artigos dizendo que é melhor usar algoritmos de flutuação suave em dispositivos ARM, porque muito poucos chips ARM possuem coprocessadores de flutuação rígida.

Em 2007, o ponto flutuante no braço era uma bagunça, muitos chips não tinham uma FPU. Aqueles que tiveram frequentemente um de vários diferentes e incompatíveis. O pior braço do Debian (uma das principais distribuições de braço do linux na época) foi criado por razões históricas para uma FPU chamada FPA, que poucos chips possuíam e usavam principalmente a emulação de kernel para ponto flutuante (o ponto flutuante do software é lento, o ponto flutuante emulado pelo kernel é mais lento). Acho que a situação em outras distros foi semelhante, mas não sou positivo nisso.

Dada a confusão no momento em que foi tomada uma decisão, a melhor opção era fazer uma porta EABI usando a versão de linha de base (flutuação suave) do EABI. Essa ABI foi projetada de forma que o código possa usar a ABI da linha de base enquanto, opcionalmente, a FPU. A idéia na época era que o núcleo da distribuição fosse construído usando o ponto flutuante do software e, em seguida, o código específico que pesava o ponto flutuante poderia ser construído com o ponto flutuante do hardware, mas ainda usando a ABI da linha de base (flutuação suave). Essa porta era conhecida no mundo Debian como "armel".

No entanto, o bit "pacotes específicos criados usando o ponto flutuante de hardware" não funcionou. Na prática, poucos pacotes se preocuparam em fazer isso e também houve a sobrecarga de valores aleatórios entre os registros de ponto inteiro e ponto flutuante.

Avanço rápido de 2011 e a situação havia mudado consideravelmente. Arm estava pressionando agressivamente o VFP e a grande maioria dos "processadores de aplicativos" (o tipo de coisa que você encontra nos telefones móveis e similares) o adotou. Várias grandes distribuições Linux (pelo menos Debian, Ubuntu e Fedora inicialmente, mais tarde) optaram por portas usando ponto flutuante de hardware e ABI de flutuador rígido. Infelizmente para o Pi, essas distros (que estavam chegando à conclusão na época em que o Pi foi lançado) geralmente definem seus requisitos mínimos de hardware como ARMv7 com VFPv3_d16, para que não funcionassem no Pi.

Então, os fãs do Pi começaram a trabalhar em variantes de distribuição específicas do pi, que usavam o ponto flutuante de hardware e a ABI do hard float, mas foram construídas com configurações do compilador que seriam executadas no pi.

Peter Green
fonte
5

Desde 18 de setembro de 2012, o Arch Linux ARM também oferece suporte a hard float. Leia este comunicado:

Hoje estamos abrindo os novos repositórios armv6 hard-float ao público, com todos os pacotes criados para suportar a unidade de ponto flutuante VFP disponível no Raspberry Pi e Via APC-IO. Como não há caminho de atualização entre o repositório soft-float armv5 e o novo repositório armv6h, também lançamos uma nova imagem de instalação para o Raspberry Pi. O link para a imagem está disponível na página Instalação do Pi em nosso site principal. Essa imagem também é configurada para systemd em vez de sysvinit e initscripts, para que os tempos de inicialização sejam mais rápidos e a instalação seja preparada para o futuro para alterações que acabam se tornando permanentes no Arch.

Arch Linux ARM Raspberry Pi

Toni
fonte
4

Sim, como outros já declararam, o Raspberry Pi tem suporte para float rígido. Confira o sistema operacional Raspbian .

Raspbian é uma porta não oficial do Debian Wheezy armhf com as configurações de compilação ajustadas para produzir código otimizado "hard float" que será executado no Raspberry Pi. Isso deve fornecer desempenho significativamente mais rápido para aplicativos que fazem uso pesado de operações aritméticas de ponto flutuante.

Christopher
fonte