Асинхронные вычисления, AMD, Nvidia и DX12: что мы знаем?

Асинхронные вычисления, AMD, Nvidia и DX12: что мы знаем?

С тех пор как был анонсирован DirectX 12, AMD и Nvidia начали бороться за лучшую поддержку нового API и его функций. Одна из возможностей, о которой часто упоминают AMD, это поддержка асинхронных вычислений в архитектуре GCN. Асинхронные вычисления позволяют всем графическим картам AMD на базе GCN выполнять графическую и вычислительную нагрузку одновременно. На прошлой неделе сотрудник Oxide Games сообщал, что вопреки распространенному мнению, аппаратура nVidia не поддерживает асинхронные вычисления, и что при попытке их реализации производительность катастрофически падала.

Когда AMD и Nvidia говорят о поддержке асинхронных вычислений они говорят не об аналогичных возможностях аппаратных средств. В асинхронных командных движках (ACE) AMD новые нагрузки могут выполняться с задержкой в один цикл. Топовые карты AMD имеют 8 движков, и каждый из них имеет 8 последовательностей. Maxwell, например, имеет два пайплайна, один из которых предназначен для графики. Второй имеет 31 последовательность, но Nvidia может переключать их быстро, как AMD.

Асинхронные вычисления, AMD, Nvidia и DX12: что мы знаем?

Для того, чтобы исследовать возможности Maxwell и GCN, тестеры Beyond3D и Overclock.net использовали асинхронные вычислительные задания на оборудовании AMD и Nvidia. Нужно отметить, что испытания определяли задержку, а не производительность асинхронных вычислений. Они не проверяли общую пропускную способность, а лишь время, которое уходит на обработку, и тест демонстрировал – используются асинхронные вычисления или нет. Так как это тест на время, значения, приближенные к желтой линии, считаются лучшими.

Вот показатели карты R9 290:

Асинхронные вычисления, AMD, Nvidia и DX12: что мы знаем?

Сравните с GTX 980 Ti:

Асинхронные вычисления, AMD, Nvidia и DX12: что мы знаем?

Пытаясь выполнить графические задачи и вычисления одновременно, GTX 980 Ti демонстрирует скачки производительности. Сейчас можно увидеть, что карта Nvidia лишь в некоторых моментах показывает близкую к идеальной задержку. Более подробные исследования показали, что Nvidia использует CPU в некоторых начальных вычислениях, в то время как AMD выполняет их самостоятельно. Это свидетельствует о том, что говоря об асинхронных вычислениях, AMD и Nvidia имеют в виду разные вещи. Но вопрос в том, могут ли видеокарты Nvidia выполнять графическую и вычислительную нагрузку одновременно. AMD может благодаря своим блокам ACE.

Предполагается, что подход AMD больше напоминает Hyper-Threading, что позволяет GPU не привлекать центральный процессор для своих вычислений, в отличие от Nvidia. В результате Maxwell не может переключаться между нагрузками так быстро, как GCN. Поэтому при малых нагрузках карты Nvidia имеют преимущество, но при её возрастании асинхронные вычисления AMD экономят больше времени на обработке.

Тем временем, Nvidia предоставила доказательства, что их оборудование способно выполнять асинхронные вычисления, и что эта возможность полностью реализована в драйверах. Но аналитики говорят, что это очень сложный вопрос, и определить возможности Nvidia и Maxwell за короткий период времени невозможно.

Уже упоминалось, что подход AMD к асинхронным вычислениям поверхностно напоминает технологию Hyper-Threading. Когда Hyper-Threading дебютировала, многие пользователи AMD задавали вопрос, почему Team Red не копирует эту функцию, чтобы повысить производительность K7 и K8. AMD ответили, что процессоры K7 и K8 имели более короткие пайплайны и отличающиеся архитектуры, что делало невозможным применение Hyper-Threading. Р4, напротив, имел длинный пайплайн и относительно высокую скорость перехода. Если один поток останавливался, Hyper-Threading позволяла другому потоку продолжить выполнение процесса, что увеличивало общую производительность чипа.

 Асинхронные вычисления в стиле GCN вряд ли повысят производительность Maxwell, так как Maxwell предназначен для других видов нагрузок.  Потенциально Nvidia могут преодолеть это ограничение и сделать что-то более мощное.

Это вносит определенную путаницу по поводу того, что асинхронные вычисления значат для гейминга и поддержки DirectX 12. Несмотря на некоторые заявления, DirectX 12 не требует реализации асинхронных вычислений. Но командные движки AMD могут позволить компании полностью использовать возможности DX12. Проведет ли подобную оптимизацию Nvidia пока неясно.

Учитывая, что аппаратные средства AMD используются в Xbox и PS4 (возможно, и в предстоящей Nintendo NX), вполне резонно считать, асинхронные вычисления AMD могут быть важны для будущего DX12. Однако менять новые карты Nvidia на AMD это уже слишком. Разработчики оптимизируют игры для обеих архитектур, и если большинство из них не сможет получить приемлемую производительность с помощью асинхронных вычислений, они не будут использовать их вообще. Разработчики не собираются отказываться от базы геймеров Nvidia и прекращать поддержку видеокарт Maxwell или Kepler. 

Если же вы не знаете, в каком направлении развивать свою игровую систему, лучше подождать 6-12 месяцев, пока не выйдут следующие игры и новое поколение карт AMD и Nvidia на основе 14/16-нанометрового процесса.

Если карты AMD имеют преимущество в своих аппаратных средствах и оптимизации разработчиков, это станет ясно в ближайшем будущем. Если Nvidia сможет ввести свой метод асинхронных вычислений, мы тоже узнает об этом очень скоро. В любом случае, пока что не стоит торопиться с выводами.

                                   

Система Orphus
comments powered by Disqus
 
Top