|
AMD Mantle | Основы API
Тема API AMD Mantle разделила сообщество ПК-геймеров на два лагеря. Существует масса мнений, информации, заблуждений и известных фактов, разобраться в которых довольно сложно. Мы хотим собрать всё воедино, причём сделать это наиболее справедливым образом. К сожалению, обсудить данную тему без применения "корпоративного" языка практически невозможно, так что давайте начнём с начала - разберёмся в определениях, подготовим почву, определимся, что и откуда нам известно.
Что такое API?
Аббревиатура API расшифровывается как application programming interface (прикладной интерфейс программирования. Ключевым является слово интерфейс. API разработан для коммуникации между приложениями.
Отличным примером является функция копирования/вставки в Windows. Когда вы копируете абзац текста из браузера в буфер обмена, а затем вставляете его в текстовый редактор, вы используете функции API. Разработчики вашего браузера включили поддержку запроса API на копирование, а программисты текстового редактора – поддержку запроса API на вставку. Две эти программы взаимодействуют друг с другом через API.
Преимущество API заключается в том, что разработчикам не приходится внедрять поддержку всех возможных приложений. Если бы не API, все существующие программы для редактирования документов должны были бы содержать уникальный код, для осуществления, например, функции копирования/вставки со всеми другими редакторами документов в мире. Такую модель общения между программами поддерживать было бы невозможно.
Если ли негативная сторона? API-интерфейсы не так эффективны, как специализированый код для прямой коммуникации между ПО. Цена удобства – повышенная нагрузка на аппаратное обеспечение и вычислительные ресурсы.
Что такое графический API-интерфейс?
Поскольку API является интерфейсом связи между приложениями, графический API связывает приложение и видеодрайвер графического адаптера.
Главное здесь – совместимость. Вместо разработки игрового движка с учётом поддержки различных способов связи для взаимодействия с конкретными драйверами видеокарт, разработчики игр могут сосредоточить силы на коммуникации посредством API. Затем API вызывает графический драйвер, который исполняет инструкции на видеокарте. Таким образом, графические API-интерфейсы можно считать одним из уровней абстракции между операционной системой и аппаратным обеспечением.
Если основная цель API – это простота и удобство, почему существует несколько API?
Происхождение OpenGL связано с интерфейсом Iris GL от SGI, который появился в начале 1980-x годов. Как это ни удивительно, но компания сделала его открытым стандартом под названием API OpenGL (Open Graphics Library). Конкуренты SGI получили доступ при условии равного участия в поддержке и обновлении кода.
Даже у Microsoft было кресло в Наблюдательном совете архитектуры OpenGL (OpenGL Architecture Review Board) до 2003, когда компания перешла на свой собственный интерфейс DirectX, который сейчас пользуется гораздо большей популярностью. На данный момент DirectX используется в Windows и Xbox, поэтому обосновать выбор в пользу API от Microsoft легко, если разработчик хочет получить максимум из доступных ресурсов.
Стоит отметить, что известный программист и разработчик Джон Кармак (John Carmack) доказал, что OpenGL по-прежнему можно использовать для запуска современных игр на ПК (таких как Rage). Кроме того, OpenGL держит позиции за счёт поддержки множества платформ: Windows, Mac и Linux. Android, Windows Phone и iPhone используют OpenGL ES (Open GL for Embedded Systems). По мере роста популярности игр на мобильных платформах растёт и популярность OpenGL.
Что не так с DirectX 11 и OpenGL? Зачем понадобился ещё один графический API?
Оба стандарта имеют серьёзные расхождения, и кажется нелогичным внедрение ещё одного. Так чем же существующие стандарты не устраивают разработчиков?
И DirectX, и OpenGL создавались в прошлом тысячелетии, то есть до появления многоядерных процессоров в массовых решениях. Последнее время некоторые разработчики высказывают предположения, что эти API используют слишком много ресурсов, склонны к нестабильности и плохо масштабируются (или вообще не масштабируются) на распараллеленных платформах. Кроме того, ни один API нельзя назвать идеальным. Вам когда-нибудь приходилось обновлять видеодрайвер, чтобы игра работала правильно? Если да, то это означает, что графический API не смог выполнить функцию уровня абстракции.
Вдобавок к этому, ходили слухи, что Microsoft собирается прекратить развитие DirectX в 2013 году. В интервью с вице-президентом AMD, Роем Тейлором (Roy Taylor), было сказано, что "новый заставляет отрасль двигаться вперёд, и новым видеокартам нужно больше процессоров и оперативной памяти. Но DirectX 12 не появился. Вот и всё. Насколько нам известно, на DirectX 12 пока нет никаких планов". Кроме того, из
AMD утверждает, что пришла к разработке нового API, который должен решить существующие проблемы DirectX и OpenGL, вызывающие недовольство разработчиков. Ввиду того, что APU и GPU от AMD применяются в Xbox One, PlayStation 4 и множестве ПК, компания вынуждена предложить API, который можно будет использовать на различных платформах.
Предполагаемые улучшения Mantle в сравнении с OpenGL и DirectX
AMD Mantle ассоциируется с понятием "низкоуровневый". Но что оно означает? Если коротко – это синоним минимализма. API меньше, проще и, следовательно, быстрее DirectX 11 и OpenGL. Новый API от AMD, предположительно, ставит меньше условий для визуализации конкретной сцены. Таким образом, разработчик, а не API, получает управление над ресурсами, что обусловливает большую оптимизацию.
В этом плане AMD Mantle может оказаться более эффективным интерфейсом. Кроме того, AMD Mantle способен выполнять полностью параллельную прорисовку, чтобы разделить задачи между несколькими исполнительными блоками CPU. Если API может эффективно использовать больший объём вычислительных ресурсов, то медленные процессоры с несколькими исполнительными блоками не окажут такого негативного эффекта на производительность.
Проще говоря, AMD утверждает, что AMD Mantle потенциально может повысить производительность систем с медленными многоядерными центральными процессорами. А там, где CPU не является "бутылочным горлышком", AMD Mantle сможет понизить энергопотребление GPU.
AMD позиционирует себя как сторонника открытых исходных кодов. Относится ли Mantle к API с открытым кодом?
AMD Mantle не является открытым стандартом, и AMD утверждает, что и в будущем он таковым не станет. Однако представители компании заявляют, что SDK AMD Mantle будет доступен для всех к концу 2014 года без лицензионных сборов или ограничений, когда закрытая бета-версия завершится.
Нужно уточнить, что доступ к SDK – это не то же самое, что открытый исходный код. Тем не менее, в теории, Nvidia и Intel смогут написать совместимый с AMD Mantle драйвер. Однако в реальности нам это кажется маловероятным. Но лучше приберечь анализ для заключения. Дело в том, что AMD хочет сохранить контроль над AMD Mantle, чтобы оптимизировать API под архитектуру GCN и позволить разработчикам быстрее принять новые аппаратные функции, которые непрактичны для общих API, таких как DirectX и OpenGL.
Мы разобрались с основами Mantle. Что дальше?
Мы хотим протестировать API AMD Mantle и проанализировать возможности интерфейса.
AMD Mantle | Как мы тестировали API Mantle от AMD
Можно предположить, что основная цель AMD Mantle – выжать максимум производительности из видеокарт Radeon. В принципе, так и есть. Но важно помнить, что проблема, которую должен решить интерфейс AMD Mantle, не совсем связана с графикой. Напротив, AMD Mantle должен исправить недостатки в плане эффективности, которые мешают распределению нагрузок на CPU.
Таким образом, в лучшем случае AMD Mantle нивелирует узкие места, характерные при использовании бюджетных процессоров (например, производства AMD). Для примера приведём такой сценарий: с DirectX видеокарта Radeon может обеспечить более высокое быстродействие в паре с процессором семейства Intel Core i7, чем с
Чтобы это проверить, мы используем обширный ряд платформ и видеокарт (список приведён в таблице ниже). Все видеокарты Radeon тестируются в режиме DirectX и AMD Mantle для выявления различий. Также для сравнения мы добавили в выборку карты GeForce.
Обычно для получения показателей в тестах мы используем Fraps или FCAT. Оба решения разработаны для DirectX, и, следовательно, не работают под управлением AMD Mantle. В результате нам пришлось использовать встроенные тестовые утилиты, которыми комплектуются игры
Позже вы увидите, что для специализированного теста нам понадобится видеокарта среднего уровня с памятью 4 Гбайт. Для этих целей MSI прислала нам
Высокопроизводительные видеокарты требуют соответствующего питания, и XFX прислала нам свой блок питания PRO850W с сертификатом 80 PLUS Bronze. Модульный БП использует одну шину +12 В с силой тока 70 А. Как утверждает XFX, данная модель обеспечивает непрерывную (не пиковую) мощность до 850 Вт при температуре 50 градусов Цельсия (заметно выше, чем в большинстве корпусов).
В нашей лаборатории мы почти полностью избавились от механических жёстких дисков, и вместо них используем твердотельные накопители, для которых нехарактерны задержки, связанные с операциями ввода/вывода. Компания Samsung прислала в наши офисы накопители Samsung 840 Pro на 256 Гбайт, поэтому они у нас используются в качестве стандартных.
Система | FM2+ | AM3+ | LGA 1155 | LGA 1150 |
Системная плата | ASRock FM2A88X-ITX+,Socket FM2+ | Gigabyte GA-990FXA-UDS,Socket AM3+ | Asus P8Z77-V LX, LGA 1155 | ASRock Z87 Pro3, LGA 1150 |
Процессор | AMD A10-7850K, четыре ядра, 3,7 ГГц (4 ГГц макс. Turbo Core) | AMD FX-8350, восемь ядер, 4 ГГц (4,2 ГГц макс.Turbo Core) AMD FX-4170, четыре ядра, 4,2 ГГц (4,3 ГГц макс. Turbo Core) |
Intel Core i3-3220, два ядра, Hyper-Threading, 3,3 ГГц | Intel Core i7-4770K, четыре ядра, Hyper-Threading, 3,5 ГГц (3,9 ГГц макс. Turbo Boost) |
Память | 8 Гбайт Corsair Vengeance LP (2 x 4 Гбайт) 1600 МТ/с, CAS 9-9-9-24-1T |
Видеокарты | GeForce GTX 650 2 Гбайт GDDR5 GeForce GTX 660 2 Гбайт GDDR5 GeForce GTX 780 Ti 3 Гбайт GDDR5 Radeon R7 250X 1 Гбайт GDDR5 Radeon R9 270 2 Гбайт GDDR5 Radeon R9 270X 4 Гбайт GDDR5 Radeon R9 290X 4 Гбайт GDDR5 |
Системный накопитель | Samsung 840 Pro, 256 Гбайт SSD, SATA 6Гбит/с |
Блок питания | XFX PRO850W, 850 W, сертификат 80 PLUS |
ПО и драйверы | |
Операционная система | Microsoft Windows 8 Pro x64 |
DirectX | DirectX 11 |
Видеодрайверы | AMD Catalyst 14.3 Beta (14.4 Beta показал некоторый ущерб производительности) Nvidia GeForce 337.88 WHQL |
Подробная информация по тестам:
Конфигурация тестов | |
3D-игры | |
Thief | Built-in benchmark |
Battlefield 4 | Собственный тест THG, 90 секунд |