Графические процессоры NVIDIA готовы к API Vulkan. Современные графические API-интерфейсы

  • 28.06.2019

, функций , структур и констант , предоставляемых приложением (библиотекой, сервисом) или операционной системой для использования во внешних программных продуктах. Используется программистами при написании всевозможных приложений.

Энциклопедичный YouTube

  • 1 / 5

    API определяет функциональность, которую предоставляет программа (модуль , библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.

    Если программу (модуль, библиотеку) рассматривать как чёрный ящик , то API - это множество «ручек», которые доступны пользователю данного ящика и которые он может вертеть и дёргать.

    Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию - высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.

    По такому принципу построены протоколы передачи данных по Интернет . Стандартный стек протоколов (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего («нижележащего») уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему («вышележащему») уровню.

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

    API библиотеки функций и классов включает в себя описание сигнатур и семантики функций .

    Сигнатура функции

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

    Например, в языке программирования C++ простая функция однозначно опознаётся компилятором по её имени и последовательности типов её аргументов, что составляет сигнатуру функции в этом языке. Если функция является методом некоторого класса, то в сигнатуре будет участвовать и имя класса.

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

    С другой стороны, отличия в API различных операционных систем существенно затрудняют перенос приложений между платформами. Существуют различные методы обхода этой сложности - написание «промежуточных» API (API графических интерфейсов wxWidgets , , GTK и т. п.), написание библиотек, которые отображают системные вызовы одной ОС в системные вызовы другой ОС (такие среды исполнения, как Wine , cygwin и т. п.), введение стандартов кодирования в языках программирования (например, стандартная библиотека языка C), написание интерпретируемых языков, реализуемых на разных платформах ( , python , perl , php , tcl , Java и т. д.).

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

    Например: для того, чтобы увидеть в браузере строчку «Hello, world! », достаточно лишь создать HTML -документ с минимальным заголовком и простейшим телом, содержащим данную строку. Когда браузер откроет этот документ , программа-браузер передаст имя файла (или уже открытый дескриптор файла) библиотеке, обрабатывающей HTML-документы, та, в свою очередь, при помощи API операционной системы прочитает этот файл и разберётся в его устройстве, затем последовательно вызовет через API библиотеки стандартных графических примитивов операции типа «очистить окошко», «написать „Hello, world!“ выбранным шрифтом». Во время выполнения этих операций библиотека графических примитивов обратится к библиотеке оконного интерфейса с соответствующими запросами, уже эта библиотека обратится к API операционной системы, чтобы записать данные в буфер видеокарты .

    При этом практически на каждом из уровней реально существует несколько возможных альтернативных API. Например: мы могли бы писать исходный документ не на HTML, а на LaTeX , для отображения могли бы использовать любой браузер. Различные браузеры, вообще говоря, используют различные HTML-библиотеки, и, кроме того, всё это может быть собрано с использованием различных библиотек примитивов и на различных операционных системах.

    Основными сложностями существующих многоуровневых систем API, таким образом, являются:

    • Сложность портирования программного кода с одной системы API на другую (например, при смене ОС);
    • Потеря функциональности при переходе с более низкого уровня на более высокий. Грубо говоря, каждый «слой» API создаётся для облегчения выполнения некоторого стандартного набора операций. Но при этом реально затрудняется, либо становится принципиально невозможным выполнение некоторых других операций, которые предоставляет более низкий уровень API.

    Наиболее известные API

    Операционных систем

    API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.

    Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API - это множество «ручек», которые доступны пользователю данного ящика, которые он может вертеть и дёргать.

    Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию - высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.

    По такому принципу построены протоколы передачи данных по . Стандартный протокол Internet (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи пакетов бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему уровню.

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

    API библиотеки функций и классов включает в себя описание сигнатур и семантики функций .

    Application Programming Interface (API) программный интерфейс взаимодействия между системами, позволяющий:

    • Получать доступ к бизнес-сервисам предприятия
    • Обмениваться информацией между системами и приложениями
    • Упростить взаимодействие между компаниями, партнерами, разработчиками и клиентами

    Open API стратегия

    API стратегия включает в себя:

    • Разработку бизнес-продуктов на основе существующих API
    • Предоставление внутренних сервисов разработчикам
    • Модели монетизации API для построения мультиканального взаимодействия и повышения прибыли

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

    Рынок интеграционных решений развивается в контексте эволюции API - от EDI и SOAP до Web 2.0 , с которого началась эра публичных API. Число таких интерфейсов в ближайшие 3 года может вырасти более чем в 50 раза и достичь 1 миллиона. Это связано с мультиканальностью: каналы взаимодействия с клиентами должны меняться вместе с ними. Непрерывный рост количества потребителей и объема данных привел к появлению экономики API, помогающей на основе открытых интерфейсов создавать инновационные бизнес-модели использования корпоративных активов и сервисов.

    Сигнатура функции

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

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

    Например, в языке программирования Си++ простая функция однозначно опознаётся компилятором по её имени и последовательности типов её аргументов, что составляет сигнатуру функции в этом языке. Если функция является методом некоторого класса, то в сигнатуре будет учаcтвовать и имя класса.

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

    Например: для того, чтобы увидеть в браузере строчку «Hello, world!» достаточно лишь создать HTML -документ с минимальным заголовком, и простейшим телом, содержащим данную строку. Что произойдёт, когда браузер откроет этот документ ? Программа-браузер передаст имя файла (или уже открытый дескриптор файла) библиотеке, обрабатывающей HTML-документы, та, в свою очередь, при помощи API операционной системы прочитает этот файл, и разберётся в его устройстве, повызывает через API библиотеки стандартных графических примитивов операции типа «очистить окошко», «написать выбранным шрифтом Hello, world!», при этих операциях библиотека графических примитивов обратится к библиотеке оконного интерфейса с соответствующими запросами, уже эта библиотека обратится к API операционной системы с запросами вида «а положи-ка мне в буфер видеокарты вот это».

    При этом практически на каждом из уровней реально существует несколько возможных альтернативных API. Например: мы могли бы писать исходный документ не на HTML , а на LaTeX, для отображения могли бы использовать любой браузер. Различные браузеры, вообще говоря, используют различные HTML-библиотеки, и, кроме того, всё это может быть (вообще говоря) собрано с использованием различных библиотек примитивов и на различных операционных системах.

    Основными сложностями существующих многоуровневых систем API, таким образом, являются:

    • Сложность портирования программного кода с одной системы API на другую (например, при смене ОС);
    • Потеря функциональности при переходе с более низкого уровня на более высокий. Грубо говоря, каждый «слой» API создаётся для облегчения выполнения некоторого стандартного набора операций. Но при этом реально затрудняется, либо становится принципиально невозможным выполнение некоторых других операций, которые предоставляет более низкий уровень API.

    Основные типы API

    Внутренние API

    • Доступ к API предоставляется только внутренним разработчикам
    • Приложения нацелены на сотрудников предприятия

    Бизнес-драйверы:

    • Консистентность разработки
    • Снижение затрат
    • Повышение эффективности разработки

    Партнерские API

    • API доступны только ограниченному набору бизнес-партнеров
    • Приложения предназначены для конечных потребителей и для бизнес-пользователей

    Бизнес-драйверы:

    • Автоматизация процесса разработки
    • Развитие партнерских отношений
    • Оптимизация процесса взаимодействия с партнерами

    Публичные API

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

    Бизнес-драйверы:

    • Разработка новых сервисов
    • Развитие экосистемы
    • Мультиканальное взаимодействие

    Наиболее известные API

    API операционных систем

    API графических интерфейсов

    • Direct3D (часть DirectX)
    • DirectDraw (часть DirectX)

    Представлен новый интерфейс программирования графических приложений Vulkan. У владельцев графических процессоров GeForce уже сегодня есть все необходимое, чтобы ощутить преимущества API Vulkan. Новый инструмент обеспечит разработчикам лучший контроль над выполнением графических команд и более высокую производительность для более широкого круга устройств.

    Поддержка Vulkan компанией NVIDIA непосредственно с момента его выпуска, не только на разных платформах, но и в современных играх, таких как The Talos Principle, привлекла внимание самых именитых экспертов индустрии.

    “Возможность сыграть в The Talos Principle в день выпуска API – это невероятное достижение, - говорит Джон Педди (Jon Peddie), президент Jon Peddie Research. - Мультиплатформенная совместимость и полноценная поддержка драйверов для разных операционных систем, которую обеспечила NVIDIA, подтверждает ведущую роль компании в разработке API Vulkan”.

    Что такое Vulkan?

    Vulkan – это низкоуровневый API, который предоставляет разработчикам прямой доступ к GPU для полного контроля над его работой. Отличаясь более простыми и легкими драйверами, Vulkan демонстрирует меньшие задержки и меньшие накладные расходы при обработке графических команд (overhead) по сравнению с традиционными API OpenGL и Direct3D. Vulkan также отличается эффективной поддержкой многопоточности и позволяет многоядерным центральным процессорам более эффективно загружать графический конвейер, поднимая производительность существующего оборудования на новый уровень.

    Vulkan – это первый низкоуровневый API нового поколения, который является кроссплатформенным. Разработчики могут создавать приложения для ПК, мобильных и встроенных устройств, работающих под различными операционными системами. Как и OpenGL, Vulkan – это открытый бесплатный стандарт, доступный для любой платформы. Однако NVIDIA продолжит работу над OpenGL и OpenGL ES, чтобы поддержать тех разработчиков, которые предпочитают использовать традиционные API.

    Кто стоит за Vulkan?

    Vulkan был создан организацией Khronos Group, которая объединяет широкий круг различных компаний из индустрии программного и аппаратного обеспечения, включая NVIDIA, с целью создания открытого, не требующего выплаты лицензионных отчислений API, предназначенного для создания и воспроизведения различного контента на широком спектре платформ и устройств. Мы гордимся тем, что сыграли ключевую роль в создании API Vulkan. И намерены активно помогать разработчикам приложений в работе с Vulkan, чтобы они могли получить максимум от графических процессоров NVIDIA.

    Преимущества Vulkan для пользователей

    Vulkan – это отличное решение для разработчиков. Новый API снижает затраты на портирование игр и открывает новые рыночные возможности для приложений на разных платформах. Важно, что драйверы NVIDIA для Windows, Linux и Android, позволяющие получить максимум возможностей от Vulkan, уже доступны. Подробнее смотрите на странице драйверов Vulkan.

    Преимущества для геймеров–владельцев графических процессоров GeForce:

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

    · NVIDIA предоставляет драйверы для Vulkan для всех видеокарт GeForce на базе архитектур Kepler и Maxwell, работающих под ОС Windows (Windows 7 и выше) и Linux.

    · Владельцы GeForce смогут первыми сыграть в Vulkan-версию игры The Talos Principle – головоломку от Croteam, которая стала доступна вчера. "Мы и раньше успешно работали с командой NVIDIA в плане драйверной поддержки, но я был впечатлен их работой над Vulkan, - говорит старший программист Croteam Дин Секулик (Dean Sekuliuc). – NVIDIA оперативно предоставила нам новейшие бета-драйверы, чтобы мы могли быстро внедрить новый API в Serious Engine и сделать The Talos Principle одной из первых игр с поддержкой Vulkan. Отличная работа!"

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

    На WWDC 2014 всех нас ждал сюрприз: анонс нового графического 3D API под названием Metal. Но на этот раз мы имеем дело не с новым высокоуровневым API поверх OpenGL ES (как было в случае с Scene Kit), а с новым низкоуровневым API для рендеринга и вычислений, которое может служить заменой OpenGL в играх. По словам Apple, Metal может быть до 10 раз быстрее, чем OpenGL ES (точнее говоря - может генерировать вызовы отрисовки [draw calls ; передача данных на GPU] в 10 раз быстрее) и доступен только на устройствах с iOS и процессором последнего поколения A7.

    Этот анонс спровоцировал новую волну обсуждения и споров насчет необходимости появления новых графических API, которые должны (или не должны - кто знает) заменить OpenGL. Предлагаемый вашему вниманию пост не намерен участвовать в этой дискуссии – его целью является разъяснение того, чем все-таки Metal отличается от OpenGL ES, чьей заменой он является. Чтобы понять, что такого особенного (или же наоборот, ничего особенного) есть в Metal API, нам придется немного заглянуть под «капот» графических API и GPU.

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

    Для простого улучшения в работе GPU этот процесс стоит запустить асинхронно; тогда GPU не будет блокировать CPU и вызовы API будут возвращать результат почти мгновенно. В этом случае GPU возможно не будет использоваться на все 100%, поскольку ему возможно придется ждать от CPU новых вызовов рендеринга (= начала кадра), в то время как вызовы остальных команд будут ждать завершения предыдущих. Это становится причиной того, почему большинство графических драйверов собирают все вызовы отрисовки (и другие задачи, которые нужно будет выполнить на GPU - например, изменение состояний) для отрисовки всего кадра перед отправкой его на GPU. Эти буферизованные команды будут затем отосланы обратно после того, как будет получена команда для отрисовки следующего кадра, благодаря чему GPU будет использоваться настолько эффективно, насколько это возможно. Конечно, это добавит один кадр задержки: пока CPU будет создавать задание для текущего фрейма, прошлый фрейм будет рендериться на GPU. На самом деле, можно буферизовать больше одного кадра и таким образом добиваться большей частоты смены кадров - за счет еще большей задержки.

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

    Итак, мы узнали как минимум две важные вещи о том, что происходит за сценой совместной работы OpenGL с современными GPU: изменение состояний может быть сложным, если требуется новая комбинация состояний и все операции на GPU будут задержаны на некоторое количество времени.

    В приложении, один поток актуальных команд для одного кадра, которые надо выполнить на GPU, формируется и отправляется на GPU сразу весь за один раз (на самом деле все немного сложнее, но давайте не будет пока углубляться).

    Подробнее прочитать о том, как работает современный пайплайн компьютерной графики вы можете в серии статей Fabian Giesens - “A trip down the Graphics Pipeline “.

    Почему у другой программной модели могут быть преимущества
    Как вы уже увидели, от программиста спрятано огромное количество сложностей и хитрых трюков (их наверняка еще больше, чем я упомянул), которые прячут то, что непосредственно происходит. Одни из них делают жизнь простого разработчика проще, другие - заставляют его искать способы обхитрить драйвер или «копать» в сторону побочных эффектов работы вызовов API.

    Некоторые графические API сегодня пытаются убрать большую часть этих трюков, раскрывая скрываемую ими «запутанность» – и в некоторых случаях оставляя на волю программы решение всех связанных проблем. В этом направлении шли графические API PS3, в нем же идет AMD со своим Mantle, туда же собираются грядущие DirectX 12 и Apple Metal.

    Что же изменилось?
    Буферы команд теперь открыты и приложение должно заполнять эти буферы и отправлять их в очередь команд, которая будет выполнять эти буферы в заданном порядке на GPI - таким образом приложение будет иметь полный контроль над заданием, отправляемым на GPU, и определять, сколько кадров задержки необходимо добавить (добавляя задержку, но при этом увеличивая степень используемости GPU). Буферизация команд на GPU и отправка их асинхронно в следующий фрейм должна быть реализована самим приложением.

    Поскольку становится ясно, что эти буферы не будут выполняться прямо сразу (то есть во время создания) и что множественные буферы могут быть созданы и добавлены в очередь на выполнение в определенном порядке, приложение может позволить себе их построение в нескольких потоках в параллели. Также для программиста становится более очевидным, какие из результатов вычислений уже доступны, а какие - нет.

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

    Другой плюс от нового API в том, что оно не обязано нести груз совместимости с предыдущими версиями и поэтому не будет таким консервативным.

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

    И как это в 10 раз быстрее?
    Каждый вызов отрисовки стоит сколько-то времени на CPU и сколько-то времени на GPU. Metal API уменьшает время, затрачиваемое CPU, благодаря упрощению контроля за состояниями и благодаря этому уменьшению числу проверок на ошибки от драйвера на правильность комбинаций состояний. Еще помогает предварительное вычисление состояний: можно не просто выполнять проверку на ошибки во время билда, но и само изменения состояния потребует меньшее количество вызовов API. Возможность параллельного построения буферов команд еще больше увеличивает число вызовов отрисовки в том случае, если приложение привязано к CPU.

    А вот рендеринг на GPU с другой стороны быстрее не становится, приложение которое делает совсем немного вызовов отрисовки для больших мешей (меш - часть модели, состоящая из вершин объекта] не получит никакого преимущества от перехода на Metal.

    Может ли то же самое быть сделано на OpenGL?
    На GDC 14 была отличная презентация “Approaching Zero Driver Overhead ” за авторством Cass Everitt, John McDonald, Graham Sellers и Tim Foley. Основной ее идеей было уменьшение работы драйвера в OpenGL при помощи увеличения количества работы, производимым вызовов отрисовки, и использованием новых объектов GL и меньшего количества числа вызовов GL для повышения эффективности.

    Эта и другие идеи потребуют дальнейшего расширения OpenGL и появления новых версий этого API, но многое из этого можно будет перенести в OpenGL ES. Что мы потеряем - так это возможность прямого управления командными буферами, со всеми своими «за» и «против».

    Какова вероятность увидеть это в будущем? Из-за поддержки обратной совместимости, остается надеяться только на появление некоего набора функций, который можно будет назвать «современное ядро», но и его скорее всего придется сделать совместимым со всем вплоть до оригинальной функции glBegin(). Это ограничение будет действовать на протяжении всего потенциального будущего OpenGL и станет пределом его эволюции, делая альтернативы вроде Metal API все более предпочитаемыми…

    Теги:

    • Metal API
    • Apple
    • opengl
    Добавить метки

    API (Application Programming Interface) предоставляют разработчикам аппаратного и программного обеспечения средства создания драйверов и программ, работающих быстрее на большом количестве платформ. Программные драйверы разрабатываются для взаимодействия непосредственно с API, а не с операционной системой и программным обеспечением.

    В настоящее время существует два графических API - OpenGL (компания SGI) и Direct 3D (Microsoft).

    Хотя производители видеоадаптеров поддерживают стандарт OpenGL, компания Microsoft предоставляет поддержку Direct3D для более комплексного API, называемого DirectX.

    DirectX 9 и выше являются последними версиями программного интерфейса, расширившего поддержку трехмерной графики и обеспечившего улучшенные игровые возможности. Для получения дополнительной информации относительно DirectX или загрузки его по-следней версии обратитесь на Web-узел DirectX компании Microsoft: www.microsoft.com/directx.

    CrossFire или sli

    В ответ на разработку и продвижение старой-новой технологии SLI (МК №30(357) 2005) компанией NVIDIA, главный конкурент на рынке видеоускорителей, компания ATI, разработала и внедрила свое аналогичное решение - технологию CrossFire. Так же, как и SLI от NVIDIA, она позволяет объединять ресурсы двух видеокарт в одном компьютере между собой, повышая производительность видеоподсистемы. Технология CrossFire в корне отличается от SLI, соответственно, имеет мало общего с конкурентом. Отдавая предпочтение определенным преимуществам той или иной технологии, в недалеком будущем пользователи будут выбирать между NVIDIA и ATI не только исходя из годами сформировавшихся мнений о брэндах, но и базируясь на фактах о технологиях SLI или CrossFire.

    Техническая база

    По аналогии с NVIDIA, для размещения двух видеокарт ATI в одной «упряжке» потребуется материнская плата с чипсетом того же производителя (планируется, что поддерживать CrossFire также будет чипсет Intel i975X), с двумя слотами PCI Express. Как и SLI, CrossFire требовательна к системным ресурсам, что потребует качественного БП. Рассмотрим требования к системе более детально.

    Материнская плата. Мать должна быть основана на чипсете ATI Radeon Xpress 200 CrossFire . Данные платы выпускаются как для процессоров AMD Sempron/Athlon 64, так и для Intel Pentium 4/Celeron. Так что ATI теперь будет зарабатывать и на чипсетах, производство которых ранее не достигало больших масштабов.

    Видеокарты. Для работы технологии необходима ведущая карта CrossFire master (детальнее об этом - ниже) и любая другая видеокарта на базе чипа из того же семейства, что и ведущая карточка. Ведущую карточку от других отличает наличие разъема DMS–59 (соединяемого с DVI на ведомой карте), чипа CrossFire, ну и, конечно же, стоимость.

    Блок питания. Для содержания такого серьезного комплекта понадобится БП с мощностью 400–450 Вт минимум, желательно более мощный.

    Ну вот, собственно, и все что нужно для сборки видеосистемы CrossFire . Как вы заметили, ATI более гибко относится к своим покупателям, не привязывая их, как землю к колхозу, к обязательной покупке двух карточек с одинаковым чипом от одного производителя. Привязка осуществляется только к семейству видеочипа, на котором основан ускоритель. То есть, можно приобрести ведущий видеоускоритель Radeon X800 и ведомый Radeon X800 XL. Master Radeon X800 будет совместим с карточкой любого производителя на базе любой модификации чипа X800. Это безусловное преимущество над конкурентом - если брать один ускоритель, с перспективой дальнейшей модернизации путем доустановки еще одной видеокарты, то не придется рыскать в поисках карточки какого-то определенного производителя на базе конкретного чипа. На данный момент технологию CrossFire поддерживают видеокарты на базе X800 и X850, а также новинки на базе X1xxx.