Un eGPU sur Mac avec le Razer Core X

Maintenant que Canard PC Hardware 37 est sorti (il est en kiosque, je dis ça, je dis rien), je vais en parler ici. J’ai pu tester le Razer Core X, un boîtier eGPU qui est officiellement compatible macOS.

Je teste des boîtiers eGPU depuis des années et le Core X a l’avantage d’aller à l’essentiel pour un prix correct (300 €). Ce boîtier est assez gros – on pourrait monter un PC complet dedans – mais a quelques avantages. Premièrement, l’espace interne est large : on peut mettre n’importe quel GPU, même long, même haut. Mon Akitio Thunder 2, par exemple, est trop court pour la majorité des cartes. Ensuite, il intègre une alimentation de 650 W, suffisante pour n’importe quel GPU, qui peut fournir 100 W à un ordinateur pour l’alimenter. Enfin, il est discret à l’usage : l’alimentation s’entend peu, tout comme le gros ventilateur interne. Et avec les GPU modernes, les ventilateurs s’arrêtent en cas de charge faible. Sans écran connecté, pour des calculs par exemple, le GPU ne tourne qu’en charge par exemple (donc pas nécessairement souvent).

Une jolie photo de presse

Il n’est pas sans défaut, le premier est – pour moi – le fait qu’il n’a qu’un seul connecteur Thunderbolt 3. Impossible de chaîner, donc. Ensuite, le câble est plutôt court (50 cm) mais c’est une limite technique en Thunderbolt 3. Razer vend un câble actif de 2 mètres pour 60 $ (je n’ai pas le prix ici) et Apple aussi (80 €) mais ils limitent la charge à 60 W. Globalement, en Thunderbolt 3, il faut des câbles courts pour ne pas exploser les prix et transférer plus de 60 W. Enfin, il n’a ni port USB, ni rien d’autre, mais ça permet de diminuer le prix. Razer vend le Core v2 pour 500 €, qui est plus compact (mais moins puissant) et qui possède de l’USB 3 (4 prises), des LEDs et de l’Ethernet, mais pas de second Thunderbolt 3. D’ailleurs, sur le Core v2, les périphériques USB et Ethernet sont sur un second contrôleur Thunderbolt, chaîné en interne, pour ne pas réduire la bande passante.

Le support natif de macOS

J’ai testé dans des conditions idéales : une carte graphique AMD supportée nativement (Radeon RX 580) et un Mac supporté nativement (MacBook Pro 2017). Avec ça, sous High Sierra à jour, il suffit de brancher le eGPU à chaud et ça fonctionne. Apple a implémenté le branchement à chaud, et le débranchement (presque) à chaud : il faut éjecter le GPU manuellement. cette opération va fermer les applications qui l’utilisent, éventuellement en vous prévenant, et les relancer directement. Actuellement (début juin 2018), le support eGPU fonctionne sans écran externe pour l’OpenCL (les calculs) mais nécessite dans la majorité des cas un écran externe pour la 3D. Plus exactement, Apple explique que c’est techniquement possible d’effectuer un rendu sur l’eGPU et d’afficher sur un écran qui ne lui est pas relié (un écran Thunderbolt, l’écran d’un iMac ou d’un MacBook Pro, etc.) mais aucune application ne le propose. Le seul exemple que j’ai, c’est un code de démo d’Apple qui permet de forcer le GPU de son choix.

Ejecter la carte


Le boîtier, 40 Gb/s


Quand l’éjection se passe mal


L’application Apple anime un truc en 3D en utilisant un eGPU

En calcul, passer de la Radeon 560 Pro du Mac à la Radeon RX 580 externe se voit : elle est pratiquement quatre fois plus rapide. La carte externe a plus de deux fois plus d’unités (36 vs. 16) et une fréquence très nettement plus élevée (1 411 vs. 907 MHz), sans même prendre en compte la gestion de la consommation. Dans les jeux, forcément, la RX 580 sur un écran externe est vraiment plus rapide, c’est flagrant avec F1 2016. Bon, je n’ai pas des masses de jeux sur Mac, mais ça reste nettement meilleur.

La Radeon interne


La RX580 externe

Question charge, le boîtier fournit 100 W au Mac, contre 85 W avec le chargeur de base.

100 W

Bidouille (ou pas)

Pour aller plus loin que le support natif, il y a quelques bidouilles. Attention, elles demandent de désactiver le SIP et doivent être appliquées à chaque MAJ de l’OS.

La première permet la prise en charge des cartes AMD plus anciennes : Radeon R9 en général, RX 460/560, etc. C’est une extension à ajouter, rien de compliqué. La seconde, c’est si vous voulez utiliser un eGPU avec une carte nVidia. Il faut patcher l’OS pour qu’il accepte, et installer les pilotes nVidia. C’est aussi le même patch qui active le support sur les Mac en Thunderbolt 1 ou 2.

Plusieurs eGPU

Dernier point, on peut parfaitement mettre plusieurs eGPU. Pas avec le Core X directement, qui n’a pas de prise pour chaîner, mais avec un second boîtier sur une des autres prises du Mac. Attention aux performances : sur les MacBook Pro 13 pouces avec TouchBar, les ports de droites sont plus lents (20 Gb/s au lieu de 40 Gb/s). Ici, j’ai testé avec une Radeon RX 570 dans un boîtier Akitio Thunderbolt 2 en bout de chaîne (sixième position, avec des périphériques Thunderbolt 1) et la bande passante devient franchement faible.

Deux eGPU


Deux eGPU et pleins de trucs Thunderbolt


Deux eGPU


La bande passante très faible (~700 Mo/s)

Un bon rapport qualité/prix

Le Core X a l’avantage de ne pas être trop cher (300 €) et les prix ne descendrons probablement jamais beaucoup plus bas. En comptant le prix du boîtier (de bonne qualité), d’une alimentation interne correcte (ici 650 W), du contrôleur Thunderbolt et du câble, le prix réel des composants doit être entre 150 et 200 €. Avec la TVA et les marges, 300 € me semble correct. Et il ne faut pas oublier qu’en plus de gérer le eGPU, le boîtier fait office de chargeur (100 W).

Les jeux

Entre le moment de l’écriture de l’article et la publication, Feral a proposé son premier jeux optimisé : Rise of the Tomb Raider. Il prend en charge le eGPU officiellement et je suppose que Feral a suivi les indications d’Apple pour éviter les pertes de performances. Par contre, le jeu ne propose le eGPU que sur écran externe. Sur un MacBook Pro 2017 (15 pouces, 2,8 GHz), la carte interne (Radeon Pro 560 4 Go) atteint 19,4 fps de moyenne en 1080p/élevé, une Radeon RX 580 dans le boîtier externe atteint plus du double (54,4). C’est plutôt encourageant, donc.