En même temps que le Mac Pro, en 2019, Apple sortait une carte d’accélération un peu particulière, l’Afterburner. Je voulais en tester une en Thunderbolt depuis longtemps, mais la carte n’était pas disponible seule au départ, et quand elle l’a été, elle était à 2 300 €. Même maintenant, il faut sortir 1 400 € sur Amazon… et avoir un Mac Pro 2019.
Mais en cherchant, je suis tombé sur une carte d’occasion à un bon prix (tout est relatif, mais j’ai payé plus de dix fois moins que le prix original). J’ai donc voulu tester. Le titre spoile sur le résultat, ça ne fonctionne pas, mais la carte elle-même est intéressante.
Parlons usage, d’abord. La carte Afterburner est une carte de décompression vidéo, pour un codec précis, le ProRes. C’est un codec Apple employé dans le monde de la vidéo professionnelle, intéressant pour le montage. Le problème du ProRes (et du ProRes RAW), c’est que c’est parfois lourd à décoder. Si vous avez une timeline de montage avec plusieurs flux ProRes, la charge CPU peut être (très) élevée. C’est là que la carte Afterburner prend la main : elle s’occupe de la lecture, pour un rendu fluide, même avec des flux 8K. Apple explique qu’une carte peut décoder huit flux 8K en ProRes RAW, ou vingt-trois flux 4K, en temps réel. On peut même installer plusieurs cartes.
Le résultat, pour ceux qui ont pu tester en 2019, était efficace. La carte permet réellement de réduire la charge pendant la lecture, et rend le montage bien plus fluide sur le Mac Pro, pour ceux qui ont besoin de décoder de nombreux flux 4K ou 8K. Même en 2020 (le Mac Pro 2019 est sorti en décembre), c’était un marché de niche : tout le monde n’a pas nécessairement des dizaines de flux ProRes à décoder.
Même si c’est une carte de décompression, elle est aussi utile en partie pour la compression. Elle n’aide pas directement à compresser plus rapidement, mais comme elle permet de décompresser plus rapidement la vidéo source, elle laisse plus de puissance pour la compression. Je n’ai pas de Mac Pro sous la main, mais pour se donner une idée, la conversion d’une vidéo en ProRes 4444 XQ (avec un débit de 1,5 Gb/s) prend 5:18 sur un Mac mini M4 Pro avec une décompression logicielle (et un encodage matériel) et seulement 3:12 si j’active l’accélération matérielle dans HandBrake.
La carte a eu une durée de vie assez courte dans l’absolu : elle n’est officiellement compatible qu’avec le Mac Pro 2019, qui est un des derniers Mac Intel. Il y a une bonne raison : Apple a intégré le décodage du ProRes dans ses SoC dès les puces M1 Pro (pas sur les puces M1). Une puce M1 Max peut décoder neuf flux 8K selon Apple (plus que la carte Afterburner à 2 300 €, donc) et la puce M2 Ultra du Mac Pro de 2022 en décode vingt-deux (l’équivalent de trois cartes Afterburner). Ce qui était extraordinaire avec le Mac Pro en 2019 est donc devenu la norme dès les puces M2, dans un simple MacBook Air ou un iPad.
Le côté technique
La carte Afterburner est une carte PCI-Express 3.0 (16x) assez longue. D’un point de vue physique, elle est pensée pour le Mac Pro 2019 et ça se voit. Elle est plus haute qu’une carte standard, avec une équerre un peu décalée. Il n’y a pas de ventilateur, mais c’est logique dans le cas de la tour d’Apple : le refroidissement du boîtier est mutualisé pour les cartes d’extension, comme dans un serveur. La carte intègre ce qu’on appelle un FPGA, une puce programmable. De façon très schématique, une puce classique (ASIC) a des circuits fixés, alors qu’un FPGA peut être (re)programmé pour proposer n’importe quel circuit. C’est une solution intéressante dans certains cas, quand on a besoin d’une petite série de composants (concevoir un ASIC coûte cher) ou tout simplement pour développer du matériel. Avec un FPGA, on peut tester, modifier, etc. avant la conception finale. Depuis quelques années, on utilise les FPGA dans d’autres domaines, notamment l’émulation. C’est assez pratique : on peut concevoir des circuits très optimisés pour des tâches précises, mais aussi les (re)programmer pour une autre tâches.
Sur le papier, les FPGA sont très pratiques. En réalité, ils ont pas mal de limites, et le premier est le prix. Un FPGA est fondamentalement plus cher qu’une puce dédiée pour la même tâche, et propose moins de transistors (on parle de portes logiques). Dans la majorité des cas, c’est surtout un compromis : soit on investit beaucoup d’argent dans la création d’une puce, et peu dans la fabrication elle-même; soit on utilise un FPGA cher à produire. Dans le cas d’Apple, pour une carte qui vise un marché de niche et qui peut être vendue à un prix élevé, le FPGA a de l’intérêt. Dans certains domaines, le FPGA peut rester intéressant : pour une console rétro qui ne vas pas se vendre à des millions d’exemplaires et qui ne nécessite pas un FPGA trop complexe, c’est viable. Et les possibilités de reprogrammation pour corriger des bugs ou supporter d’autres consoles sont des points valables.
Tout ce que je viens de dire était théorique, pour une raison : jusqu’à maintenant, on savait qu’Apple utilisait un FPGA, mais pas quel FPGA. Si vous me connaissez, vous avez compris que la réponse est plus bas.
Tester en Thunderbolt
Je n’ai pas de Mac Pro, donc je voulais tester en Thunderbolt. Une solution qui a trois contraintes sur le papier. La première, c’est le côté matériel : la carte n’est pas dans un format standard. La seconde, c’est le côté logiciel : Apple l’explique, elle n’est pas compatible Thunderbolt. Le troisième est plus technique : la bande passante du Thunderbolt est environ quatre fois plus faible que le connecteur PCI-Express 16x.
Pour le matériel, la carte n’entre pas dans mon boîtier Razer Core X par défaut, elle est trop haute et son encoche trop épaisse sur la prise PCI-Express. Au départ, j’ai testé avec une extension PCI-Express que j’avais en stock, pensée pour du minage, mais c’était une mauvaise idée. J’était bloqué en PCI-Express 1.1 et l’alimentation passait par une prise Molex, ce qui n’est pas très propre. J’ai donc acheté une extension blindée de meilleure qualité. J’ai dû couper un peu au niveau de l’encoche, mais ça fonctionne.
Maintenant, la partie logicielle. Les pilotes – qui n’existent que pour les puces Intel – ne sont pas compatibles Thunderbolt. Dans l’absolu, ce n’est pas un problème : pendant des années, j’ai modifié les extensions de Mac OS X pour activer la prise en charge du Thunderbolt sur les cartes Nvidia, par exemple. Sur le papier, la prise en charge du Thunderbolt, c’est juste deux lignes dans un fichier qui indiquent au système d’exploitation que le pilote peut fonctionner en externe. Au passage, comme les pilotes sont uniquement x86, ça ne fonctionne évidemment pas sur les Mac Apple Silicon. Et de toute façon, la majorité des puces – sauf la première, M1 -, propose le décodage du ProRes.
Jusqu’à macOS Mojave, c’était à peu près jouable. Il fallait désactiver le SIP et parfois d’autres trucs, mais c’était possible. Mais à partir de macOS Catalina, Apple a mis son système d’exploitation en lecture seule. Et donc modifier les extensions fournies avec macOS est devenu compliqué. Et avec les systèmes suivants, c’est encore pire. Bien évidemment, la carte Afterburner nécessite a minima macOS Catalina.
Sous Catalina, il faut désactiver le SIP, monter la partition principale en lecture (sudo mount -uw /
) et ajouter deux lignes dans le pilote (/System/Library/Extensions/AppleAfterburner.kext/Contents/Info.plist
).
<key>IOPCITunnelCompatible</key>
<true/>
Ensuite, normalement, un redémarrage et une réactivation du SIP (et un passage de Kext Utility) permettent de faire reconnaître la carte.
Avec les systèmes suivants, c’est compliqué. Pour tout dire, j’ai cassé une installation de macOS Big Sur avec les manipulations. Voici un résumé, ça peut toujours servir.
Après avoir désactivé le SIP, il faut créer un point de montage temporaire.
mkdir ~/livemount
Avec diskutil list
, il faut chercher la partition qui contient l’OS, puis la monter dans le point de montage. Il faut mettre la bonne valeur pour disk1s1
.
sudo mount -o nobrowse -t apfs /dev/disk1s1 ~/livemount
J’ai utilisé nano
pour modifier les fichiers, avec l’ajout des mêmes deux lignes, vus plus haut.
sudo nano /Users/Vous/livemount/System/Library/Extensions/AppleAfterburner.kext/Contents/Info.plist
Après la modification, deux commandes permettent en théorie de mettre à jour les extensions. Ça a fonctionné sous macOS Monterey sur un MacBook Pro.
sudo kmutil install --volume-root ~/livemount --update-all
sudo kextcache -i ~/livemount/
Enfin, il faut indiquer au système que la version modifiée de l’OS est celle sur laquelle il faut démarrer. Attention, d’ailleurs, la moindre mise à jour de macOS nécessite de recommencer.
sudo bless --folder ~/livemount/System/Library/CoreServices --bootefi --create-snapshot
Après un redémarrage, la carte devrait être détectée.
Un résultat inattendu (ou pas)
Le résultat ? Ça ne fonctionne pas réellement. La carte est reconnue par macOS, elle a même sa case dans le Moniteur d’activité. Quand on lance une vidéo, les processus liés à l’accélération vidéo (VideoToolBox) se déclenchent. Mais le résultat est une image noire ou verte, selon les cas. J’ai essayé avec du ProRes RAW, du ProRes classique, différentes variantes avec des fichiers parfois assez lourds, sur deux Mac. Mais j’ai le même résultat : la carte s’active, la vidéo est décodée par la carte (enfin, semble être décodée, en tout cas) avec une utilisation très faible du processeur, mais je n’ai pas d’image.
Dans la console, j’ai des erreurs probablement liés au décodage, mais je n’ai pas trouvé de solutions.
Honnêtement, je n’ai pas trouvé de solutions. Soit le pilote est vraiment incapable de fonctionner en Thunderbolt pour des questions de latence ou de bande passante (possible), soit Apple a mis une protection pour empêcher de mettre la carte dans un autre Mac qu’un Mac Pro. Je n’ai pas de Mac équipés de PCI-Express assez récent pour accepter la carte (ça devrait fonctionner dans un hackintosh ou un Mac Pro de 2010, je suppose) mais en Thunderbolt dans deux Mac portables différents, je n’ai pas réussi à avoir une image. Après, peut-être qu’une personne plus calée passera ici et me proposera une solution miracle, ça pourrait être amusant.
Une carte totalement hors de prix
Si vous me connaissez, vous attendez peut-être un truc : un démontage. Parce qu’une carte avec un FPGA, peu documentée et hors de prix, ça pose des questions. La carte est compliquée à démonter, il y a des tas de vis (en T5) de différentes tailles, et le PCB est coincé entre le dissipateur et la coque elle-même. Mais avec un peu de persévérence (et après avoir attendu la fin de mes essais), je l’ai démonté. Le FPGA est réellement énorme, et après avoir nettoyé rapidement la pâte thermique, j’ai compris pourquoi : c’est un Xilinx Kintex UltraScale+ KCKU15P. Ça ne devrait rien vous dire (et à moi non plus), mais c’est un modèle haut de gamme avec 1,2 million de portes logiques. Le genre de trucs qui se négocie encore en 2025 pour 6 000 à 7 000 $ pièce (bon, je n’ai pas trouvé exactement la même référence). Et qu’Apple mettait dans une carte à 2 300 €. Dans un sens, la carte Afetrburner était donc le produit Apple de sa génération : le FPGA devait facilement valoir plus de trois fois le prix de la carte…
On en revient au passage sur les FPGA : pour un marché de niches comme celui d’une carte d’accélération pour un Mac Pro, développer une puce dédiée (surtout à peine un an avant la sortie des Mac Apple Silicon) n’avait aucun sens, même pour Apple. Mais un FPGA coûte tellement cher que vendre la carte à son vrai prix était aussi probablement impossible. En l’état, comme c’était une démonstration technologique et qu’ils en probablement vendu 500 dans le monde (aucune idée, je donne juste une valeur faible), la vendre à pertes ne devait pas réellement être un problème, surtout quand elle était associée aux marges d’un Mac Pro. Et ce n’est quelque chose de totalement inhabituel : nVidia a par exemple longtemps vendu des écrans G-Sync avec un FPGA comme contrôleur, qui valait plus qu’un écran complet.
Cela pourrait être intéressant de tester sur un Hackintosh equipé TB et avec un SMBIOS de MacPro7,1 (Mac Pro 2019).
Il est aussi probable que Xilinx ne fasse pas payer à Apple le prix public :-)
@Le Flagada : probablement pas. Mais je doute que Xilinx fasse payer 1/5 du prix public pour autant (la carte valait 2 300 €, mais avec la marge monstrueuse d’Apple…)