Article de reference

Métal (API)

Metal est une API de shader graphique et de calcul 3D à faible coût et à accélération matérielle créée par Apple et qui fait ses débuts dans iOS 8. Metal combine des fonctions s...

Metal est une API de shader graphique et de calcul 3D à faible coût et à accélération matérielle créée par Apple et qui fait ses débuts dans iOS 8. Metal combine des fonctions similaires à OpenGL et OpenCL dans une seule API. Elle est destinée à améliorer les performances en offrant un accès de bas niveau au matériel GPU pour les applications sur iOS , iPadOS , macOS et tvOS . Elle peut être comparée aux API de bas niveau sur d'autres plates-formes telles que Vulkan et DirectX 12 .

Metal est une API orientée objet qui peut être invoquée à l'aide des langages de programmation Swift , Objective-C ou C++17 . L'exécution complète du GPU est contrôlée via le langage Metal Shading. Selon les documents promotionnels d'Apple : « MSL [Metal Shading Language] est un langage unique et unifié qui permet une intégration plus étroite entre les programmes graphiques et de calcul. Étant donné que MSL est basé sur C++, vous le trouverez familier et facile à utiliser. »

Caractéristiques

Metal vise à fournir un accès à faible surcharge au GPU. Les commandes sont codées au préalable puis soumises au GPU pour une exécution asynchrone. L'application contrôle le moment où attendre la fin de l'exécution, ce qui permet aux développeurs d'applications d'augmenter le débit en codant d'autres commandes pendant que les commandes sont exécutées sur le GPU ou d'économiser de l'énergie en attendant explicitement la fin de l'exécution du GPU. De plus, le codage des commandes est indépendant du processeur, ce qui permet aux applications de coder les commandes pour chaque thread du processeur indépendamment. Enfin, les états de rendu sont précalculés au préalable, ce qui permet au pilote du GPU de savoir à l'avance comment configurer et optimiser le pipeline de rendu avant l'exécution de la commande.

Metal améliore les capacités de programmation GPGPU en utilisant des shaders de calcul . Metal utilise un langage de shading spécifique basé sur C++14 , implémenté à l'aide de Clang et LLVM .

Metal permet aux développeurs d'applications de créer des ressources Metal telles que des tampons et des textures. Les ressources peuvent être allouées sur le CPU, le GPU ou les deux et offrent des fonctionnalités pour mettre à jour et synchroniser les ressources allouées. Metal peut également appliquer l'état d'une ressource pendant la durée de vie d'un encodeur de commande.

Sur macOS, Metal peut offrir aux développeurs d'applications la possibilité de spécifier le GPU à exécuter. Les développeurs d'applications peuvent choisir entre le GPU intégré à faible consommation du processeur, le GPU discret (sur certains MacBook et Mac) ou un GPU externe connecté via Thunderbolt. Les développeurs d'applications ont également la préférence sur la manière dont les commandes GPU sont exécutées sur quels GPU et fournissent des suggestions sur le GPU le plus efficace pour exécuter une certaine commande (les commandes de rendu d'une scène peuvent être exécutées par le GPU discret tandis que le post-traitement et l'affichage peuvent être gérés par le GPU intégré).

Shaders de performance en métal

Metal Performance Shaders est une bibliothèque hautement optimisée de fonctions graphiques qui peuvent aider les développeurs d'applications à atteindre d'excellentes performances tout en réduisant le travail de maintenance des fonctions spécifiques à la famille GPU. Elle fournit des fonctions telles que :

  • Algorithmes de filtrage d'images
  • Traitement des réseaux neuronaux
  • Opérations mathématiques avancées
  • Traçage de rayons

Histoire

Metal est disponible depuis le 2 juin 2014 sur les appareils iOS équipés d' Apple A7 ou version ultérieure, et depuis le 8 juin 2015 sur les Mac (modèles 2012 ou versions ultérieures) exécutant OS X El Capitan .

Le 5 juin 2017, lors de la WWDC , Apple a annoncé la deuxième version de Metal, qui sera prise en charge par macOS High Sierra , iOS 11 et tvOS 11. Metal 2 n'est pas une API distincte de Metal et est prise en charge par le même matériel. Metal 2 permet un profilage et un débogage plus efficaces dans Xcode , un apprentissage automatique accéléré , une charge de travail CPU plus faible , la prise en charge de la réalité virtuelle sur macOS et les spécificités du GPU Apple A11 , notamment.

Lors de la WWDC 2020 , Apple a annoncé la migration du Mac vers la puce Apple Silicon . Les Mac utilisant la puce Apple Silicon seront dotés de GPU Apple avec un ensemble de fonctionnalités combinant ce qui était auparavant disponible sur macOS et iOS, et pourront profiter de fonctionnalités adaptées à l' architecture de rendu différé basé sur des tuiles (TBDR) des GPU Apple.

Lors de la WWDC 2022 , Apple a annoncé la troisième version de Metal (Metal 3), qui fera ses débuts avec la sortie de macOS Ventura , iOS 16 et iPadOS 16. Metal 3 introduit le framework de mise à l'échelle MetalFX, qui restitue des scènes complexes en moins de temps par image avec une mise à l'échelle et un anticrénelage hautes performances, ainsi qu'une prise en charge des shaders de maillage. La possibilité d'utiliser C/C++ pour l'API Metal a également été annoncée.

GPU pris en charge

La première version de Metal prend en charge le matériel et les logiciels suivants :

La deuxième version de Metal prend en charge le matériel et les logiciels suivants :

La troisième version de Metal prend en charge le matériel et les logiciels suivants :

Adoption

Selon Apple, plus de 148 000 applications utilisent Metal directement et 1,7 million l'utilisent via des frameworks de haut niveau , en juin 2017. Les jeux macOS utilisant Metal pour le rendu sont répertoriés ci-dessous.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index