Le Raspberry Pi est-il compatible avec la virgule flottante?


34

Quelques articles disent qu'il est préférable d'utiliser des algorithmes de flottement progressif sur les dispositifs ARM, car très peu de puces ARM possèdent des coprocesseurs à flotteur constant. Alors, le RPi a-t-il un support dur float? Si oui, est-ce plus rapide que le soft float? (Ce devrait être, non?)

Réponses:


30

Selon la FAQ , le Raspberry Pi utilise une puce ARM 11 avec support en virgule flottante:

Quel SoC utilisez-vous?

Le SoC est un Broadcom BCM2835. Celui-ci contient un fichier ARM1176JZFS, à virgule flottante, fonctionnant à 700 MHz et un processeur graphique Videocore 4. Le GPU est capable de lire en qualité BluRay, en utilisant H.264 à 40 Mbits / s. Son noyau 3D rapide est accessible via les bibliothèques OpenGL ES2.0 et OpenVG fournies.

Ce sera plus rapide que le soft float (sinon, je serais étonné!), Mais sur les systèmes sans support matériel, il est souvent préférable d'utiliser le traitement à virgule fixe si vous n'avez pas spécifiquement besoin de la plage offerte par float. précision de point.


9

Il prend en charge le matériel en virgule flottante. Autant que je sache, ceci n'est pas disponible dans la distribution Debian par défaut fournie pour le RPi (pour le moment). Je ne suis pas très sûr d’Arch, bien que s’ils n’ont pas de soutien, j’imagine que ce le sera bientôt.

J'ai Gentoo sur mon RPi, donc tout est compilé avec le support hard float par défaut. C'est rapide :)

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

(distcc et cross-compiling utilisés intensivement, bien sûr!)


Xiol, pouvez-vous faire un benchmark Unixbench sur votre système Gentoo et publier les résultats? Ce serait sûrement intéressant pour la comparaison car la différence de performance entre le soft-fpu et le hard-fpu est assez grande. Selon copypaste.at/2012/06/raspberry-pi-und-debian-7-wheezy-soft.html (désolé, en allemand), le repère Whetstone est environ 10 fois plus rapide avec Raspian (ARMHF arch w / HardFPU) par rapport à l'IPV. Debian recommandé (ARMEL w / SoftFPU). Je suppose que pour GenToo, il doit être encore plus grand.

6

Alors, le RPi a-t-il un support dur float?

Oui, spécifiquement (sur le Pi d'origine) VFPv2.

Si oui, est-ce plus rapide que le soft float?

Oui

Quelques articles disent qu'il est préférable d'utiliser des algorithmes de flottement progressif sur les dispositifs ARM, car très peu de puces ARM possèdent des coprocesseurs à flotteur constant.

En 2007, la virgule flottante sur le bras était un désordre, beaucoup de puces n’avaient pas du tout de FPU. Ceux qui le faisaient avaient souvent l’un des plusieurs différents et incompatibles. Le pire bras Debian (l’un des principaux distributions Linux à l’époque à l’époque) reposait pour des raisons historiques pour un FPU appelé FPA que très peu de puces utilisaient et reposaient principalement sur l’émulation du noyau pour virgule flottante (le virement logiciel est lent, le virgule flottant émulé par le noyau) est plus lent). Je pense que la situation dans les autres distributions était similaire mais je ne suis pas positif à ce sujet.

Compte tenu du désordre régnant à l'époque, il a été décidé que la meilleure option consistait à créer un port EABI à l'aide de la version de base (soft-float) d'EABI. Cette ABI a été conçue de telle sorte que le code puisse utiliser l’ABI de base tout en utilisant éventuellement la FPU. L'idée à l'époque était que le noyau de la distribution serait construit en utilisant un logiciel à virgule flottante, puis le code spécifique qui utilise beaucoup de virgule flottante pourrait être construit avec un matériel en virgule flottante, mais en utilisant toujours l'ABI de base (soft float). Ce port était connu dans le monde Debian sous le nom "armel".

Cependant, le bit "paquetages spécifiques utilisant du matériel à virgule flottante" n'a pas vraiment fonctionné. En pratique, peu de paquets ont pris la peine de faire une telle chose et il y avait aussi la surcharge de mélanger les valeurs entre les registres entiers et les registres à virgule flottante.

Avance rapide jusqu'en 2011 et la situation a considérablement changé. Arm avait agressivement poussé VFP et la grande majorité des "processeurs d'applications" (le genre de choses que l'on trouve dans les téléphones mobiles et similaires) l'avaient adopté. Un certain nombre de distributions majeures de Linux (au moins Debian, Ubuntu et Fedora au départ, puis plus tard) ont choisi de créer des ports en utilisant une virgule flottante matérielle et l’ABI hard float. Malheureusement pour le Pi, ces distributions (qui étaient pratiquement terminées au moment de la sortie du Pi) définissaient généralement leur configuration matérielle minimale en tant que ARMv7 avec VFPv3_d16 afin qu'elles ne s'exécutent pas sur le Pi.

Les fans de Pi ont donc commencé à travailler sur des variantes de distribution spécifiques à pi, qui utilisaient une virgule flottante matérielle et l’ABI hard float, mais étaient construites avec des paramètres de compilation qui s’exécuteraient sur le pi.


5

Depuis le 18 septembre 2012, Arch Linux ARM prend également en charge les transferts en dur. Lire cette annonce:

Aujourd'hui, nous ouvrons au public les nouveaux référentiels à flotteurs fixes armv6, avec tous les packages conçus pour prendre en charge l'unité à virgule flottante VFP disponible dans Raspberry Pi et Via APC-IO. Comme il n'y a pas de chemin de mise à niveau entre le référentiel à flotteur progressif armv5 et le nouveau référentiel armv6h, nous avons également publié une nouvelle image d'installation pour Raspberry Pi. Le lien vers l'image est disponible sur la page d'installation du Pi sur notre site principal. Cette image est également configurée pour systemd à la place de sysvinit et d'initscripts. Par conséquent, les temps de démarrage sont plus rapides et l'installation est à l'épreuve du temps pour les modifications qui deviennent finalement permanentes dans Arch.

Arch Linux ARM Raspberry Pi


4

Oui, comme d'autres l'ont déjà indiqué, le Raspberry Pi a un support de flottement dur. Découvrez le système d'exploitation Raspbian .

Raspbian est un port non officiel de Debian Wheezy armhf dont les paramètres de compilation ont été ajustés pour produire un code "hard float" optimisé qui s'exécutera sur le Raspberry Pi. Cela devrait fournir des performances nettement plus rapides pour les applications qui utilisent beaucoup les opérations arithmétiques en virgule flottante.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.