Apple publie un guide sur l’optimisation du code pour les CPU Apple Silicon

Nicolas Furno |

Apple a publié un guide destiné aux développeurs qui souhaitent optimiser leur code spécifiquement pour les processeurs que l’on trouve dans les puces Apple Silicon. Ce document PDF de 169 pages n’est pas pensé pour le grand public. D’une part, parce qu’il est réservé aux développeurs avec un compte chez Apple qui signent un accord restreignant son usage à l’optimisation du code et interdisant tout partage. Ensuite, parce qu’il n’est pas écrit pour les néophytes et entre vite dans le vif du sujet, avec des détails sur les instructions, les structures, la hiérarchie des caches et autres éléments qui composent un CPU.

Le programme et le lien de téléchargement sur le site développeur d’Apple. Image MacGeneration.

L’introduction donne le ton, en précisant que le guide part du principe que le lecteur a des connaissances de base du fonctionnement d’un processeur et du développement bas niveau, même si ce ne sont pas des connaissances spécifiques au jeu d’instructions ARM utilisé par Apple. Les conseils s’appliquent aussi bien aux puces M destinées aux Mac, iPad et à l’Apple Vision qu’aux puces A que l’on trouve dans les iPhone et iPad, du M1 au M3 et de l’A14 Bionic à l’A17 Pro, ainsi qu’aux futurs CPU d’Apple.

Même pour les développeurs, ce guide est sans doute bien trop avancé et pointu pour la majorité des besoins. Cela reste néanmoins une plongée assez fascinante dans le fonctionnement des processeurs développés par Apple.

avatar Teodorico | 

Résumé de l’article : une grande majorité des développeurs est débile.
C’est pas faux non plus 😂

avatar marc_os | 

@ Teodorico

Allez, je vais me mettre à votre niveau :
« Celui (vous) qui le dit, celui qui l'est. »

avatar Teodorico | 

@marc_os

Je peux rien dire, je ne connais pas l’auteur de l’article pour confirmer ou infirmer 😇

avatar marc_os | 

@ Teodorico

C'est pas vous qui avez écrit « C’est pas faux non plus » ?
🤔

avatar BeePotato | 

@ Teodorico : « Résumé de l’article : une grande majorité des développeurs est débile. »

Seulement si on accepte de confondre ignorance et débilité. 😉

Bien que les sujets abordés dans ce document soient intéressants, bon nombre de développeurs (la majorité) n’ont heureusement pas besoin de les maîtriser.
Pour ceux qui en ont besoin (ainsi que pour les simples curieux), c’est bien que ce soit disponible.

avatar marc_os | 

Merci pour l'info !

Je viens de télécharger le pdf, et effectivement c'est velu, en ce sens qu'il s'agit d'astuces à utiliser dans du code "bas niveau".
Ça parle assembleur Arm et C.
Donc ce n'est pas pour ceux qui ont peur des pointeurs en C.

Ça devrait intéresser surtout ceux qui développent des compilateurs comme pour Swift, ainsi que ceux qui continuent en Obj-C et C.

Rq: Le mot "Swift" n'est même pas présent dans le document.

avatar Teodorico | 

@marc_os

**

avatar kiddsoso | 

@Teodorico

&

avatar Teodorico | 

@kiddsoso

Segmentation Fault & dbx

avatar BeePotato | 

@ marc_os :

« A discussion of intrinsic functions for utilizing specific instructions in high-level languages »

Voilà, Swift est mentionné. 🙂

avatar marc_os | 

@ BeePotato

> Voilà, Swift est mentionné

Vraiment ?

> « A discussion of intrinsic functions for utilizing specific instructions in high-level languages »

Vous sortez ça d'où ?
Pas du pdf en tous cas.
Page 13 je trouve:
Use Intrinsic Functions to Manually Vectorize the Core Algorithm in High-Level Languages: Section 3.4, “Compiler Intrinsics for Instructions and Data Types”

Est-ce que Swift permet d'utiliser ça ?
    #include <arm_neon.h>
    // float64x2_t vtrn1q_f64(float64x2_t __p0, float64x2_t __p1);
Vu que c'est du C, en théorie oui.

avatar BeePotato | 

@ marc_os : « Vous sortez ça d'où ?
Pas du pdf en tous cas. »

Juste du descriptif d’Apple qui est montré dans l’article via une capture d’écran. Oui, j’ai cette faiblesse de lire l’article avant de commenter. 🙂

« Est-ce que Swift permet d'utiliser ça ?
#include
// float64x2_t vtrn1q_f64(float64x2_t __p0, float64x2_t __p1);
Vu que c'est du C, en théorie oui. »

En théorie, oui, ça devrait. J’en resterai à la théorie, car n’ayant encore jamais eu besoin de Neon, je n’ai pas eu l’occasion de vérifier cette théorie.

avatar jipeca | 

Quand on voit le classement des langages de prog les plus utilisés dans le monde, on se demande même pourquoi ils ont absolument voulu imposer Swift qui après un intérêt de curiosité n'arrête pas de perdre du terrain. Mais Apple a toujours raison.

avatar Baptiste_nv18 | 

@jipeca

L’idée n’a absolument jamais été de prendre des « part de marché » mais de maîtriser le language utilisé pour développer des apps sur leurs plateformes; et le faire évoluer comme ils le souhaitent pour suivre les avancer matériels et immatériel de leurs produits.

CONNEXION UTILISATEUR