Retour MacBook Pro M1Max

klogklog Membre
décembre 2021 modifié dans Actualités #1

Alors pour ceux que ça intéresse, j'ai reçu hier mon MBP 16" M1Max, et j'ai compilé l'application sur laquelle je bosse :

  • Ancien MBP 15" 2016 (le haut du panier à l'époque) :
    CPU : Core i7 quadri cores 2.6 GHz / 16 GB RAM
    GPU : Radeon Pro 460 4GB
    Compilation de mon projet sous XCode : 9 mins 55 s (ventilateur à fond)

  • Nouveau MBP 16" M1Max :
    CPU : M1Max 10 cores / 32 GB RAM
    GPU : M1Max 32 cores
    Compilation de mon projet sous XCode : 1 mins 36 s (pas même un murmure)

Ça va clairement me changer la vie...
Cette application est un logiciel de rendu sur GPU, qui serait parfait pour tester le GPU aussi. Sauf qu'elle plante lamentablement pendant le rendu sur GPU de la nouvelle bécane, y compris sous Rosetta. C'est pas trop étonnant dans la mesure ou c'est un nouveau profile de GPU, assez différent de ceux d'AMD ou d'Intel, et qu'il y a vraisemblablement des tas de trucs à paramétrer/tester... J'ai du pain sur la planche :'(

Mots clés:

Réponses

  • Ha oui, 9 mins 55 s, c'est une grosse application...
    Le nouveau MBP est le bienvenu !

    Pourquoi as-tu besoin de changer des paramétrages en fonction du GPU ?

  • klogklog Membre
    décembre 2021 modifié #3

    @Eric P. a dit :
    Pourquoi as-tu besoin de changer des paramétrages en fonction du GPU ?

    Presque comme à la "grande" époque de l'assembleur, les caractéristiques internes du GPU (nombre de threads par threadgroup, mémoire cache à différent niveau, mécanisme de synchro, etc.) ont une incidence sur le comportement d'algorithmes de bas niveau (Sort, Scan...). Algorithmes qui sont utilisés partout dans ce genre d'application, et dont Apple ne fournit malheureusement pas d'implantation standard (j'en avais fait une requête au démarrage de Metal. On m'avait dit que ce genre d'algos étaient envisagés et on m'a demandé quels seraient ceux qui m'intéresseraient. Toujours sans réponse effective à ce jour). Par exemple, la mémoire disponible au niveau des threadgroups a un impact très important sur ces méthodes élémentaires. J'ai donc des profils en entrée de mon application, qui définissent pour chaque famille de GPU (essentiellement par marque) quelques paramètres élémentaires dont j'ai besoin pour paramétrer ces algorithmes de bas niveau. Comme il n'y a pas encore de profils pour les GPUs Apple, forcément... Et parfois, dans de rares exceptions, un algorithme ne marche carrément pas et demande un ajustement ou une implémentation secondaire. J'ai eu le cas avec les GPUs Nvidia, mais là c'était probablement la qualité des drivers Mac qui étaient en jeu.

    En termes d'optimisation, la mémoire unifiée change énormément de choses : j'utilise largement des managed buffers dont une copie réside à la fois en RAM et en VRAM (car le mode shared n'existe pas sur les GPU AMD), et qui nécessitent des mécanismes de synchronisation. Les GPU M1 changent la donne de ce point de vue et c'est une énorme avancée pour moi... J'ai hâte d'en être à ce niveau de détail :D

    Pour info, il y a un document Apple spécifiant certaines de ces caractéristiques par famille de GPU et qui démontre que Metal est loin pas un long fleuve tranquille (https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf). J'utilise énormément ce document pour connaitre les limites ou niveaux de tolérance d'un GPU. Mais ce n'est malheureusement pas suffisant, parce qu'il y a aussi des différences importantes par marques ou générations, et que les familles telles que définies par Apple ne suffisent pas à répondre finement à mes besoins.

  • Merci pour ces intéressantes explications et bon courage !

  • klogklog Membre
    décembre 2021 modifié #5

    @Eric P. a dit :
    Merci pour ces intéressantes explications et bon courage !

    Merci !

    Pour les nomades, j'ai conduit le même test de compilation 2 fois d'affilé :

    • Ancien MBP 15" 2016 :
      1ère compilation : 9 mins 57 s (ventilateur à fond au bout de 40 s) batterie passe de 100% à 96% (-4%)
      2e compilation : 10 mins 02 s (ventilateur à fond) batterie passe de 96% à 84% (-12% !)

    • Nouveau MBP 16" M1Max :
      1ère compilation : 1 mins 37 s (silence total) batterie reste à 100%
      2e compilation : 1 mins 35 s (silence total) batterie reste à 100%

    Travailler sérieusement pendant plusieurs heures dans un train devient à priori possible !

  • muqaddarmuqaddar Administrateur

    Merci pour ton retour Klog !

    Est-ce que le refreshe des Preview SwiftUi est immédiat ?

  • @muqaddar a dit :
    Est-ce que le refreshe des Preview SwiftUi est immédiat ?

    Je n'utilise pas SwiftUI, mais si tu as un lien vers un projet qui met le truc en évidence et que tu aimerais que je le teste, ce sera avec plaisir.

    Un post-scriptum sur le test sur batterie : la batterie de mon MBP 2016 a été changée en 2019 suite à un gonflement (qui a réussi a déformer le top/clavier et le dos de l'appareil). Elle a donc un peu plus de 2 ans...

  • muqaddarmuqaddar Administrateur

    @klog a dit :

    @muqaddar a dit :
    Est-ce que le refreshe des Preview SwiftUi est immédiat ?

    Je n'utilise pas SwiftUI, mais si tu as un lien vers un projet qui met le truc en évidence et que tu aimerais que je le teste, ce sera avec plaisir.

    Ok, merci.
    Pas encore de projet "assez gros" à t'envoyer... ;)

Connectez-vous ou Inscrivez-vous pour répondre.