Введение
Если посмотреть на описание любой современной видеокарты с поддержкой DirecX 11 или на наши сравнительные таблицы, то можно встретить такой параметр как "Количество шейдерных процессоров" или "Количество универсальных процессоров". И это количество весьма велико, особенно у старших моделей видеокарт. В сочетании с относительно высокой частотой это наводит на некоторые мысли. Понятно, что их использование связано с рядом ограничений (которых становится всё меньше и меньше c каждым новым поколением видеокарт), так на что же они способны, кроме рендеринга красивых картинок в играх?
С развитием технологий GPGPU (General-purpose graphics processing units) — использования графического процессора видеокарты для выполнения расчётов, не связанных с компьютерных графикой и массового внедрения их в практику, возникло несколько программных интерфейсов для использования этой технологии. Перечислим их:
- CUDA – первый подобный интерфейс, созданный фирмой nVidia и ориентированный исключительно на её продукцию, начиная с GeForce 8800GTX. Нашёл широчайшее применение, от фолдинга белков и поиска сигналов от инопланетных цивилизаций до взламывания шифров в системах с открытым паролем.
- AMD FireStream – «симметричный ответ» от ATI/AMD. Также любим в ВУЗах и НИИ.
- DirectCompute – Microsoft делает подобные вычисления одной из компонент DirectX 11. Одним из главным планируемых применений считается обсчёт физики частиц в играх, а также
симуляция искусственного интеллекта.
- OpenCL – открытый кроссплатформенный стандарт, поддерживающий все современные ОС и видеокарты, и позволяющий использовать CPU в случае отсутствия совместимой видеокарты. Имеется даже SDK от Intel. Годится для всего вышеперечисленного и работает практически
везде. Однако из-за более позднего внедрения, по количеству практических применений уступает той же CUDA.
Два последних (DirectCompute и OpenCL) мы и выбрали для тестов их-за возможности сравнить между собой продукцию nVidia и AMD. (и даже, забегая вперёд, Intel в качестве некоей опорной точки).
Было выбрано три бенчмарка:
- ComputeMark 2.1
Разрешение 1920*1080, полный экран, настройка normal, интерфейс – DirectCompute) итоговый результат – абстрактные «попугаи», чем больше, тем лучше. Визуально самый красивый тест, особенно – вычислительная гидродинамика и расчёты множеств Мандельброта и Жюлиа. Вероятно, надо подождать пару-тройку лет, когда в компьютерных играх будет такой огонь.
- LuxMark v 1.0
Cуть теста в рендеринге изображения методом рейтрейсинга через OpenCL. Использовалась версия для платформы Win64 (что логично, исходя из использованного стенда, на котором мы обычно тестируем видеокарты «естественным образом»). Результат также в «возрастающих попугаях». Позволяет использовать и CPU OpenCL, позволяя сравнить вычислительную мощь CPU и GPU.
- DirectCompute&OpenCL Benchmark v.0.45b
Чисто синтетический бенчмарк. Поведение этого теста в DirectCompute нам показалось артефактным, меряли только OpenCL. Итоговый результат – также в «синтетических попугаях». Тоже позволяет сравнивать CPU и GPU, но для исполнения OpenCL кода на CPU просит проставить AMD Stream SDK версии 2.0 и выше, что мы и сделали.
Также на стендовую ОС Windows 7 x64 SP1 ставилось последнее обновление DirectX и драйвера AMD (Catalyst 11.8) с поддержкой OpenCL, иначе всё вышеперечисленное нормально бы не заработало.
Для тестирования использовался стандартный стенд для тестирования видеокарт:
|