Skip to content
Fruit sur Mac contre Fruit sur PC

Laboratoire · expérience

Un même Fruit, deux machines

Fruit 2.1, compilé à partir du même code source pour Windows et pour Mac, affronte les mêmes adversaires dans les mêmes conditions — une fois sur un PC, une fois sur un Mac à puce Apple —, puis se mesure à lui-même, Mac contre PC. Ce que la différence de score mesure, ce n'est plus le moteur : c'est la machine. Après près de mille parties, le PC ressort devant, de 17 à 39 points selon la mesure. Mais l'écart n'apparaît que lorsque plusieurs parties tournent en même temps.

L'idée

On compare d'ordinaire des moteurs entre eux, sur une machine donnée. Ici on fait l'inverse : on fige le moteur et on change la machine. Si un même programme joue plus fort sur l'une que sur l'autre, l'écart en Elo donne une mesure directe de ce que vaut, aux échecs, la différence entre deux processeurs.

Encore faut-il que le moteur soit vraiment le même des deux côtés. C'est ce qui fait l'intérêt de Fruit 2.1.

Fruit 2.1, le même code pour tous

Fruit est l'œuvre de Fabien Letouzey. Sa version 2.1, publiée en 2005 sous licence libre, a marqué l'histoire des échecs sur ordinateur : un programme gratuit, écrit par un seul homme, qui tenait tête aux grands logiciels commerciaux, et dont le code a inspiré une longue lignée de moteurs. Fruit a terminé vice-champion du monde des programmes à Reykjavík en 2005, en tournant sur un seul processeur face à des adversaires qui en utilisaient plusieurs.

Parce que ce code source est public, il peut être recompilé aujourd'hui pour n'importe quelle plateforme. C'est ce qu'a fait Darius, auteur du site chessengeria.eu : il a compilé Fruit 2.1 avec des outils actuels pour Windows, pour Mac — puces Apple et Intel —, pour Linux et pour Android. Les versions utilisées ici sont les siennes, pour Windows et pour Mac.

Pourquoi c'est important Deux compilations du même source, par la même personne, avec la même démarche : ce qui reste de différence entre elles tient au processeur et au compilateur de chaque plateforme, pas à une version ou à un réglage du moteur. C'est la condition pour que la comparaison ait un sens.

Les deux machines

PCMac
Machineposte fixeMacBook Pro
ProcesseurAMD Ryzen 9 7950X3DApple M1 Max
Architecturex86-64ARM64 (Apple Silicon)
BinaireFruit 2.1.exeFruit-2.1_Mac_Apple_Silicon

Fruit 2.1 ne sait utiliser qu'un seul processeur. La comparaison porte donc sur un cœur contre un cœur — ce qui la rend d'autant plus nette : ni le nombre de cœurs ni l'efficacité d'un parallélisme ne viennent s'y mêler.

Faire jouer un moteur Mac contre des moteurs PC

Il fallait résoudre un problème pratique. Les adversaires tournent sur le PC, et une partie d'entre eux ne peuvent tourner que là. Le tournoi est donc organisé sur le PC, par cutechess-cli. Mais cutechess ne sait parler qu'à des programmes installés sur la même machine que lui.

La solution tient en deux petits programmes qui se parlent par le réseau domestique. Sur le Mac, un serveur attend les connexions, lance Fruit à la demande et fait circuler les messages. Sur le PC, un relais se fait passer pour le moteur auprès de cutechess, et transmet tout au serveur. Pour cutechess, rien ne distingue Fruit du Mac d'un moteur installé localement.

Et le réseau ne fausse-t-il pas le temps ? Un aller-retour sur un réseau domestique prend de l'ordre d'une milliseconde. À quinze secondes par coup, c'est un dix-millième du temps de réflexion. Cutechess mesure d'ailleurs la pendule côté PC, réseau compris, et laisse quatre secondes de tolérance avant de déclarer une perte au temps.

Les deux programmes

Ils sont écrits en Python et n'utilisent que la bibliothèque standard : rien à installer d'autre. Le serveur n'exécute que les moteurs inscrits dans sa propre table — aucune commande reçue du réseau n'est lancée telle quelle.

uci_serveur.py — côté Mac

Écoute sur le réseau et lance le moteur à chaque connexion. Affiche en direct, pour chaque coup joué, la profondeur atteinte, l'évaluation et la vitesse du moteur.

script Python 3 · à placer sur la machine qui héberge le moteur

uci_relais.py — côté PC

Lancé par cutechess comme s'il était le moteur. Se connecte au serveur et fait passer le dialogue dans les deux sens.

script Python 3 · à placer à côté du batch cutechess

La mise en place

  1. Sur le Mac, placer uci_serveur.py et renseigner, en tête du fichier, le nom du binaire de Fruit et son dossier.
  2. Rendre le binaire exécutable et lever la quarantaine que macOS pose sur les fichiers téléchargés :
    chmod +x Fruit-2.1_Mac_Apple_Silicon
    xattr -d com.apple.quarantine Fruit-2.1_Mac_Apple_Silicon
  3. Lancer le serveur, et laisser la fenêtre ouverte :
    python3 uci_serveur.py
  4. Noter l'adresse du Mac sur le réseau :
    ipconfig getifaddr en0
  5. Sur le PC, déclarer le moteur dans cutechess en appelant le relais, avec l'adresse du Mac :
    -engine name="Fruit 2.1 Mac" cmd=py arg=-3 arg=uci_relais.py arg=192.168.x.x arg=5555 arg=fruit21 proto=uci
Trois pièges rencontrés en route Un moteur Unix reçoit mal ce que Windows lui envoie, et il a fallu les surmonter un par un. Les fins de ligne d'abord : Windows ajoute un retour chariot que Fruit ne sait pas lire, si bien qu'il ignorait la commande uci. Les espaces ensuite : l'invite de commandes de Windows en glisse parfois en fin de ligne, que Fruit ne reconnaît pas davantage. L'ordre enfin : quand deux commandes arrivent ensemble, le relais doit attendre la réponse du Mac avant de se fermer. Les versions proposées ici corrigent les trois.

Deuxième partie · la mesure

Le protocole

Fruit 2.1 a joué trois séries, toutes dans les mêmes conditions de jeu. Seul change l'endroit où tourne Fruit, et le nombre de parties menées en même temps.

  • Cadence : 60 coups en 15 minutes, reconduite à chaque période ;
  • table de hachage de 512 Mo pour tous les moteurs ;
  • livre d'ouvertures Perfect 2023, imposé sur huit coups environ, livres internes des moteurs désactivés ; chaque ouverture est jouée dans les deux couleurs ;
  • tournoi organisé sur le PC par cutechess-cli ; Fruit du Mac y participe à travers le relais réseau.
SérieDatesPartiesSimultanéesDurée moy.
1. Gauntlets, une partie à la fois21 – 24 septembreMac 100 · PC 1001 + 142 · 43 min
2. Gauntlets en parallèle25 – 26 septembreMac 177 · PC 2004 · 1242 · 44 min
3. Affrontement direct Mac – PC26 – 28 septembre419838 min

Dans la première série, les deux gauntlets ont tourné en même temps, une partie à la fois chacun. Dans la deuxième, le gauntlet du Mac a mené quatre parties de front et celui du PC douze, pour aller plus vite : le Ryzen a seize cœurs, le M1 Max en a dix. L'affrontement direct a tourné avec huit parties simultanées : huit Fruit sur le Mac, huit sur le PC.

Les adversaires

Cinq moteurs d'un seul processeur, tous calibrés dans le classement du laboratoire, et choisis pour encadrer la force attendue de Fruit 2.1. Les cotes indiquées sont celles du classement actuel, après intégration de toutes les parties ; moyenne du champ : 2783.

AdversaireCoteÀ savoir
Shredder 10 UCI2840La référence la plus éprouvée du classement.
Fritz 9 UCI py2820Moteur ChessBase, joué à travers le pont eng2uci.
ProDeo 2.02787Au niveau attendu de Fruit 2.1.
Chess Tiger 20072743
The King 3.502726Le moteur de Chessmaster.

Où attend-on Fruit 2.1 ?

La liste CCRL place Fruit 2.1 à 2695, soit 90 points sous Fruit 2.3.1. Rapporté à l'échelle du laboratoire, où Fruit 2.3.1 est coté 2880, cela situait Fruit 2.1 vers 2790 — au niveau de ProDeo, au centre du champ. La mesure l'a placé nettement plus bas (voir les résultats).

Darius l'a lui-même mesuré sur un MacBook Pro M1, à cadence très rapide, et obtient 2723 dans sa propre liste de moteurs pour Mac. Les deux échelles ne sont pas directement comparables, mais les deux mesures placent Fruit 2.1 dans la même région.

Les résultats

En tout, 996 parties : 277 pour Fruit du Mac contre les cinq adversaires, 300 pour Fruit du PC, et 419 de Fruit contre lui-même. Trois mesures en sortent : la cote Ordo globale, la performance contre les mêmes adversaires, et le score de l'affrontement direct.

Le classement du laboratoire

Toutes les parties sont intégrées au classement du laboratoire, calculé par Ordo :

MoteurProcesseurRangCote±Parties
Fruit 2.1 PCAMD Ryzen 9 7950X3D8327238710
Fruit 2.1 MacApple M1 Max9426908686
Huit défaites qui n'en sont pas L'affrontement direct a été arrêté le 28 septembre à 6 h 58 alors que huit parties étaient en cours. Cutechess les a enregistrées comme des déconnexions de Fruit du Mac, donc comme huit défaites du Mac, toutes terminées à la même seconde ; une neuvième partie est restée sans résultat. Ces huit parties figurent dans le classement ci-dessus et y pénalisent le Mac. Elles sont écartées de toutes les mesures qui suivent.

Contre les mêmes adversaires

Séries 1 et 2 réunies. Performances calculées sur la cote actuelle de chaque adversaire, par la formule perf = cote adverse + 400 · log10(p / (1 − p)).

AdversaireCoteFruit 2.1 MacFruit 2.1 PC
+ = −ScorePerf.+ = −ScorePerf.
Shredder 10 UCI28404 28 2418 / 56271011 19 3020,5 / 602726
Fritz 9 UCI py282012 19 2521,5 / 56273814 19 2723,5 / 602744
ProDeo 2.027879 21 2619,5 / 56267816 17 2724,5 / 602723
Chess Tiger 2007274310 23 2221,5 / 55266616 23 2127,5 / 602714
The King 3.50272616 19 1925,5 / 54270717 18 2526 / 602679
Total278351 110 116106 / 277270174 96 130122 / 3002718

Sur l'ensemble, le PC fait 17 points de mieux, et devance le Mac contre quatre adversaires sur cinq. Mais cet écart global cache deux séries qui ne disent pas la même chose :

SérieParties simultanéesPerf. MacPerf. PCÉcart PC − Mac
1. Une partie à la fois1 · 12720 (41 / 100)2709 (39,5 / 100)−11
2. En parallèle4 · 122690 (65 / 177)2722 (82,5 / 200)+32

Sur cent à deux cents parties, l'incertitude d'une performance est de ±30 à ±40 points : aucune de ces deux séries ne suffit à elle seule. C'est l'affrontement direct qui tranche.

L'affrontement direct

Fruit du Mac contre Fruit du PC, sur 169 ouvertures du livre, toutes jouées avec les deux couleurs sauf une. Chaque partie compare les deux machines dans la même position, contre le même adversaire : c'est la mesure la plus directe. 410 parties sont allées à leur terme.

PartiesFruit 2.1 PC (+ = −)Score PCÉcart EloIC 95 %
Parties jouées jusqu'au bout410117 222 7155,6 %+39+17 à +62
Avec les 8 parties interrompues418125 222 7156,5 %+45+23 à +68

Quarante-six parties gagnées de plus que perdues : la probabilité que le PC soit réellement le plus fort dans ces conditions dépasse 99,9 %.

Le verdict Le PC est plus fort, de 30 à 40 points, quand les deux machines sont chargées. L'affrontement direct donne +39 (+17 à +62), la deuxième série +32 ; le classement Ordo, qui compte encore les huit parties interrompues, +33. Dans la première série, une partie à la fois, les deux machines faisaient jeu égal (le Mac devant de 11 points, dans la marge d'erreur). Le premier bilan, qui concluait à l'égalité, n'était donc pas faux : il ne mesurait que la situation d'une seule partie par machine.

Les couleurs

Avec les BlancsAvec les Noirs
Fruit 2.1 Mac (gauntlets)+24 =53 −62 · 50,5 / 139+27 =57 −54 · 55,5 / 138
Fruit 2.1 PC (gauntlets)+40 =45 −65 · 62,5 / 150+34 =51 −65 · 59,5 / 150
Fruit 2.1 PC contre le Mac+69 =106 −30 · 122 / 205+48 =116 −41 · 106 / 205

Dans l'affrontement direct, le PC marque plus de la moitié des points avec les Blancs (59,5 %) comme avec les Noirs (51,7 %) : son avantage ne tient pas à la couleur.

La fiabilité de la chaîne

Fruit du Mac a joué 696 parties à travers le réseau. Une seule vraie déconnexion, le 26 septembre dans le gauntlet, et les huit parties coupées par l'arrêt de l'affrontement direct. Aucune perte au temps, aucun coup illégal. Les autres parties se sont terminées selon les règles ou par arbitrage :

Fin de partieMac (gauntlets)PC (gauntlets)Mac contre PC
Abandon (3 coups à plus de 10 pions)164202186
Mat222
Nulle par triple répétition6443177
Nulle par la règle des cinquante coups263016
Nulle par matériel insuffisant151628
Pat571
Déconnexion / arrêt du tournoi1–8
Parties décisives / nulles167 / 110204 / 96196 / 222

Le Mac fait plus de nulles que le PC contre les mêmes adversaires, dont 21 répétitions de plus. Dans les deux gauntlets de la deuxième série, aucune répétition n'a eu lieu dans une position que Fruit jugeait nettement gagnante ou perdante : sur ses cinq dernières évaluations avant la nulle, aucune ne dépasse ±0,66. Ce sont des nulles à égalité, pas des points bradés. L'affrontement direct, lui, fait plus de moitié de nulles, dont 177 répétitions : deux Fruit identiques tombent souvent d'accord.

Profondeur et temps de réflexion

Cutechess inscrit dans le PGN, pour chaque coup, la profondeur atteinte et le temps consommé. C'est la mesure la plus directe de la vitesse des deux machines : à temps égal, un cœur plus rapide va plus profond. Dans l'affrontement direct, les deux Fruit jouent les mêmes parties :

Coups de Fruit (affrontement direct)Prof. MacProf. PCTemps MacTemps PC
1 à 20 (hors livre)14,0414,3525,5 s25,4 s
21 à 4015,0815,4415,9 s15,9 s
41 à 6017,8818,1414,7 s14,5 s
61 et au-delà23,0323,4519,4 s19,1 s
Ensemble17,6918,0318,3 s18,2 s

Même temps de réflexion, mais un tiers de demi-coup de plus pour le PC, à toutes les phases de la partie. Partie par partie, sur les quarante premiers coups, le PC va plus profond dans 346 parties sur 417, de 0,34 demi-coup en moyenne (±0,05). L'écart est faible mais parfaitement régulier. Comparé d'une série à l'autre, il suit la charge des machines :

Écart de profondeur PC − MacCoups 1 à 2021 à 4041 à 60
1. Une partie à la fois−0,04+0,05+0,57
2. En parallèle (Mac 4, PC 12)+0,19+0,17+0,07
3. Affrontement direct (8 et 8)+0,31+0,36+0,26

Au-delà du 40e coup, les gauntlets ne jouent pas les mêmes finales, et la profondeur y dépend surtout du matériel restant : seule la colonne de l'affrontement direct, où les positions sont communes, est comparable à ce stade. Le nombre de positions calculées par seconde n'est pas enregistré dans le PGN ; si l'on admet pour Fruit un facteur de branchement effectif de 2 à 3, un tiers de demi-coup correspond à 25 à 45 % de positions en plus pour le PC.

Pourquoi la charge compte

Un processeur ne tourne pas à la même fréquence selon le nombre de cœurs occupés. Seul, un cœur du M1 Max comme un cœur du Ryzen monte à sa fréquence maximale ; quand plusieurs parties tournent ensemble, les deux ralentissent, et pas forcément dans la même proportion. Nos mesures s'accordent avec un Mac qui perd davantage que le PC sous charge : égalité à une partie par machine, avantage au PC à quatre, huit ou douze parties. Nous n'avons pas mesuré les fréquences : c'est une explication plausible, pas une constatation. Un affrontement direct joué une partie à la fois permettrait de la vérifier.

Les ouvertures

Le livre Perfect 2023 tire ses ouvertures au hasard. Dans les gauntlets, chaque ouverture a été jouée dans les deux couleurs, mais les deux machines n'ont pas tiré les mêmes : dans la deuxième série, 82 ouvertures côté Mac, 90 côté PC, 15 seulement en commun. Une partie des écarts adversaire par adversaire tient donc aux ouvertures. L'affrontement direct n'a pas ce défaut : les deux Fruit jouent chaque ouverture, une fois de chaque côté.

Fruit 2.1 dans l'échelle du laboratoire

Coté 2723 sur le PC et 2690 sur le Mac, Fruit 2.1 se place 70 à 100 points sous la projection tirée de la liste CCRL (vers 2790), et 157 à 190 points sous Fruit 2.3.1 (2880), là où la CCRL met 90 points entre les deux versions. Fruit du PC se range juste sous The King 3.50 (2726), le plus faible des cinq adversaires : le champ choisi pour encadrer Fruit 2.1 s'est trouvé presque entièrement au-dessus de lui, pour une moyenne de 2783. La mesure de Darius, 2723 dans sa liste de moteurs pour Mac, est numériquement proche, mais les deux échelles n'ont pas la même origine.

Ce que l'on a appris Un même Fruit 2.1 ne joue pas tout à fait à la même force sur un cœur d'Apple M1 Max et sur un cœur de Ryzen 9 7950X3D. Une partie à la fois, l'écart est indiscernable. Avec plusieurs parties simultanées, le PC va plus profond d'un tiers de demi-coup à temps égal et gagne 30 à 40 points : +39 en affrontement direct sur 410 parties. Pour comparer des machines, il faut donc préciser la charge sous laquelle on les compare. Et un moteur installé sur un Mac peut être calibré dans un tournoi organisé sur un PC, à travers le réseau, sur des centaines de parties, avec une seule vraie déconnexion.

chess.lumn.eu · laboratoire de calibration · mise à jour du 28 septembre 2026