Введение
Любой опытный пользователь понимает, что поставленную задачу можно решить с одинаковым успехом разными способами. Даже если все они начинаются с “1. Купите Adobe’s Creative Suite…” Такие инструменты как Photoshop, Premiere Pro и After Effects продолжают оставаться наиболее используемыми в арсенале многих профессионалов и опытных любителей. Но когда ваше время – это деньги, скорость работы приложений Creative Suite может означать, заработали вы или нет. И даже если мы говорим про обработку домашнего видео с помощью Premiere и After Effects, кто хотел бы тратить в ожидании результата часы вместо минут?
Наш опыт показал, что это не преувеличение. По мере того как Adobe встраивает поддержку обработки данных на GPU в приложениях Creative Suite и оптимизирует их для многопочных вычислений, они всё более полно используют ресурсы современных ПК. Или, говоря проще, Adobe CS5 на сегодняшнем компьютере быстрее Adobe CS2, работающего на машине пятилетней давности. Очевидно, не правда ли? Поэтому мы будем оценивать полезность более вероятных изменений – апгрейда компонентов рабочей станции, в том числе и апгрейда Adobe CS4 на Adobe CS5.
В конце концов, именно переход с предыдущей версии на Adobe CS5 является самым значительным шагом, предпринятым Adobe в последние годы. Помимо просто увеличения функциональности каждого приложения, именно поддержка 64-битных операционных систем и операций позволит приложениям выигрывать от использования больших объёмов памяти. Ну и анонсированная поддержка вычислений на графических чипах – полезная функция, которую, пока что, мы редко встречаем в офисных и мультимедиа редакторах.
Итак, вот наш сценарий. Допустим, у вас есть Adobe CS4, и вы рассматриваете переход на Adobe CS5 как способ повысить эффективность работы, сократив время ожидания. Мы протестируем три основных способа ускорения обработки:
- Переход с Adobe CS4 на Adobe CS5. Предоставляет преимущества перехода с 32-битного на 64-битный код и адресацию более чем 4 гигабайт оперативной памяти;
- Увеличение количества потоков на процессоре. Как благодаря увеличению количества физических ядер, так и благодаря использованию технологии Hyper-Threading (HT) от Intel;
- Использование CUDA. На данный момент, поддержка аппаратного ускорения с помощью вычислительной мощности графических процессоров только начинает распространяться за пределы игровых приложений. Но Adobe уже начала включать поддержку платформы nVidia CUDA. Надеемся, что скоро появится поддержка OpenCL и/или DirectCompute, но пока мы изучим возможности CUDA.
Может ли только переход с Adobe CS4 на Adobe CS5 принести достаточный эффект, чтобы не потребовался апгрейд системы? Может ли сочетание Adobe CS5 и CUDA перевесить по эффективности замену процессора, которая обойдётся не меньше чем в $500? Давайте выясним.
Ускорение Adobe Adobe CS5 движком Mercury Playback Engine
Мы протестировали три приложения из набора Creative Suite: After Effects, Photoshop и Premiere Pro, хотя самые значительные изменения коснулись Premiere Pro CS5 – приложение получило новый механизм воспроизведения Mercury Playback Engine, который основан на 64-битном, оптимизированном для многопоточной обработки коде, и готов использовать ресурсы видеокарт nVidia (технология CUDA) для аппаратного ускорения. Да, пока что движок Mercury влияет не на всё приложение, но ускоряются многие эффекты и операции. Например, ускорение будет в новом фильтре Ultra keyer для хромакеинга, эффекте proc amp, фильтре размытия по Гауссу (Gaussian blur), в фильтре размытия краёв (edge feathering), flips, фильтре резкости (sharpening) и функциях цветокоррекции – то есть в большинство популярных эффектов использован движок Mercury. Как и cross dissolve, dip to black, и dip to white из арсенала эффекта переходов.
Adobe обещает, что обработка крупных проектов может ускориться в 10 раз благодаря Mercury. nVidia говорит о “росте производительности до 70 раз” применительно к визуальной обработке. Хотя обещания Adobe кажутся нам более правдоподобными, некоторые результаты тестов производительности при вычислении на графических процессорах (GPGPU), которые мы получали ранее, позволяют допустить даже такую прибавку в скорости.
nVidia утверждает, что благодаря тому, что Mercury Playback Engine перекладывает львиную долю вычислений на CUDA, “центральный процессор может быть свободным для выполнения фоновых задач, системных задач или процессов приложений”. В это мы cможем поверить, только если нас убедят объективные результаты тестов. Пока что, мы ожидаем прироста производительности благодаря CUDA, но не чудесного снижения нагрузки на центральный процессор.
Включить Mercury Playback Engine довольно просто. Зайдите в Project -> Project Settings -> General. В закладке Video Rendering and Playback, найдите опцию Renderer и выберите режим работы Mercury.
Взлом Adobe CS5: аппаратное ускорение на недорогих видеокартах
Мы можем только догадываться, какие события или отношения между Adobe и nVidia привели к такому результату, но вот факты: на момент выпуска Adobe CS5 в апреле 2010, аппаратное ускорение CUDA работало только со следующими видеокартами:
- Quadro FX 5800;
- Quadro FX 4800;
- Quadro FX 3800;
- Quadro CX;
- GeForce GTX 285.
Из этого списка становится ясно, что ограничения заложены в драйверах, а не в самих видеокартах. Единственная существенная разница между GeForce GTX 285 и GeForce GTX 280 состоит в том, что первая производится по 55 нм, а вторая по 65 нм техпроцессу. Гипотеза об искусственном ограничении совместимости только с дорогим решением GeForce GTX 285 подтверждается тем, что GTX 285 была выпущена в начале 2009, то есть за год до Adobe CS5.
Как вы помните, GeForce GTX 470 и GeForce 480 поступили в продажу только в апреле, то есть почти одновременно с началом продаж Adobe CS5. Скорее всего, Adobe не хватило времени для тестов совместимости 400-й серии GTX с Adobe CS5, и поэтому список поддерживаемых игровых карт был ограничен единственной карточкой предыдущего поколения, выполненной по 55 нм техпроцессу. Кроме нее поддерживались только Quadro, которые предназначены для профессиональных пользователей и приносят nVidia значительно больше дохода за каждый проданный экземпляр. Однако, с тех пор появился патч 5.0.2, который добавил в список GeForce GTX 470, Quadro 4000 и Quadro 5000.
Прошло менее месяца с момента выпуска Adobe CS5 до момента появления в сети руководства по снятию ограничения совместимости, позволяющего использовать аппаратное ускорение в Windows практически с любой картой GeForce с поддержкой CUDA. Мы проверили его действенность на редакционных GeForce GTX 470 и GeForce 480, и способ замечательно сработал в обоих случаях. Чтобы сэкономить вам время, мы приводим его описание:
1. Найдите у себя в системе файл GPUsniffer.exe. Скорее всего, он находится по адресу C:Program FilesAdobeAdobe Premiere Pro Adobe CS5GPUSniffer.exe. Теперь через пункт “Выполнить” меню “Пуск” запустите командой CMD консоль и в ней запустите GPUSniffer.exe. Вы увидите название вашей графической карты в пункте “CUDA device details”. Скопируйте его в точности, включая символы, разделители и пробелы.
2. Запустите “Блокнот” с администраторскими правами: меню “Пуск”, “Программы”, “Стандартные”, наведите на “Блокнот”, нажмите правую кнопку мыши и выберите “Запуск от имени администратора”. В блокноте откройте файл cuda_supported_cards.txt, который лежит в той же папке, что и GPUSniffer.exe. Добавьте название вашей видеокарты в короткий список поддерживаемых карт nVidia и сохраните файл в том же месте с тем же названием.
3. Правым щелчком мыши на рабочем столе вызовите меню и выберите nVidia Control Panel. В пункте Manage 3D Settings, найдите закладку Program Settings. В выпадающем списке выберите Adobe Premiere CS4. (Да, даже если у вас установлен Adobe CS5 – либо драйвер не отличает их, либо это опечатка, но так или иначе: мы проверили и все работает!) В списке “Specify the settings for this program” прокрутите до “Multi-display/mixed-GPU acceleration” и выберите Compatibility performance mode. И нажмите Apply.
На момент написания статьи nVidia расширила список поддерживаемых Adobe CS5 настольных графических карт:
- Quadro 5000;
- Quadro 4000;
- Quadro FX 5800;
- Quadro FX 4800;
- Quadro FX 4800 Mac;
- Quadro FX 3800;
- GeForce GTX 470;
- GeForce GTX 285.
И, как вы понимаете, если вы захотите использовать графическую карту, не перечисленную в списке выше, официальная техподдержка будет вам недоступна после применения этого рецепта “адаптирования” CUDA/Adobe CS5.
Тестовая конфигурация для проверки ускорения Adobe CS5
Тестовая система | |
Материнская плата | Gigabyte X58A-UD7, LGA 1366, BIOS F7 |
Процессор | Intel Core i7-980X Extreme (Gulftown), шесть ядер, 32 нм, 12 МБ кэша L3 |
Система охлаждения процессора | Thermalright Ultra 120 eXtreme |
Память | OCZ Gold-Series DDR3-1333, трёхканальная, 3 x 4 ГБ, 1333 MT/s, CAS 9-9-9-20-1T |
Графическая карта | Sparkle GeForce GTX 480 (SXX4801536D5-NM), 1.5 ГБ GDDR5, 700/3696 МГц процессор/память |
Жесткие диски | Системный диск: твердотельный Intel X25-M (G2) 160 ГБайт Диск проекта: OCZ RevoDrive 120 ГБайт PCIe x4 |
Операционная система и системные драйверы | |
Операционная система | Microsoft Windows 7 Ultimate 64-bit |
Версия DirectX | DirectX 11 |
Видео драйверы | Nvidia GeForce 258.96 WHQL (7/19/2010) |
Приложения | |
Adobe After Effects | CS4 и CS5; специально разработанный тест, проект SD качества, с тремя picture-in-picture вставками, источник в разрешении 720p |
Adobe Photoshop | CS5; тестовое изображение 20K x 20K |
Digital Anarchy | Beauty Box Photo |
Adobe Premiere Pro | CS4 и CS5; специально разработанный тест, 1280x720p, 59.94 кадров/с видео, снятое Panasonic DVCPro100, HVX-200 на P2, Render to Work Area |
Adobe Media Encoder | Специально разработанный тест, перекодировка проекта Premiere Pro в H.264 для Blu-ray |
Мы выбрали материнскую плату Gigabyte из-за её способности ограничивать количество включенных ядер из BIOS. Мы решили проводить тесты с включенными двумя, четырьмя и всеми шестью ядрами. В каждом случае мы проводили тесты с задействованной и отключенной технологией Hyper-Threading, то есть в результате у нас получилось шесть вариантов многопоточности. Мы считаем, что это даст возможность оценить полезность использования технологии Hyper-Threading при работе с Adobe CS5.
Мы предполагаем, что большинство пользователей Creative Suite вряд ли станут собирать рабочую станцию на основе Core i3 и поэтому оставили функцию Turbo Boost включенной во всех тестах. Мы измеряли степень загрузки процессора через десять секунд после начала теста, и не менее двух минут в течение теста. Максимальные и минимальные значения загрузки мы учитывали только в том случае, если они повторялись хотя бы дважды.
Кроме того, использование в тестовом стенде 12 ГБайт оперативной памяти важно потому, что одной из основных причин перехода с Adobe CS4 на Adobe CS5 является возможность использовать более чем 4 ГБайт оперативной памяти благодаря 64-битной адресации. Во время тестов Adobe CS4 в системе также стояло 12 ГБайт памяти, но приложения обращались только к 4 гигабайтам из них. Это несколько усложняет прямое сравнение эффективности приложений, но мы решили, что важнее отразить реалистичный сценарий. Если вы собираетесь потратиться на покупку Adobe CS5, то, скорее всего, вы сможете позволить себе увеличить объём оперативной памяти, и трёхканальные 12 ГБайт наборы DDR3 – самые привлекательные в сегменте высокопроизводительных систем.
Мы долго выбирали, какие жёсткие диски использовать. Окончательная конфигурация выглядит так: общепризнанно удачный SSD G2 от Intel в качестве системного, на нем стоит ОС и приложения, а все данные и проекты – на OCZ RevoDrive.
Ускорение After Effects Adobe CS4
Первой задачей этой статьи было продолжить тесты с того места, на котором мы остановились в статье о процессорах Intel серии Xeon 5600. В ней мы начали с 12 потоков вычисления на процессоре архитектуры Gulftown и закончили тестированием 24 потоков на паре Xeon X5680. Неожиданно обнаружилось, что скорость обработки данных падала с ростом производительности системы.
“After Effects Adobe CS4 способна обращаться только к 4 ГБайт оперативной памяти – трети того, что установлено в системе,”- писали мы в той статье. “По мере добавления вычислительных ресурсов, все меньше и меньше памяти остается доступно каждому из процессоров – логическому или физическому. В результате – рост обращений к виртуальной памяти, находящейся на твердотельном носителе, быстром, конечно, но несравненно более медленном, чем трехканальная память DDR3.”
Мы решили продолжать, но не в сторону наращивания мощностей, в сектор высокопроизводительных рабочих станций, а в сторону их ограничения – в сектор мощных потребительских ПК, таких как шестиядерный Core i7-980X от Intel и до самых массовых, роль которых исполнит тот же процессор с включенными только двумя ядрами. В таком режиме он достаточно точно представляет вычислительные мощности таких процессоров, как Athlon II от AMD.
В той статье мы специально включили функцию мультипоточных вычислений в After Effects Adobe CS5 – так скорость обработки была наивысшей. Когда она задействована, After Effects обрабатывает разные кадры отдельными ядрами процессора. Без неё все ядра вместе обрабатывают каждый отдельный кадр от начала до конца. В наших тестах мы опробовали оба варианта (с включенной поддержкой мультипоточности и без), чтобы выяснить эффект от добавления каждого нового ядра/потока вычислений. Заранее поясним для наших русскоязычных читателей, что “w/o MP” на графиках– “без поддержки мультипоточности”.
Как вы видите, After Effects Adobe CS4 явно не нравится Hyper-Threading. Во всех наших тестах, когда мультипоточность и HT были выключены, After Effects загружал процессор на десять-двадцать с чем-то процентов, но все чётные потоки вычислений, то есть те, которые работали на логических ядрах, созданных HT, были едва задействованы. Если были задействованы только два физических ядра (то есть 4 логических), чётные потоки были загружены чуть больше, но по-прежнему, гораздо слабее, чем при включенной функции многопоточности в приложении.
Как соотнести загрузку процессора с практической эффективностью? Данные дают однозначный ответ: After Effects Adobe CS4 гораздо эффективнее справляется с задачами, если функция Hyper-Threading отключена, иногда до двух раз эффективнее. Это значит что, оптимальным способом Adobe CS4 будет работать при отключенном HT и включенным многопоточным вычислением. За исключением тех случаев, когда вы работаете в каком-то другом приложении, пока AE производит обработку. Тогда, включение обеих функций несколько замедлит работу AE, но в то же время оставит 20-30% вычислительной мощности для работы других приложений.
Так что многопоточные вычисления должны быть включены в любом случае. А что насчет выигрыша от дополнительных ядер? Без HT мы можем наблюдать довольно скромный прирост по мере увеличения потоков обработки. Например, мы не наблюдали практически никакого прироста от 6 включенных ядер по сравнению с четырьмя. Шесть ядер всего на 29% быстрее двух. Самое неприятное состоит в том, что два физических ядра (без HT, то есть 2 потока вычислений) были на 7,5% быстрее 12 параллельных потоков вычисления. Просто After Effects Adobe CS4 настолько плохо оптимизирован для Hyper-Threading.
Ускорение After Effects Adobe CS5
Вспомните, лучшее время, за которое After Effects Adobe CS4 выполнил наш тест, составило 2:55 – при использовании всех шести ядер, с включенной функцией многопоточности и отключенным Hyper-Threading. При этом процессор был загружен почти полностью. В After Effects Adobe CS5 такое время – едва ли ни наихудший результат в нашем тесте (разница между 2:55 и 3:00 почти незаметна), и этот результат достигнут на двух ядрах, без включения поддержки многопоточности, без Hyper-Threading. И, что интересно, загрузка процессора находилась в пределах 66-80 процентов.
Как видно, Adobe CS5 не имеет проблем Adobe CS4 при работе с Hyper-Threading. Очевидно, что HT приносит гораздо больше пользы, когда в системе немного ядер, но главное, нет никакого замедления работы. И странные скачки производительности при включенных HT и поддержке многопоточности тоже побеждены. Скорее всего, владельцы двухьядерных процессоров Intel не побегут покупать новый Adobe CS5, потому что выигрыш от использования Hyper-Threading не слишком значителен. Да, он есть, но если вы хотите поднять производительность системы на заметную величину, необходима замена процессора на другой, с большим количеством ядер.
Странности становятся заметны при изучении графиков загруженности процессора. В каждом тесте наблюдалась одинаковая картина: чем меньше ядер задействовано, тем сильнее было загружено каждое. Это напомнило нам историю о зайце и черепахе, “Я самый быстрый, у меня 12 потоков параллельных вычислений, так что я не буду слишком уж напрягаться”. Наше первое предположение состояло в том, что повторилась ситуация, описанная в предыдущей статье, всё больше ядер работают со всё меньшим (в расчете на каждое) объемом оперативной памяти, даже не смотря на то, что мы увеличили ее объем с 4 до 12 доступных ГБайт. Однако мы получили сообщение от сотрудника отдела технического маркетинга nVidia Шона Килбрайда, с описанием причин этого явления:
“Во многом это связано с задержками. Кодирование видеопотока состоит из большого количества последовательных операций, и вам нужен результат одного действия, прежде чем вы сможете начать следующее. Главная причина – необходимость создания ключевого кадра, который содержит информацию обо всей картинке. Все последующие кадры содержат только информацию об изменениях относительно последнего ключевого кадра. Если изменения слишком велики, создается новый ключевой кадр.
Так что никакой из процессов не может заметно оторваться и уйти вперед, все они опираются на один ключевой кадр. Теоретически, кодирование несжатого видео может происходить на многоядерном процессоре быстрее прямо пропорционально количеству ядер, ведь в несжатом видео каждый кадр – ключевой. Но в реальности это невозможно из-за ограничений скорости ввода-вывода систем хранения информации – размер файлов будет очень большим”.
Но, все же, мы очень счастливы увидеть, что многопоточная система обработки данных успешно распределяет нагрузку в многоядерном процессоре и значительно сокращает время кодирования. В общем, наша рекомендация звучит следующим образом: для оптимального соотношения цена/скорость при работе с AE Adobe CS5 нужен четырёхядерный процессор с HT и включение поддержки многопоточных вычислений. Это позволит использовать максимум вычислительной мощности процессора, оставляя в то же время достаточно для параллельных задач.
Мы не смогли протестировать эффект от аппаратного ускорения CUDA, потому что Adobe пока что не встроил его поддержку в After Effects. В него встроена поддержка ускорения OpenGL, как и во все приложения CS, но это не то же самое, что поддержка вычислений на графическом процессоре, которую мы хотели бы протестировать.
Ускорение Photoshop Adobe CS5: масштабирование и разворот
Photoshop был одним из первых приложений, воспользовавшимся преимуществами многопоточных вычислений при переходе с одноядерных на двуядерные процессоры. И естественным вопросом является, удалось ли этому приложению ещё больше масштабироваться с появлением ещё более многоядерных процессоров. Ещё мы решили проверить, какой эффект на работу окажет включение или отключение ускорения OpenGL в настройках видеокарты. Это конечно несколько выпадает из общего направления тестирования, но всё же показывает практическое влияние железа в деле оптимизации Adobe Creative Suite и, следовательно, скорости и удобства работы. Кроме того, этот тест ответит на вопрос некоторых энтузиастов: “Неужели перенос вычислений на GPU дает столь значительный скачок производительности по сравнению с сегодняшними системами ускорения?”
В тестировании Photoshop, мы использовали фотоколлаж, состоящий из одного изображения размером 20.000×20.000 пикселей (1.12 ГБайт) и интерполировали его до размера 50.000 x 50.000 пикселей (6.98 ГБайт). По нашим расчетам, эта операция потребует почти весь объём оперативной памяти, но не превысит его и не потребует обращений к файлу подкачки. Затем мы выполнили операцию “поворот” на 45 градусов с получившимся изображением. Значения загрузки процессора, приведенные ниже, повторились в этих двух тестах и являются вполне показательными.
Результаты и методика этого теста не совсем похожа на часто встречающиеся в жизни задачи, но точно отражает их характер. Photoshop хорошо оптимизирован для интерполяции, но размеры изображения были выбраны таким образом, чтобы сделать обработку достаточно долгой для измерения и сравнения результатов. На практике гораздо чаще приходится использовать интерполяцию для пакета изображений меньшего разрешения, например изменения размеров пары десятков изображений на 20% одной командой. С другой стороны, разрешение сенсоров фотоаппаров постоянно растёт, размеры изображений увеличиваются, в Photoshop обрабатывают не только сами фото, но и их интерполированные варианты для печати на огромный формат.
В ситуации, похожей на тест для оценки влияния HT и поддержки многопотоковых вычислений на скорость обработки в After Effects Adobe CS4, можно заметить, что включение аппаратного ускорения OpenGL при отключенном Hyper-Threading несколько замедляет вычисления.
Наш тестовый стенд показал странный скачок производительности при задействованных 4 ядрах, без HT и с включенным ускорением OpenGL, но в остальном разница в скорости обработки между двух- и четырехядерными конфигурациями отличаются всего на пару секунд. Заметный рост скорости мы увидели лишь в 12-потоковом (6 ядер, включен HT) варианте конфигурации.
При выполнении поворота изображения, Hyper-Threading иногда замедляет работу. Но 4 ядра с включенным HT и OpenGL оптимальны с точки зрения цена/эффективность.
И снова загрузка процессора удручающе низка. Только на двухъядерном процессоре Photoshop использует ресурсы почти на полную катушку.
Ускорение Photoshop Adobe CS5: CUDA
К громадному сожалению, Adobe Photoshop CS5, как и его предшественник, не поддерживает CUDA! Мы уже решили, что оказываемся в той же ситуации, что и с After Effects… Но потом вспомнили, что CUDA умеют использовать некоторые плагины. Мы выбрали для тестов Beauty Box Photo от Digital Anarchy и не разочаровались.
Результат работы инструмента сглаживания кожи выглядит незаметно, но омолаживает людей на фотографии – и всего в несколько движений мыши. Неудивительно, что это требует довольно серьезных объемов обработки. Мы решили загрузить Photoshop настолько, насколько это вообще возможно – мы использовали этот инструмент на портрете размером 29 000 x 14 577 пикселей.
Мы уже привыкли к результатам, которые способно показать ускорение с помощью CUDA (при грамотном внедрении поддержки GPGPU в код), но каждый раз они продолжают нас радовать. Без CUDA, прирост скорости при включении Hyper-Threading составляет 5-10%, а переход от двух ядер к четырем гораздо больше сказывается на скорости, чем переход от четырех к шести. Но после включения CUDA все эти проценты не имеют никакого значения. Три минуты. Три минуты, безотносительно количества потоков обработки. Без CUDA лучший результат – 12 минут.
Без задействованного CUDA, загрузка центрального процессора остается высокой, лишь немного сокращаясь с увеличением активных ядер. Hyper-Threading несколько вредит скорости обработки, но снижает среднюю загрузку процессора и освобождает немного ресурсов.
С задействованным ускорением CUDA, скорость выполнения задания не отличается, но зато загрузка процессора объясняет, что происходит на самом деле. С ростом количества физических ядер загрузка процессора падает. Это означает, что теперь узким местом в обработке данных стала графическая карта, а процессор с достаточным запасом производительности (и ядер) способен обеспечивать параллельную работу в других приложениях. Что соответствует, например, ситуации активной работы параллельно с обработкой нескольких изображений “пакетом” в фоновом режиме.
Примечание: существует возможность использовать ускорение CUDA в плагинах Adobe Photoshop CS4, но оно потребует приобретения дополнительного плагина Elemental, и к тому же может работать только на графических картах из списка совместимости. Нам не известно о существовании простого способа обойти ограничения совместимости, в отличие от Adobe CS5.
Ускорение Premiere Pro Adobe CS4
Мы хотели как можно более полно использовать данные, полученные при подготовке статьи о многопроцессорности, так что мы применяли не только тестовый набор задач для After Effects, но и соответствующие задачи для Premiere Pro. Частью тестирования являлось конвертация ролика со стандартной для Blu-ray частотой кадров 23.976 кадра/с (24 кадра/с в Adobe CS5) в ролик с частотой кадров 59.94 кадров/с. Мы отмечали время, потребовавшееся в обоих случаях на обработку и время экспорта в Adobe Media Encoder (AME), для оценки скорости двух самых востребованных операций обработки видео. И то, что наши результаты отличаются от результатов полученных в предыдущих исследованиях влияния железа на пакеты Adobe менее чем на 20 секунд, только подтверждает их правильность и воспроизводимость опыта.
В сценарии использования рабочей станции, в предыдущих статьях, мы не зарегистрировали значительного преимущества от перехода с Intel Core i7 на Intel Xeon. Используя в тестах только Core i7 и изменяя количество активных ядер, мы можем наблюдать пропорциональные и логичные изменения в производительности. Конечно польза от перехода с четырех на шесть ядер не так же велика как польза от перехода на четыре с двух, но полезность увеличения количества ядер несомненна. И наконец, мы видим пользу от Hyper-Threading на уровне порядка 10-20% прироста производительности – ожидаемый эффект. В случае с Premiere Pro Adobe CS4 шесть ядер от Intel, несомненно, являются оптимальным решением.
В отличие от других двух протестированных приложений Creative Suite, Premiere Pro эффективно использует каждый поток вычислений, физическое это ядро или виртуальное. Загрузка процессора остается высокой до тех пор, пока количество ядер не достигнет 12.
Ускорение Premiere Pro Adobe CS5 (рендеринг)
Тест Premiere Pro Adobe CS5 является центровым для этой статьи, и поэтому мы копнём немного глубже. Наконец, мы можем использовать новый Mercury Playback Engine от Adobe и увидеть его возможности в работе с поддержкой 64 бит, многопоточности и ускорением CUDA – всех их одновременно! Для начала, давайте сравним разницу в скорости обработки между разными версиями приложения. Как вы помните, с задействованным Hyper-Threading, Adobe CS4 показывал время 10:17, 5:21, и 3:33, работая с 4, 8 и 12 потоками вычислений соответственно. По странному совпадению, это почти соответствует временам Adobe CS5 – но с отключенным HT.
Включение HT дало Adobe CS5 преимущество в 10-20%. Таким образом, мы можем обещать прирост скорости обработки примерно в 15% при переходе на новую версию CS, с некоторыми колебаниями в зависимости от того, сколько у вас ядер.
А теперь о Mercury Playback Engine. Эффект от его использования просто поражает! Утверждения Adobe о росте скорости на порядок оказываются …точными. В конфигурации со всего двумя ядрами, Mercury и GeForce 480 оказались способны показать время 1:36 — меньше половины лучшего времени Adobe CS4, использовавшего 12 потоков вычислений! Если включить все ядра, Mercury и Adobe CS5 способны выполнить то же задание за …29 секунд.
Мы не отразили здесь загрузку процессора, из-за её характера. Большую часть времени, она составляла 98-100%, но время от времени падала ненадолго до отметки 5-15%. Эти числа, к сожалению, никак не объясняют происходящих процессов.
Ускорение Premiere Pro Adobe CS5 (Экспорт в AME)
Следите за числами: худшее время экспорта в AME у Adobe Premiere Pro CS4 было 26:03 (2 ядра, без HT). Лучшее – 8:59 (12 потоков, с HT). Результаты Adobe CS5 – 17:34 (2 ядра, без HT, без CUDA) и 4:15 (12 потоков, с HT, с CUDA) соответственно. Да, это прогресс, но мы все равно разочарованы. Это совсем не похоже на блестящую победу, которую мы наблюдали чуть раньше. Переход с 32-бит кода на 64, рост доступной памяти, удивительно быстрый механизм Mercury Playback Engine… Всё ради роста скорости в два раза?
Так что же, по сравнению с ростом скорости обработки в 10 раз рост в 2 незаметен? Ну, вообще-то, нет. Давайте представим, что вы платите, по американским расценкам, больше 300 долларов за час работы нанятого профессионала. Заплатили бы вы 1500 за то, чтобы время его ожидания сократилось вдвое? Мы думаем, не раздумывая.
Даже 5:27, время, которое потребовалось на обработку 4 ядрам, без HT и CUDA – это заметное улучшение по сравнению с Adobe CS4. И, совсем уж на чистоту, мы использовали дублирование кадров, что и приводит к меньшему эффекту роста производительности, потому что выполняется на центральном процессоре. Если бы мы использовали эффект, который может быть ускорен с помощью расчетов на графическом процессоре, результаты были бы заметно более впечатляющими.
Так что окончательное заключение таково: для оптимального времени обработки вам нужно не меньше 4 ядер, поддерживающие Hyper-Threading, вам нужно ускорение CUDA, и, значит, вам нужен Adobe CS5.
Да, и если для вас важно работать во время экспорта проектов, то смотрите на график загрузки процессора. Вам потребуется 12 параллельных потоков вычислений, чтобы иметь возможность работать в другом приложении во время экспорта. Любые более слабые системы будут загружены практически полностью.
Заключение
Да, CUDA – не панацея. Как показали наши тесты, только в некоторых случаях поддержка CUDA и преимущества от её использования перевешивают все остальное. В зависимости от того, предусмотрели ли разработчики приложений и плагинов возможность использования CUDA, это ускорение может помочь в наложении эффектов, кодировании видео, масштабировании, блендинге и других подобных операциях. В других областях, CUDA может оказаться бесполезной. Например, у вас есть видеозапись с разрешением 1280×720 в формате WMV, которую нужно перекодировать в 1820×720 MPEG-4 с помощью Premiere Pro. В таком случае, графический процессор ничем вам не сможет помочь, все расчеты будет производить центральный процессор.
А вот если вам нужно провести цветокоррекцию, регулировку яркости, добавить отбрасывание тени и свести в один канал и закодировать в клип MPEG-2 разрешением 1280х720 для экспорта на DVD три клипа разрешением 1920х1080, эффект от аппаратного ускорения может быть громадным. Если вы удваиваете частоту кадров с 30 до 60 путем их дублирования, CUDA вам ничем не поможет, а если воспользоваться механизмом “Tweening” (инструмент Premiere, автоматически добавляющий и корректирующий кадр между двумя существующими), тогда ускорение CUDA может значительно сократить время доработки. Если вы хотите пример, вот график скорости обработки тестовой задачи от nVidia для Premiere Pro Adobe CS5, “Paladin”,которая использует больше инструментов и эффектов оптимизированных для CUDA:
Мы уже приводили комментарий сотрудника nVidia, Шона Килбрайда, раньше в этой статье и хотим еще раз дать ему слово, потому что его помощь, в любое время дня и ночи, на протяжении нескольких недель, поразила нас и установила новый уровень терпения и вежливости для представителей вендоров. Его участие сделало возможной эту статью. Его ответ на наш вопрос с подвохом, “Если в Adobe Premiere Pro CS5 есть функция прямого и последовательного экспорта, они делают одно и то же, но прямой работает быстрее, то зачем Adobe CS5 по-прежнему поддерживает последовательный экспорт?” был: “Потому что при выполнении прямого экспорта вы не сможете продолжать работать до его окончания”. Мы готовы поспорить с этим утверждением, потому что согласно полученным данным загрузки процессора вы не сможете работать параллельно с обработкой в любом случае, за исключением ситуации, когда вас 12 потоков параллельных вычислений (6-ядерный процессор с Hyper-Threading), а приложение, в котором вы хотите работать довольно нетребовательно к ресурсам.
Но главный вопрос статьи: “Как наилучшим образом ускорить работу Creative Suite от Adobe?” В After Effects, переход с Adobe CS4 на Adobe CS5 привел к однозначному выигрышу, зато увеличение количества ядер с 4 до 6 дало неожиданно маленькое преимущество. Отношение Adobe Photoshop CS5 к количеству физических ядер оказалось примерно таким же, но если ваш плагин поддерживает CUDA, то тогда только держитесь – обработка происходит молниеносно. И наконец, Premiere Pro ведет себя именно так, как мы ожидали. Видеоредактор ускоряет свою работу от каждого добавленного ядра, выигрывает от использования Hyper-Threading, стал эффективнее Adobe CS4 и больше всех использует CUDA благодаря Mercury Playback Engine. Если вы работаете в Premiere Pro, каждый апгрейд имеет смысл.