Интервью c Дэвидом Керком, руководителем отдела исследований NVIDIA

22.10.2003

Сотрудники сайта FiringSquad в телефонном интервью задали ряд вопросов Дэвиду Кёрку (David Kirk), руководителю отдела исследований компании NVIDIA. Нам показалось достойным внимания данное интервью, мы также позволили себе дать несколько комментариев к нему.



FiringSquad: Не могли бы вы сообщить нам в деталях о вашем недавнем решении уделять больше внимания HLSL нежели чем Cg?

Керк: Вы уже сейчас можете наблюдать последствия этого решения - мы начали более тесно сотрудничать с Microsoft и уделять оптимизации под HLSL всё больше и больше времени, но позвольте мне сначала рассказать вам о предшествовавших событиях. Где-то два-три года назад, когда мы начинали разрабатывать архитектуру FX, мы поняли, что для сложных программируемых конвейеров потребуется язык высокого уровня, а в то время никакого HLSL ещё не было и мы работали с другими влиятельными игроками индустрии, включая Microsoft, чтобы начать продвигать такой язык программирования, но нам не удалось вызвать к нему интерес. В итоге мы самостоятельно начали разрабатывать Cg, поскольку знали, что такой язык будет востребован независимо от того, считают его важным или нет.

Когда мы дали старт проекту Cg, нам пришлось также приучать программистов работать с программируемыми GPU. Теперь настала очередь Microsoft сделать заявление, но что касается долгосрочных планов, мы не хотим заниматься языками программирования, это не то поле, где лежат наши знания, хотя мы должны были начать заниматься этим, поскольку других вариантов не было. Я считаю, что теперь, когда у нас есть возможность работать совместно с Microsoft над HLSL для DirectX, это окажется куда более эффективным методом разработки чем, если бы мы всё делали сами. Отсюда не следует, что мы собираемся забросить Cg - есть много платформ не поддерживаемых Microsoft: OpenGL и не-Windows платформы, а также профессиональные рабочие станции и рынок создания контента. Уже существуют инструменты разработки, интегрировавшие Cg, и мы продолжим поддержку и их пользователей, и пользователей в других областях.



FiringSquad: Так значит ли это, что Cg не исчезнет, а просто станет менее значимым?

Керк: Ну, у нас нет необходимости уделять много внимания его развитию для Windows и DirectX, поскольку у нас имеется прекрасная возможность работать вместе с Microsoft в этом направлении.



FiringSquad: Похоже вы не наблюдали быстрого признания HLSL, когда вы объявили о Cg?

Керк: Как я уже говорил, если вернуться в прошлое, то когда мы объявили о Cg, HLSL не существовал. Не было не то чтобы быстрого, не было никакого признания. И с того момента, когда Microsoft и остальные игроки индустрии заговорили положительно о языках шейдеров, для нас появилась возможность не оставаться единственными разработчиками данной технологии. Для нас гораздо лучше разрабатывать её совместно с кем-нибудь ещё, чем действовать в одиночку.



FiringSquad: Не могли бы вы в подробностях рассказать о драйвере Detonator 50, и о том, где именно при помощи него вы рассчитываете поднять производительность, где она была недостаточной на Detonator 40; и каких успехов вы уже достигли с новым драйвером?

Керк: Мне кажется, на этот вопрос не так-то просто ответить, поскольку то, что мы воплотили в Detonator 50, поднимает качество генерации команд пиксельного шейдера (расширяя набор инструкций программ пиксельных шейдеров до уровня аппаратной части), и, по всей видимости, основные отличия вы заметите в тех приложениях, где используются шейдеры. Теперь каждый шейдер будет оптимизирован иначе, чем было раньше, и, надеюсь, будет оптимизирован лучше. Оптимизация подобного рода - не из тех, что работают только здесь и сейчас. Каждая последовательность инструкций каждого шейдера будет становиться всё лучше и лучше с выходом новых версий компилятора.

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



FiringSquad: Что касается Tomb Raider… вы можете указать на какую-нибудь конкретную неточность в бенчмарках, которые были опубликованы вместе с игрой?

Керк: Похоже, что это из области споров на тему Tomb Raider и Half-Life 2; в сети вы можете найти много обсуждений этого. Считаю, что если я продолжу комментировать сложившуюся ситуацию, то споры вспыхнут с удвоенной силой… подобные вещи верно оценивать так: бенчмарки должны отражать реальный процесс игры, как мы считаем, но часто пользуясь ранними релизами бенчмарков, а также ранними релизами драйверов, люди пробуют разные тесты, и я не думаю, что полученные результаты отражают производительность настоящей игры. Поэтому нам следует быть более терпеливыми, а также перестать пытаться дать оценку единственным бенчмарком, вместо того чтобы получить её набором тестов, поскольку ни один бенчмарк не сможет охарактеризовать поведение карты во всех играх.



FiringSquad: Можете ли вы прояснить ситуацию, почему вы решили использовать вычислительную точность FP32, а не FP24?

Керк: По-моему, это очень интересный вопрос. Если вы вспомните, как разрабатывался DX9, то получится, что когда мы вели собственные разработки, Microsoft тоже занимались собственными разработками и ATI вели свои разработки на тему того, какая вычислительная точность будет использоваться в DirectX. Если вы посмотрите на процессоры, то увидите, что FP24 не существует нигде, кроме как на процессорах ATI, и мне кажется, что это временное явление. Байты встречаются по два, по четыре и по восемь - они встречаются в степенях числа 2. Они не встречаются по три, это просто смешно.

FP24 даёт слишком высокую точность для вычислений цвета и не даёт достаточную точность для обработки геометрии, векторов нормалей или направления, или для любой встречающейся на практике арифметической работы, вроде просчёта отражений, теней и тому подобного.

Так сложилось потому, что в процессе разработки DX9 и дискуссий между различными заинтересованными лицами итоговая точность менялась несколько раз, и мы выбрали её в тот момент, когда говорили о точности 32 бита, а ATI - когда говорили о 24 битах. По сути дела DX9 был выпущен без чёткого решения относительно точности, а разъяснения были даны позже, и эти разъяснения оказались весьма удобны для ATI в том, что те не заявили, что 24-битной точности может не хватить.

Конечно, Microsoft могли решить, что точность будет равна 32, и ничему другому. Также, они могли решить, что точность будет равна 16, и ничему другому. Всё сложилось несколько неудачно для индустрии в целом, люди хотят знать заранее точность, чтобы можно было знать заранее результаты, а поскольку точность не была чётко оговорена, то была большая возможность для нас, для ATI и для Microsoft каждому сделать свой собственный выбор, но если вы заглянете вперёд, и спросите ATI и Microsoft, то, мне кажется, узнаете, что для FP24 не планируется долгая жизнь. Скорее всего, всё сложится как на CPU, где 32-битное число с плавающей точкой является основным вычислительным элементом.



FiringSquad: Считаете ли вы недостатком то, что у вас нет прямой поддержки 24-битного режима?

Керк: Я лично считаю 24 бита неверным направлением. Думаю, что комбинируя 16- и 32-битные вычисления, можно добиться лучших результатов и более высокой производительности.



FiringSquad: Кроме прочего ATI заявляли, или по крайней мере намекали на это в презентации Shader Day, что их решения позволяют выполнить больше команд с плавающей точкой за единицу времени, чем ваши. Как вы относитесь к подобным заявлениям?

Керк: Ну, первым напрашивается ответ: конечно, они это заявляют. Но я не понимаю, почему вы считаете, или они считают, что разобрались в устройстве нашего конвейера, когда на самом деле это не так. Основные проблемы, которые служат причиной разницы производительности между нашим и их конвейером, это то, что архитектура по-разному реагирует на разные вещи, и поэтому различные вещи в программах будут быстро работать у нас и медленно у них, и наоборот. Презентация Shader Day, которая утверждает что их вычислительная мощность с плавающей точкой в два-три раза выше нашей, просто нонсенс. Зачем бы мы стали выпускать такое решение?



FiringSquad: Вас не затруднит привести конкретные примеры в которых вы, по вашим словам, можете сделать что-то лучше, чем они?

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



FiringSquad: Считаете ли вы тот факт, что ваши GPU вышли позже намеченного, повлиявшим на результаты тестирования производительности в играх под DX9?

Керк: Да, я отмечу, что одна из проблем - это то, что наша серия вышла немного позже, в результате чего некоторые разработчики стали писать на GPU от ATI, и это первый подобный случай за несколько последних лет. Если игра написана для работы на другом типе оборудования, то вполне вероятно, что пока она не дойдёт до стадии бета-версии её ни разу не запустят на нашем оборудовании, а это именно тот случай когда обратное тоже верно, но сейчас не наша очередь. Я считаю, что люди со временем поймут, что несмотря на имеющуюся разницу GPU не делятся на только "хорошие" и "плохие"; вы замечаете, что одна платформа быстрее другой в условиях одного и того же количества времени, отданного на оптимизацию, и я уверен, что большую производительность вы увидите на нашей платформе.



FiringSquad: То есть вы считаете, что начальные результаты тестирования не отражают конечной производительности?

Керк: [Да] Считаю. Конечно, как я уже сказал, если другие делают выводы о нашей архитектуре не зная о ней ничего, я не оспариваю это, но почему вы считаете что они правы? Знаете, в данном случае я не сотрудничал со всеми разработчиками, но те, с кем мне посчастливилось совместно поработать, отмечали возросшую производительность, когда они действительно начали использовать ресурсы нашей платформы и оптимизировать под неё.



FiringSquad: Вам не кажется, что из-за результатов тестов производительности Half-Life 2, которые не так давно были опубликованы… вам не кажется, что вы заработали, не хочу говорить "плохую репутацию", но, может быть, головную боль?

Керк: Повторю снова: я не хочу раздувать флейм на эту тему, по моему мнению, у них просто проблема со скоростью, неверно было бы сказать, что игра вообще не запустилась. Это просто означает, что на данном этапе оптимизации игра не работает быстро. Но после того как мы получим шанс поработать вместе над [неразборчиво] это позволит весьма хорошо играть в Half-Life на всех картах семейства GeForce FX. Для меня нет сомнений, что мы достигнем этого, это всего лишь вопрос времени.



FiringSquad: То есть можно ли утверждать что эта проблема носит программный характер, и её можно устранить?

Керк: Да, не думаю, что есть какие-либо сложности с аппаратной частью.



FiringSquad: Забегая вперёд, если присмотреться к грядущим технологическим решениям, например к новым технологиям памяти, что ещё интересное вы видите в будущем для себя?

Керк: Давайте подумаем, это сложный вопрос. Отвечу так: преимущество, которое имеется уже сейчас, состоит в том, что все привыкают к ощутимо большим объёмам памяти, к большему объёму буфера кадров на графических картах, и всё это создаёт новый стиль работы. Я считаю, что то направление, в котором мы двинемся дальше, зависит от того, насколько хорошо разработчики примут то, что мы даём им сейчас.



Наши комментарии к интервью

Итак, если считать данное интервью официальной точкой зрения NVIDIA, то мы имеем вполне чёткое мнение компании по ряду вопросов. Если исключить из списка вопросы отношения с конкурентами и разработчиками софта, то останется два важных для простого потребителя вывода:

* NVIDIA не собирается останавливать проект Cg, по крайней мере, в ближайшем будущем. Cg является межплатформенным языком шейдеров высокого уровня и на данный момент результаты его работы под DirectX 9 лучше полученных с использованием HLSL (речь идёт, конечно же, о картах на GPU NVIDIA). Но поскольку NVIDIA начала активно сотрудничать с Microsoft в разработке и совершенствовании HLSL, а на поле OpenGL уже принят стандарт 1.5, включающий в себя свой язык программирования шейдеров высокого уровня, будущее Cg неопределенно. Безусловно, кроссплатформенный стандарт языка удобен для портирования программных продуктов, но такие продукты составляют лишь небольшую часть от общего числа приложений.

* Драйверы Detonator 50 будут ощутимо повышать производительность шейдеров с каждой новой версией. Это крайне оптимистичный прогноз, но первые результаты тестирования новых драйверов версий 52.10, 52.14 и 52.16 подтверждают его. В некоторых случаях прирост FPS в играх с "тяжёлым" использованием шейдеров составляет 50%. Причём смело можно утверждать, что в данном случае оптимизация не была достигнута исключительно за счёт "заточки" драйвера под определённые приложения, поскольку все синтетические бенчмарки тоже фиксируют возросшую скорость выполнения шейдерных программ.

И только на один вопрос нельзя дать однозначного ответа. На сколько NVIDIA сумеет поднять производительность GPU семейства GeForce FX, пользуясь исключительно программными средствами? Ведь возможности программистов по оптимизации драйвера имеют свои пределы, и рано или поздно производительность GeForce FX поднимется до того уровня, выше которого любая прибавка уже будет несущественной. Во многом это зависит и от Microsoft: действительно, если API DirectX 9 создавался без учёта возможностей GeForce FX, то их поддержка скорее всего появится в следующей ревизии (предположительно это будет DirectX 9.1).

В любом случае, сейчас ещё рано хоронить FX, как и делать любые другие выводы о его "финальной" производительности. Мы можем только лишь предполагать. Пользователям остаётся ждать новостей и внимательно следить за выходом новых драйверов - сейчас это актуально как никогда ранее.



С оригиналом интервью вы можете ознакомиться здесь.