- Le portage RISC-V de Fedora Linux est en cours depuis environ 3 mois, et la plupart des paquets ont déjà été compilés pour Fedora 43
- Le matériel RISC-V actuel affiche des vitesses de compilation extrêmement lentes, avec jusqu’à plus de 5 fois le temps nécessaire par rapport à x86_64 pour compiler le même paquet
- Pour être adopté comme architecture officielle de Fedora, il faut un matériel de classe serveur capable de compiler binutils en moins d’une heure
- Les retards de compilation provoquent le mécontentement des mainteneurs de paquets, et l’éventualité d’une exclusion de RISC-V est également évoquée
- À l’avenir, Fedora prévoit le démarrage des builds Fedora 44 et l’introduction de builders plus rapides afin d’améliorer les problèmes de vitesse, tout en maintenant l’unification du noyau et la désactivation de LTO
État d’avancement du portage Fedora RISC-V
- Le portage RISC-V de Fedora Linux est en cours depuis environ 3 mois, avec plusieurs changements survenus entre-temps
- La plupart des éléments du tracker Fedora RISC-V ont été traités, et seuls 17 éléments restent actuellement à l’état NEW
- Les sources des paquets Fedora sont récupérées puis compilées avec la commande
fedpkg mockbuild -r fedora-43-riscv64
- Jusqu’à présent, 86 Pull Requests portant sur des paquets ont été soumises, la plupart ont été fusionnées, et les builds pour Fedora 43 sont terminés
- Il est possible de poursuivre les builds supplémentaires en suivant le tag ‘f43-updates’
-
Problème de vitesse de compilation sur RISC-V
- Le matériel RISC-V affiche actuellement des vitesses de compilation extrêmement lentes
- Le temps de compilation de
binutils 2.45.1-4.fc43 a été mesuré à 143 minutes sur riscv64, 36 minutes sur aarch64 et 29 minutes sur x86_64
- La carte StarFive VisionFive 2 utilisée offre une bonne prise en charge des pilotes, mais reste lente
- La compilation du même paquet sur la carte Milk-V Megrez a pris 58 minutes
- Les builds RISC-V actuels sont effectués avec LTO (optimisation au moment de l’édition des liens) désactivé, afin de réduire l’usage mémoire et le temps de compilation
- Les builders disposent de 4 à 8 cœurs et de 8 à 32 Go de RAM, avec des performances évaluées au niveau d’un Arm Cortex-A55
- À l’avenir, on attend des améliorations grâce au SoC UltraRISC UR-DP1000 (jusqu’à 64 Go de RAM) et à des systèmes basés sur SpacemiT K3 (jusqu’à 32 Go de RAM)
-
Conditions d’intégration comme architecture officielle de Fedora
- Pour être inclus comme architecture officielle de Fedora, il faut un matériel capable de compiler le paquet binutils en moins d’une heure
- Il faut aussi garantir une vitesse comparable à celle des autres architectures, même avec LTO activé à l’échelle du système
- Comme les résultats de build ne sont publiés dans le dépôt qu’une fois toutes les architectures terminées, des builders lents provoquent le mécontentement des mainteneurs de paquets
- Par le passé, des plaintes avaient déjà émergé à cause de la lenteur des builders AArch64, et certains développeurs ont évoqué la possibilité d’exclure RISC-V
- À l’avenir, les builders devront être des systèmes de type serveur montables en rack et administrables à distance ; un environnement à base de SBC nécessitant des redémarrages manuels n’est pas adapté
- Si ces conditions ne sont pas remplies, l’adoption de RISC-V 64 bits comme architecture officielle de Fedora sera impossible
-
Tests locaux avec QEMU
- Étant donné la longueur des temps de compilation, les tests locaux via l’émulation QEMU sont utiles
- Sur un desktop AArch64 de 80 cœurs, l’émulation riscv64 en espace utilisateur via QEMU permet de compiler le paquet
llvm15 en environ 4 heures
- La compilation du même paquet sur un builder Banana Pi BPI-F3 prend 10,5 heures
- Comme le paquet LLVM exploite à la fois les cœurs et la mémoire, on attend un gain de performances sur des systèmes basés sur Ampere One à 192/384 cœurs
- QEMU n’est utilisé que pour les builds et tests locaux, Fedora n’effectuant que des builds natifs
-
Plan pour la suite
- Le démarrage des builds Fedora Linux 44 est prévu
- L’objectif est d’utiliser la même image de noyau sur tous les builders, alors qu’actuellement plusieurs versions de noyau coexistent
- LTO restera désactivé
- Pour résoudre les problèmes de vitesse, l’introduction de nouveaux builders plus rapides est prévue, avec l’affectation de certains paquets lourds à ces builders
1 commentaires
Commentaires sur Hacker News
Je pense qu’au lieu d’accuser l’ISA elle-même, le problème vient surtout de l’implémentation en silicium et du logiciel qui manque d’optimisations spécifiques à l’architecture
RISC-V finira de toute façon par progresser
ARM aussi était d’abord orienté vitesse, puis s’est réorienté vers l’efficacité énergétique pour réussir dans l’embarqué, et semble aujourd’hui revenir vers une logique axée sur les performances
Par exemple, il y a des cas comme l’issue LLVM #150263, #141488
Il y a aussi le fait que la taille de page est figée à 4KiB, ce qui limite les performances par rapport à ARM
ARM a été rapide, puis plus lent, puis à nouveau rapide, mais RISC-V n’a encore jamais montré de réelle compétitivité dans le hautes performances
Les implémentations créées par de petites équipes sont impressionnantes, mais pour le mobile, le desktop ou les serveurs, cela reste insuffisant
En pratique, l’essentiel se joue dans la structure du cache et dans la conception VLSI analogique des interfaces DDR et PCI, et il n’y a presque aucune équipe qui fasse ça correctement
En plus, toutes les entreprises veulent devenir des « vendeurs RISC-V haute performance », mais personne ne veut s’occuper du « marché de l’embarqué »
Aux États-Unis, on est dans un modèle où l’on vend surtout de l’IP plutôt que de fabriquer directement des puces, si bien qu’en pratique il faut dépendre de vendeurs chinois pour obtenir du vrai matériel
L’exemple classique est celui de l’architecture Netburst du Pentium 4, arrivée à ses limites, puis remplacée comme pilier d’Intel par l’architecture Core dérivée de cœurs basse consommation
L’histoire d’ARM suit une trajectoire assez comparable
Selon Steve Furber, elles étaient si efficaces que du code pouvait s’exécuter alors qu’on avait oublié de brancher l’alimentation
Partage d’une correction à un billet de blog écrit par un collègue
Sur le système de build Fedora RISC-V, la compilation de binutils sur un Milk-V “Megrez” a été terminée en 67 minutes, soit une nette amélioration par rapport au précédent record de 143 minutes
Les cartes de développement les plus rapides actuellement ne sont pas les Banana Pi, mais les SiFive “HiFive P550” et UltraRISC “DP1000”
La présentation FOSDEM “Fedora on RISC-V: state of the arch” aborde aussi ces benchmarks
Les tests de Marcin ont été effectués sur une StarFive “VisionFive 2”, une carte stable mais plutôt lente
Pour compiler gcc en liant 4 binaires simultanément, il faut au moins 16GB, avec du swap activé pour rester stable
Sur la VisionFive 2, il faut donc compiler en
-j1ou-j2, ce qui allonge le temps d’un facteur 2 à 4Utiliser un meilleur linker (à la place de ld), ou pouvoir définir séparément le nombre de liens parallèles comme dans le système de build LLVM, serait plus efficace
Il a fallu 40 ans à ARM pour arriver là où il est aujourd’hui, et RISC-V n’existe encore que depuis 15 ans
Cette année, Tenstorrent devrait lancer une plateforme serveur basée sur RVA23, donc cela vaut la peine de suivre ça
Au final, la clé sera que les vendeurs de matériel sortent du silicium haute performance
felix construit actuellement le dépôt Arch Linux RISC-V avec un Milk-V Pioneer
Je pense que le ralentissement du développement est aussi dû aux sanctions contre SOPHGO
Le Milk-V Oasis basé sur le SG2380 de SOPHGO a vu sa sortie annulée, alors que c’était un SoC très prometteur
Les puces de cette société prenaient en charge une double architecture capable de basculer entre ARM et RISC-V
Voir le dépôt Arch RISC-V et cet article associé
Je me demande pourquoi il faut absolument compiler le logiciel RISC-V sur un système RISC-V
Comme le compilateur incorpore les informations de l’architecture cible dans le code, on pourrait théoriquement le faire depuis un autre système, non ?
Fedora ne prend actuellement en charge que les builds natifs, et ses cross-compilateurs ne concernent que des versions bare-metal pour le firmware
En plus, l’automatisation des tests est difficile, donc faire des builds natifs testés sur du vrai matériel reste plus réaliste
AArch64 aussi était lent à ses débuts, mais aujourd’hui un build de Qt4 se termine en 18 minutes
On peut résoudre ça selon les langages, mais l’écosystème C/C++ est particulièrement complexe
C’est pourquoi la plupart des gens compilent dans une VM ou sur le matériel cible réel
C’est devenu possible avec LLVM, mais il faut toujours un émulateur pour les tests
Certains avancent aussi : « Il suffit de cross-compiler sur un serveur x86_64, non ? »
Il y a un an, j’ai vu sur Mastodon un message disant que « le matériel RISC-V le plus rapide est plus lent que QEMU »
RISC-V se diffuse certes dans de nombreux domaines, mais reste encore faible en calcul haute performance
En plus, le développeur a disparu à cause des sanctions américaines
Le cross-compiling n’est pas impossible, mais l’exécution des tests aux étapes
%installet%checkpose problèmePar exemple, dans la PR du paquet rpy, il a fallu désactiver les tests vectoriels sur RISC-V
On peut séparer build et tests, mais le gain de temps ne compense pas vraiment la complexité supplémentaire
En 2012 déjà, dans un fil LWN (lien), il y avait des discussions opposées au cross-compiling
Le résultat affirmant que i686 est 14 % plus rapide que x86_64 semble douteux
En général, x86_64 est plus rapide, notamment grâce au nombre accru de registres et aux instructions vectorielles
Cela dit, comme le compilateur tente davantage d’optimisations, les temps de build peuvent aussi s’allonger
Il est possible qu’un phénomène similaire existe sur RISC-V
Le texte ne précise pas quel CPU RISC-V a été utilisé, ce qui rend la comparaison ambiguë
Le Milk-V Pioneer fait exception avec ses 64 cœurs et 128GB de RAM, mais son architecture est ancienne et son prix élevé