Metal apple: Metal Sample Code — Apple Developer

Что такое Apple Metal API

API
Metal
OpenGL

Что такое Apple Metal API

Егор Морозов

Еще несколько лет назад Apple представила новое графическое API — Metal. Отличие его от того же Scene Kit было в том, что он явялется не высокоуровневым API, работающим поверх OpenGL ES (мобильной версии OpenGL), а низкоуровневым API для рендеринга и вычислений, который может заменить собой OpenGL. По словам Apple, Metal на порядок быстрее OpenGL ES (правда, на деле в 10 раз быстрее происходят только вызовы отрисовки — draw calls, передача данных на GPU). Этот API доступен для всех устройств, работающих на процессоре A7 и новее, а так же на Mac начиная с 2012 года.

Принципы работы графических API


Для начала — что такое API? Расшифровывается это как Application Programming Interface, программный интерфейс приложения. Говоря простым языком — это готовый код, который позволяет существенно облегчить жизнь программисту при написании программ. По сути это некоторый полуфабрикат — основываясь на этом коде можно гораздо быстрее и проще написать свою программу.

Теперь разберемся с тем, как собственно сам GPU работает с API. Неверно думать, что вызов API напрямую работает с GPU, и тем более неверным является то, что GPU заканчивает обработку вызова при возвращении результата API. К примеру, если бы драйвер выполнял команды рендеринга в тот момент, когда они были созданы, то простаивал бы CPU, ожидая выполнения рендеринга. А после выполнения было бы наоборот — простаивал бы GPU, ожидая пока придут новые команды от драйвера.

По этой причине CPU и GPU работают асинхронно: графический драйвер сначала собирает все вызовы отрисовки для всего кадра, и только потом отправляет их на GPU. Далее, когда приходит команда на отрисовку следующего кадра, этот кадр уже будет обработан GPU. То есть мы получаем задержку в один кадр: пока CPU готовит вызов для текущего кадра, на GPU рендерится прошлый. На деле можно буферизировать и больше одного кадра, и тем самым получать большую частоту кадров: все зависит только от производительности процессора и видеокарты.

Нововведения в API Metal


В чем же плох метод, описанный выше? Он плох в том, что между GPU и API есть посредник — драйвер. И именно он управляет задержками. В API Metal же буферы команд открыты, и приложение может само их заполнять и отправлять их в очередь команд для выполнения на GPU. Таким образом, приложение имеет полный контроль над заданием и может управлять задержками. Более того — теперь можно легко параллелить команды и помещать их в буфер в определенном порядке, так как для программиста становится более очевидным то, какие результаты в каком порядке будут доступны. 


Еще одно важное нововведение уже аппаратное: на процессорах Apple A7 и выше Metal заточен под работу с общей памятью, то есть CPU и GPU могут получать доступ к одним данным без необходимости перебрасывать их по шине PCI. Metal дает прямой доступ для программы к буферам CPU, и программист вполне может «смешивать» вычисления на GPU и CPU, что может существенно ускорить программу.

Реальный выигрыш от API Metal


Как я объяснял выше, каждый вызов отрисовки занимает некоторое время на CPU и GPU. Ренденринг на GPU сделать быстрее нельзя по очевидным причинам (он завязан только на производительность самого GPU), но можно выиграть в другом: во-первых, можно уменьшить время на передачу данных (так как Metal работает с общей памятью), во-вторых — уменьшить время обработки вызова на CPU. Время обработки вызова на CPU уменьшается за счет отсутствия посредника-драйвера и за счет параллельного построения буфера команд.

И тут возникает вопрос — а про какое десятикратное увеличение производительности вела речь Apple? Да вот именно про то, что время вызова на CPU теперь сильно меньше. Но вот GPU тут почти не затрагивается, так что в итоге напрямую улучшить графику за счет API Metal увы — нельзя. Но так как освободился процессор — его можно загрузить физикой: обсчетом физики частиц, взаимодействия множества объектов (все помнят сотню летающих обезьян на презентации iPhone 7?), обсчетом эффектов ткани и воды, и так далее. И так как этим раньше занимался GPU, то мы его освобождаем, и получается что косвенно он теперь может выводить лучшую картинку, что мы в играх (в том же Asphalt 8) и видим (обратите внимание на детализацию брусчатки и эффекты):

Взаимодействие OpenGL и Metal


Как видно из вышенаписанного — реально Metal улучшает жизнь процессору. Поэтому если система не поддерживает Metal, но имеет очень мощный процессор, то особого труда переписать игру под OpenGL нет — и именно это мы и видим в Vainglory под Android — для получения максимальной графики (уровень Apple A9) на OpenGL требуется топовый процессор уровня Snapdragon 820, который по голой производительности (во FLOPS-ах) мощнее A9 в два с копейками раза.

Apple Metal 2


На июньской презентации Apple представила новую версию Metal. Основные улучшения — это поддержка VR, машинного обучения и внешних GPU, что в теории позволит портировать под Mac игры с PC без всякого ухудшения графики (на данный момент порты большинства игр представляют собой по сути запуск Wine, что достаточно сильно снижает производительность и очень сильно отражается на и без того достаточно слабых GPU в Mac). Но как это будет реальности — увидим уже только в будущем.

Купить рекламу

Рекомендации

  • Как сделать свои стикеры для Telegram прямо со смартфона. Пошаговый гайд

  • AliExpress нагло завысил все цены. Не спешите с покупками

  • Как отключить подорожавшие СМС-уведомления в «Сбербанке» и ВТБ

  • В России обвалилась цена на MacBook Air с чипом M1. Забирайте, пока в наличии!

Рекомендации

Как сделать свои стикеры для Telegram прямо со смартфона. Пошаговый гайд

AliExpress нагло завысил все цены. Не спешите с покупками

Как отключить подорожавшие СМС-уведомления в «Сбербанке» и ВТБ

В России обвалилась цена на MacBook Air с чипом M1. Забирайте, пока в наличии!

Купить рекламу

Читайте также

ВКонтакте
VK
VK Музыка

Apple выпустила iPhone 14 специально для России. Что это значит?

Apple
iPhone
iPhone 14

WhatsApp для Android заимствует популярную функцию из iOS. Аватарки профилей могут измениться

Мессенджеры
WhatsApp

Технология Metal – Apple готовит революцию в мире мобильных игр

По оценкам ряда экспертов, API Metal можно назвать самым значимым достижением, из продемонстрированных на WWDC 14. Наиболее многообещающим – гарантировано, так как его появление ознаменует смену эпох и возможность наконец-то отказаться от громоздких графических интерфейсов программирования. Которые, по правде говоря, откровенно тормозят развитие мира игровых приложений для мобильных гаджетов.

Яблык в Telegram и YouTube. Подписывайтесь!

Классическими примерами API (Интерфейс программирования приложений), которые на слуху даже у далеких от IT-индустрии людей, можно назвать AMD Mantle или Microsoft DirectX. В упрощенной форме это набор драйверов и сложных опций, позволяющий программистам без лишней головоломки обращаться к процессору при работе с графикой. Только вот большинство API создавались как универсальные и потому априори слишком громоздки и медлительны. Apple Metal – система нового поколения, Крейг Федериги (Craig Federighi) специально выделил тот факт, что она максимально оптимизирована для работы именно с процессором A7. Да, в Купертино и не думали облагодетельствовать весь мир, а просто сделали инструмент для себя, нечто, что позволит сбросить оковы API OpenGL ES.

Metal, как было заявлено, обеспечивает едва ли не 100% КПД при эксплуатации многоядерной системы чипа A7 и поддерживает наборы заранее скомпилированных шейдеров. А помимо выполнения задач графического направления может эффективно использовать при общих расчетах. Для демонстрации на сцену пригласили учредителя Epic Games Тима Суини (Tim Sweeney), который прокомментировал ролик с карпами в пруду и облетающими лепестками сакуры на переднем плане. Каждый розовый листик кружит по своей траектории, плюс все рыбы в пруду наделены индивидуальными подобиями искусственного интеллекта.

Самое интересное в том, что благодаря Metal весь этот комплекс сложных расчетов осуществляется за счет вычислительной мощности одного-единственного стандартного A7 в iPhone 5S. Ролик Zen Garden, демонстрирующий сочетание физики взаимодействия частиц и расчета псевдоинтеллектуального поведения, построен на движке Unreal Engine 4, к осени его выложат в App Store в виде отдельного бесплатного приложения. Другим примером преимущества Metal стало игровое видео на базе Plants vs. Zombies: Garden Warfare. В разработке от PopCap 3D детализация картинки увеличена до 1,3 млн. полигонов в каждом кадре, плюс наложение различных эффектов. Задача, едва посильная даже для флагмана модельного ряда, но переход на новую технологию ускоряет скорость прорисовки в 10 и более раз.

Теперь дело за непосредственными разработчиками игр, в интересах которых и создавался API Metal – в списке тех, кто уже объявил о своих масштабных планах по использованию новинки, много звучных наименований. Epic Games, PopCap 3D, Crytek (CryEngine), Electronic Arts (Frostbite Engine) и Unity, но так как о поддержке Metal в Unreal Engine 4 тоже уже заявлено, то перечень будет разрастаться, как снежный ком. Реальный потенциал технологии настолько велик, что в Apple даже позволили себе немного бахвальства, пообещав с выходом iOS 8 появление на iPad трехмерных игр уровня стационарных консолей. И они вовсе не далеки от истины.

Стоит отметить, по итогам презентации на WWDC стало очевидно, что яблочная компания активно взялась за развитие своей закрытой эко-среды. Во-первых, впервые в ее истории в программный комплекс Xcode добавлен персональный язык программирования Swift. Во-вторых, обновился пакет SpriteKit – инверсная кинематика, попиксельная физика, источники света, эффекты силовых полей, углубленная работа с текстурами и формой объектов. В-третьих, из OS X в iOS перекочевал набор SceneKit, при помощи которого решаются задачи 3D-визуализации и автоматизации скриптов для графических расчетов. Последние два здорово помогут создателям казуальных приложений, желающих привнести в картинку изюминку, не особо отвлекаясь от основной работы над сюжетом и геймплеем.

Но в заключении будет минорная нотка – хоть Apple и не объявляла о прекращении поддержки старых API, к этому все идет. Даже если купертиновцы не решатся на подобный шаг или им просто будет лень еще раз с нуля переписывать систему, через полгода-год нас ждет разительная смена общей картины. Появятся студии, которые будут создавать приложения, опираясь только на Metal и прочие фирменные разработки Apple – красивые, интересные, оптимизированные игры. Но их крайне проблематично портировать на иные платформы, что бьет по заработку и продвижению компаний, поэтому параллельно будет функционировать «поколение олдскул», использующее традиционные API. И спрогнозировать, как это отразится на вселенной мобильных игр в целом, сейчас довольно затруднительно.

Смотрите также:

  • iOS 8 представлена на WWDC 14 (новые функции, дизайн, прочее).
  • Apple внесла изменения в технологию передачи аудио для iOS 8 и OS X 10.10 Yosemite.
  • Скачать iOS 8 beta 1 для iPhone, iPod touch, iPad.
  • Итоги WWDC 2014 (видео).

Пожалуйста, оцените статью

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

Метки: Новости Apple.

О металле и этом руководстве

Далее

Платформа Metal поддерживает расширенный рендеринг 3D-графики с ускорением на GPU и рабочие нагрузки параллельных вычислений. Metal предоставляет современный и оптимизированный API для детального низкоуровневого управления организацией, обработкой и отправкой графических и вычислительных команд, а также для управления соответствующими данными и ресурсами для этих команд. Основная цель Metal — минимизировать нагрузку на ЦП, возникающую при выполнении рабочих нагрузок графического процессора.

Краткий обзор

В этом документе описываются фундаментальные концепции Metal: модель представления команд, модель управления памятью и использование независимо скомпилированного кода для графических шейдеров и функций параллельных вычислений данных. Затем в документе подробно описано, как использовать Metal API для написания приложения.

Вы можете найти более подробную информацию в следующих главах:

  • Основные концепции Metal кратко описывают основные особенности Metal.

  • Модель организации и выполнения команд объясняет, как создавать и отправлять команды графическому процессору для выполнения.

  • Объекты ресурсов: буферы и текстуры обсуждает управление памятью устройства, включая объекты буферов и текстур, которые представляют собой выделение памяти графическим процессором.

  • Функции и библиотеки описывает, как код языка шейдинга Metal может быть представлен в приложении Metal, и как код языка шейдинга Metal загружается и исполняется графическим процессором.

  • Рендеринг графики: Render Command Encoder описывает, как визуализировать 3D-графику, в том числе как распределять графические операции по нескольким потокам.

  • Параллельная обработка данных: кодировщик команд вычислений объясняет, как выполнять параллельную обработку данных.

  • Операции с буферами и текстурами: Blit Command Encoder описывает, как копировать данные между текстурами и буферами.

  • Metal Tools содержит список доступных инструментов, которые помогут вам настроить и улучшить рабочий процесс разработки.

  • В таблицах наборов функций Metal перечислены доступные функции, ограничения реализации и возможности формата пикселей для каждого набора функций Metal.

  • Что нового в iOS 9 и OS X 10. 11 содержит сводку новых функций, представленных в iOS 9 и OS X 10.11.

  • Что нового в iOS 10, tvOS 10 и OS X 10.12 содержит сводку новых функций, представленных в iOS 10, tvOS 10 и OS X 10.12.

  • Тесселяция описывает конвейер тесселяции Metal, используемый для тесселяции патча, включая использование вычислительного ядра, тесселятора и функции вершин после тесселяции.

  • Resource Heaps описывает, как распределять ресурсы из кучи, создавать псевдонимы между ними и отслеживать их с помощью забора.

Предпосылки

Вы должны быть знакомы с языком Objective-C и иметь опыт программирования с OpenGL, OpenCL или аналогичными API.

См. также

Справочник Metal Framework представляет собой набор документов, описывающих интерфейсы в Metal framework.

Спецификация языка затенения Metal — это документ, определяющий язык затенения Metal, который используется для написания графического шейдера или вычислительной функции, используемой приложением Metal.

Кроме того, в библиотеке разработчиков Apple доступно несколько примеров проектов кода с использованием Metal.

Далее


Copyright © Apple Inc., 2016. Все права защищены. Условия использования | Политика конфиденциальности | Обновлено: 2016-12-12

Discover Metal 3 — WWDC22 — Видео

Больше видео

  • Используйте весь потенциал Apple Silicon в своем приложении с помощью Metal 3. Мы познакомим вас с последними функциями, улучшениями и инструментами. Мы также рассмотрим, как вы можете использовать расширенные функции и инструменты компилятора для более быстрой загрузки ресурсов, компиляции двоичных файлов шейдеров во время сборки, обработки сложной геометрии с помощью шейдеров сетки, рендеринга графики с высоким разрешением за меньшее время, более быстрого обучения сетей машинного обучения и т. д. .

    Ресурсы

    Похожие видео

    WWDC22
  • Скачать

    ♪ ♪ Тарун Белагоду: Привет и добро пожаловать в Metal 3. Меня зовут Тарун Белагоду, и я буду делиться последними новостями об эволюции Металла. Во-первых, давайте начнем с основ. Metal — это графический и вычислительный API Apple с низкими накладными расходами. Он разработан, чтобы быть самым быстрым и эффективным способом управления невероятно мощными графическими процессорами продуктов Apple. Он предлагает многопоточный и прямой контроль над командами, отправляемыми на графический процессор, богатый язык шейдеров, который поддерживает явную компиляцию шейдеров, и глубоко интегрированные инструменты, помогающие отлаживать и профилировать сложные приложения и игры.

    С момента своего появления в Metal было добавлено множество продвинутых графических и вычислительных функций с упором на рендеринг с использованием графического процессора, машинное обучение и трассировку лучей. Apple Silicon прокладывает путь к невероятной графической производительности и эффективности на каждом новом Mac. И Metal раскрывает эти возможности. В этом году Metal делает скачок на новый уровень с Metal 3.

    Metal 3 — это мощный набор новых функций, обеспечивающих еще более высокую производительность и качество рендеринга, чтобы ваши приложения и игры работали быстрее и выглядели потрясающе. Начнем с быстрой загрузки ресурсов.

    Современные игры и приложения предъявляют высокие требования к загрузке ресурсов, и быстрая потоковая передача множества небольших запросов ресурсов из файлов в ваши ресурсы Metal часто является ключом к высококачественным визуальным эффектам. Но существующие API-интерфейсы хранилища предназначены для больших объемных запросов.

    Быстрая загрузка ресурсов в Metal 3 позволяет вам запрашивать множество небольших загрузок, используя ту же явную многопоточную модель команд, что и графика и вычисления. Каждый запрос — это команда, и многие команды могут быть поставлены в очередь для асинхронной отправки. Он загружается непосредственно в ваши металлические буферы и текстуры без дополнительных шагов, что экономит ваши усилия по разработке и время на передачу. Быстрая загрузка ресурсов также упрощает координацию между операциями графического процессора и операциями загрузки, используя уже известные вам примитивы синхронизации Metal. Системы потоковой передачи текстур действительно выигрывают от быстрой загрузки ресурсов. Давайте посмотрим на пример.

    Металлические разреженные текстуры позволяют приложениям передавать текстуры с точностью до плитки. Система потоковой передачи текстур, построенная на разреженных текстурах Metal, состоит из четырех шагов. Во-первых, решите, что загружать, основываясь на отзывах предыдущего кадра. Во-вторых, загрузить тайлы из файлового хранилища. В-третьих, скопируйте из области подготовки в разреженные текстуры. И, наконец, нарисуйте рамку.

    Чем больше времени занимает загрузка и копирование, тем больше времени ваше приложение рисует с более низким качеством.

    Быстрая загрузка ресурсов сводит к минимуму накладные расходы на загрузку и гарантирует, что аппаратное обеспечение хранения имеет достаточно запросов в своих очередях, чтобы максимизировать пропускную способность. Это обеспечивает более быструю и стабильную производительность, так что больше времени уходит на рисование с высоким качеством.

    Быстрая загрузка ресурсов значительно упростит код, который необходимо написать для обеспечения высококачественной потоковой передачи ресурсов. Чтобы узнать больше о быстрой загрузке ресурсов, ознакомьтесь с сеансом «Загружайте ресурсы быстрее с помощью Metal 3».

    Далее позвольте мне рассказать вам, как новый рабочий процесс автономной компиляции поможет вам сократить время загрузки и зависания в ваших приложениях. Двоичные файлы шейдеров — это машинный код для графического процессора, который традиционно генерируется во время работы приложения в рамках процесса создания конвейера Metal. Генерация этих двоичных файлов — дорогостоящая операция, которая обычно скрыта за экраном загрузки во время запуска приложения. Однако иногда они должны происходить внутри кадра, что, в свою очередь, приводит к заиканиям частоты кадров. Эти двоичные файлы кэшируются Metal, поэтому вы не платите за них часто, но их стоимость по-прежнему наблюдается при первом запуске приложения или всякий раз, когда двоичный файл требуется впервые. Благодаря автономной компиляции вы можете исключить создание бинарных файлов шейдера во время выполнения.

    Переместив генерацию бинарных файлов на время сборки проекта, вы можете значительно сократить время, затрачиваемое на создание конвейеров Metal во время загрузки, и уменьшить зависания в приложении, когда эти конвейеры создаются точно в срок. Давайте подробнее рассмотрим, что значит уменьшить заикание.

    Вот пример игры, в которой необходимо создать объект состояния конвейера Metal во время кодирования. Так как это конвейер, которого Metal раньше не видел, он генерирует необходимый двоичный файл шейдера. Это длительная операция, которая прерывает кодирование остальной части кадра и приводит к тому, что приложение пропускает целевую частоту кадров. Это происходит только один раз, но этого достаточно, чтобы ваши пользователи заметили заикание кадра. Напротив, автономная компиляция означает, что двоичный файл шейдера может быть сгенерирован во время сборки, так что создание каждого состояния конвейера происходит быстро, а выполнение плавно. Автономная компиляция также может существенно повлиять на время загрузки вашего приложения. Давайте посмотрим на пример.

    Большинство приложений создают большинство объектов состояния конвейера Metal на специальной фазе загрузки. И бинарные файлы шейдера генерируются при первой загрузке. Это может быть долгим ожиданием для ваших пользователей, если ваше приложение создает много таких конвейеров. При автономной компиляции генерацию двоичных файлов шейдеров можно снова перенести на время сборки проекта, что приведет к сокращению времени загрузки и более быстрому привлечению пользователей к вашему приложению.

    Автономная компиляция меняет правила игры для приложений со множеством сложных конвейеров. Чтобы узнать больше об автономной компиляции и других улучшениях, ознакомьтесь с сеансом «Нацеливание и оптимизация двоичных файлов графического процессора с помощью Metal 3».

    Теперь давайте перейдем к MetalFX, который предоставляет оптимизированные для платформы графические эффекты для приложений Metal. MetalFX Upscaling помогает отображать высококачественную графику за меньшее время благодаря высокопроизводительному масштабированию и сглаживанию. Вы можете выбрать комбинацию временных или пространственных алгоритмов, чтобы повысить производительность. Вот почему это важно. Хотя разрешение Retina обеспечивает четкую детализацию, которую вы хотите использовать в своих приложениях и играх, создание всех этих пикселей также может повлиять на производительность. С помощью MetalFX Upscaling вы можете генерировать пиксели с более низким разрешением, а затем позволить фреймворку генерировать высококачественное изображение с высоким разрешением с меньшими затратами и гораздо более высокой частотой кадров. MetalFX — это мощный фреймворк, который делает высокопроизводительное и качественное масштабирование реальностью. Чтобы узнать больше об апскейлинге MetalFX, ознакомьтесь с сеансом «Увеличение производительности с помощью апскейлинга MetalFX». Далее следует новый гибкий конвейер геометрии Metal: Mesh Shaders. Традиционный программируемый графический конвейер позволяет преобразовывать вершины в шейдере, которые затем собираются в примитивы для растеризации аппаратным обеспечением с фиксированными функциями. Этого достаточно для большинства приложений, но в некоторых случаях, таких как отбраковка, требуется доступ ко всему примитиву. Каждая вершина также считывается, преобразуется и выводится независимо. Таким образом, вы не можете добавлять вершины или примитивы в середине отрисовки. Расширенная обработка геометрии требует большей гибкости. И традиционно это означало предварительную обработку вашей геометрии в вычислительном проходе. Но для этого требуется хранить переменный объем промежуточной геометрии в памяти устройства, что может быть затруднительно для вас в бюджете. Шейдеры металлической сетки представляют альтернативный конвейер обработки геометрии. Он заменяет традиционную вершинную стадию гибкой двухэтапной моделью и обеспечивает иерархическую обработку вашей геометрии. На первом этапе анализируются целые объекты, чтобы решить, следует ли расширять, сжимать или уточнять геометрию на втором этапе. Это достигается за счет предоставления вычислительных возможностей на этапе рендеринга без необходимости хранения в памяти промежуточного устройства. Сетчатые шейдеры отлично подходят для приложений, которые выполняют отбраковку на основе графического процессора, выбор уровня детализации и процедурную генерацию геометрии. Давайте посмотрим поближе. В этом примере проход вычислений оценивает поверхность, а затем создает ее геометрию. Эта геометрия и ее команды отрисовки затем записываются в память устройства для последующего использования при рендеринге. При высоких коэффициентах расширения и косвенных вызовах отрисовки может быть трудно предсказать объем необходимой памяти.

    Сетчатые шейдеры повышают эффективность за счет запуска двух этапов, подобных вычислениям, встроенных в конвейер рендеринга.

    Этап Object оценивает входные данные, чтобы решить, сколько мешей необходимо сгенерировать.

    Затем на этапе Mesh создается реальная геометрия. Эти сетки отправляются непосредственно в растеризатор, минуя обращение к памяти устройства и необходимость обработки вершин.

    Сетчатые шейдеры позволят вам создавать эффективные системы процедурной геометрии, отбраковки и LOD для ваших приложений. Чтобы узнать больше о шейдерах сетки, ознакомьтесь с сеансом «Преобразование геометрии с помощью шейдеров сетки Metal».

    Metal 3 также обеспечивает значительное ускорение конвейера трассировки лучей. Оптимизировано все, от построения ускоренной структуры, пересечения и затенения. Metal также добавляет поддержку конвейеров трассировки лучей на основе графического процессора для дальнейшей оптимизации вашего приложения. Давайте сравним трассировку лучей Metal 3 с тем, что было доступно ранее.

    Трассировка лучей Metal 3 значительно экономит время процессора и графического процессора. Во-первых, структуры ускорения строятся за меньшее время, что дает вам больше времени графического процессора для рисования и трассировки лучей. Во-вторых, операции ЦП, такие как отбраковка, могут быть перенесены на ГП благодаря новой поддержке буфера непрямых команд для трассировки лучей. Наконец, трассировка лучей Metal 3 поддерживает прямой доступ к данным примитивов для упрощения и оптимизации пересечения и затенения. Трассировка лучей Metal 3 продолжает становиться лучше и мощнее, чем раньше. Чтобы узнать больше о трассировке лучей, перейдите к сеансу «Максимизируйте производительность трассировки лучей в Metal». Теперь я покажу вам, как Metal 3 ускоряет вывод и обучение машинного обучения. Metal 3 имеет значительные улучшения для ускорения машинного обучения, с дополнительной поддержкой ускорения обучения сети на Mac и значительной оптимизацией для оптимизации логического вывода ML в приложениях для обработки графики и мультимедиа. TensorFlow — это популярная платформа для машинного обучения с ускорением на GPU на Mac. Недавно выпущенная Mac Studio обеспечивает ускорение M1 Ultra до 16 раз по сравнению с обучением на ЦП в различных сетях. И Metal 3 также ускоряет многие новые операции TensorFlow. Это означает меньшую синхронизацию с ЦП для еще большей масштабируемости производительности. PyTorch — еще одна очень популярная платформа машинного обучения для обучения сети, которая недавно получила ускорение графического процессора с помощью Metal. А на Mac Studio с M1 Ultra вы можете добиться значительного ускорения обучения по сравнению с процессором. Например, вы можете обучить модель BERT до 6,5 раз быстрее, а ResNet50 — до 8,5 раз быстрее. Metal оптимизирует логические выводы машинного обучения в кремнии Apple, чтобы максимизировать производительность. Это особенно полезно для высокопроизводительных приложений обработки видео и изображений на базе Metal, таких как DaVinci Resolve от BlackMagic Design. DaVinci Resolve — это платформа для производства видео, ориентированная на цветокоррекцию, которая широко использует Metal и машинное обучение в своих рабочих процессах. И результаты невероятные. Благодаря поддержке Metal для ускоренного машинного обучения компания BlackMagic Design добилась значительного повышения производительности своих рабочих процессов редактирования и цветокоррекции, а также своих инструментов на основе машинного обучения. Чтобы узнать больше об обновлениях машинного обучения, перейдите к сеансу «Ускорение машинного обучения с помощью Metal». Теперь позвольте мне рассказать вам, какое оборудование поддерживает функции Metal 3, которые я только что описал. Metal 3 поддерживается на всех современных устройствах iOS, iPadOS и macOS, включая iPhone и iPad с чипами A13 Bionic или M1 или новее, а также на всех кремниевых системах Apple Mac и системах Mac с новейшими графическими процессорами AMD и Intel.

    А чтобы узнать, поддерживает ли данное устройство Metal 3, используйте запрос supportsFamily на устройстве Metal.

    Metal 3 — это гораздо больше, чем просто функции; он также включает полный набор передовых инструментов разработчика. Позвольте мне показать вам несколько сейчас. Средство просмотра металлических зависимостей в Xcode 14 еще больше упрощает визуализацию всего средства визуализации или масштабирование за один проход. А чтобы упростить внедрение конвейеров, управляемых графическим процессором, или, например, синхронизацию с быстрой загрузкой ресурсов, средство просмотра зависимостей теперь включает края синхронизации, помогающие анализировать и проверять ваши зависимости. Улучшенное средство просмотра структуры ускорения в Xcode 14 поможет вам максимально эффективно использовать оптимизированную трассировку лучей Metal 3. Во-первых, теперь вы можете выделять отдельные примитивы в сцене.

    И выбор примитива показывает связанные с ним данные примитива в контуре слева.

    Наконец, если в вашей сцене есть информация о движении, средство просмотра структуры ускорения теперь может визуализировать различные моменты времени.

    И это всего лишь краткий обзор некоторых обновлений инструментов разработчика в Xcode 14. Существует множество других новых функций, таких как поддержка Dylib, новый список ресурсов, навигация по файлам в редакторе шейдеров, настраиваемые макеты средства просмотра буфера и многое другое. Чтобы узнать больше об инструментах и ​​о том, как получить максимальную отдачу от достижений в Metal 3, обязательно ознакомьтесь с этими другими сеансами, которые помогут вам создавать продвинутую графику, игры и профессиональные приложения.

scroll to top