Показать сообщение отдельно

  #5  
Старый 08.08.2008, 00:42
Аватар для Solide Snake
Solide Snake
Moderator - Level 7
Регистрация: 28.04.2007
Сообщений: 547
Провел на форуме:
5516499

Репутация: 3702


Отправить сообщение для Solide Snake с помощью ICQ
По умолчанию

Приобщение к CUDA. Серия 2 - выбор, установка видеокарты и результаты Specviewperf


Выбор

Итак мне захотелось поиграться с чем-то быстросчитающим. И впрямом смысле поиграться тоже

Встал вопрос выбора. Что взять: приставку PS3 с Cell, карточки Radeon для AMD Stream Processing или GeForce для CUDA? И какие именно? Каждый вариант имеет свои плюсы и минусы. Мысль решить всё самым интересным способом: взять все три вещи, и потом сравнивать в своё удовольствие, была отброшена по причине нежелания расставаться с потребной для этого суммой.



Плюсы Sony Playstation 3. Сама технология Cell, активно продвигаемая IBM, выглядит многообещающей. Именно на Cell (который на PS3, впрочем в усеченном виде) сейчас начинают строиться суперкомпьютеры, предполагающие преодоление порога в петафлопс (квадриллион операций в секунду с плавающей запятой) Кстати, сейчас в России проводится конкурс по программированию на Cell. Cell более универсальный процессор, чем в видеокарточках. PS3 - это редкая сейчас после перехода Mac'ов на платформу Intel возможность приобрести на бытовом рынке новый процессор PowerPC архитектуры. Напомню, что Cell - фактически сочетание PowerPC-совместимого (по крайней мере на уровне команд) процессора и синергических модулей. Кроме того, это ещё и дешёвый плеер Blue-Ray Disc. PS3 может использоваться и как отдельный универсальный компьютер и как, разумеется, игровая приставка - главная цель выпуска.

Минусы Sony Playstation-3. Более высокая цена, по сравнению с видеокарточками. Базовой комплектации с 60Гб винчестером уже не продаётся, а в 40Гб кое-что выкинуто для удешевления, в том числе некоторые неигровые возможности. Винчестер, кстати, всё-равно для неигровых целей пришлось бы ставить более вместительный. К сожалению, в отличие от винчестера, нарастить оперативную память сверх лимита в 256Мб нереально, потому что это не обычная память DDR2 или DDR3, а Rambus XDR, более новая разработка, чем та что была в эпоху ранних Pentium-4 и на рынке просто так не продаётся. Игры для PS3 менее доступны и разнообразны, чем для простых компьютеров, даже если и там и там приобретать исключительно лицензионную продукцию. Программиста работающий гипервизор всё-таки стесняет, в том числе и в быстродействии. Как я уже говорил в предыдущей части, имеются некоторые проблемы с реальной производительностью на PS3. То есть, выжать под 200Gflops всё-таки можно, но с более неприятными ограничениями, чем казалось раньше.

Плюсы видеокарточек. Дешевле PS3, больше памяти, причём и скорость работы с памятью больше и латентность меньше, да и скорость обмена данными между основной памятью в компьютере и памятью в видеокарточке составляет от 1 до 5 Гб/сек, в зависимости от вариантов. Производительность видеокарточек совсем не хуже, чем у PS3 и оказывается, может быть даже больше. Тем более, готовящиеся к выпуску новые видеоплаты от Nvidia и AMD уже точно будут существенно быстрее устаревающего PS3. Правда не исключено, что Sony выпустит какую-нибудь новую более быструю модификацию, но подобный шаг маловероятен, поскольку вряд ли вписывается в рыночную модель использования приставок. Скорее уж следует ожидать PS4, но для нового поколения PS3 слишком мало времени продавалась.

Минусы видеокарточек. Много выделяют тепла В отличие от PS3 видеокарточки не самодостаточны, круг решаемых задач уже чем у Cell - на них нельзя сделать компьютер, нужен отдельный общий процессор и для работы необходимо дополнительное ПО, программирование более закрытое, чем у Cell. В отличие от PS3 в них не имеется ограничивающего гипервизора, но зато для работы требуются закрытые модули, транслирующие промежуточный код в коды непосредственно микропроцессора карточки и описание работы на низком уровне отсутствует у Nvidia и пока не раскрыто (если они вообще собираются раскрывать) у AMD. Правда, благодаря фирменным SDK и архитектуре, само воплощение на них параллельных алгоритмов смотрится проще.

Ещё о PS3. Стоит сама приставка у нас от 15-16 тыс. рублей (примерно $660), к ней ещё нужен или хороший большой телевизор или монитор с поддержкой HDCP или специальный переходник. Переходник, который назло копирастам разводит HDMI с HDCP на обычные аналоговые или DVI (без шифрования) видеокабели и позволяет подключить в том числе и обычный монитор, стоит существенно дешевле нового телевизора, но всё равно требует примерно 6 тыс. руб. А без переходника нельзя получить изображение с разрешением более чем 720x576 точек, с которым работать на мониторе не слишком комфортно. Итого с приставкой примерно 22 тысячи выходит. И при наличии более дешёвых альтернатив и других минусов приставки её приобретение показалось менее интересным среди других вариантов. Хотя может ещё и возьму

Поэтому от PS3 я отказался и практически выбирал между Radeon HD 3870, GeForce 8800 (GTX,GT,GTS g80 и GTS от G92), GeForce 9800 GTX и ещё не выпущенными, но анонсируемыми в июне, новыми поколениями видеокарточек как от Nvidia, так и от AMD(ATI).

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

Взял то, что сильно захотелось: GeForce 8800 GTX с заводским разгоном Должен отметить, что AMD/ATI-шные карточки слегка (и то вопрос) проигрывая в играх топам от nvidia, показывают на ряде тестов закономерно более высокую общую вычислительную производительность, например, у Radeon HD 3870 имеется 320 потоковых процессоров и 512-битная шина против 128 потоковых и 384 бит у GeForce 8800 GTX и Ultra, хотя потоковые процессоры у nvidia и ati и нельзя напрямую сравнивать из-за их разной производительности.

Правда уже после покупки карточки возникла мысль, что возможно более удачным приобретением была бы GeForce 8800 GTS 512 Мб или 8800 GT с теми же 512 Мб на новом чипе G92 (8800 GTX на G80). Первая на 5-10% быстрее, а вторая слегка отставая, существенно дешевле. И обе поддерживают некоторые дополнительные, хотя и не принципиально важные, функции (AtomicFunction). Имеют слегка меньшие размеры и тепловыделение. С другой стороны, у них меньше памяти (512Мб вместо 768Мб) и уже шина: 256 бит вместо 384. А GeForce 9800 GTX мне показалось, что брать особого смысла не имеет, при более высокой цене, чем 8800 GTX, он фактически не более быстр, чем новый 8800 GTS.

Установка

Насколько мне известно, различий между GeForce 8800 GTX от разных производителей почти нет. Все они сделаны из референсной платы от NVIDIA и отличаются, в основном, дополнительным содержимым и размером коробки в которой поставляются, а также раскраской самой платы. Ещё наличием или отсутствием заводского разгона и есть модели с заменённой системой охлаждения. Поэтому размер в 27 с лишним сантиметров и два занимаемых слота - это их родовой признак (говорят, что новые платы не будут короче). Влезут не во всякий корпус и требуют хорошего блока питания, как указывает nvidia, не менее 450 честных ватт и суммарных 30A на двух линиях 12В, которые вставляются в два шестиштырьковых разъёма на плате.

Вот как она выглядит, вставленной в корпус моего компьютера:



IDE-шнурок ни к чему не подключён, но я вынужден его так оставить из-за расположения разъёма на плате и его ориентации штырьками вдоль платы, а не вверх. Вследствие чего, если я его сейчас выну, то захотев подключить IDE-винчестер, обратно его уже не вставлю без разбора понатыканного.
Сзади во втором слоте PCI-E находится GeForce 7600GS от Gigabyte. Первоначально я планировал оставить её в первом слоте, а новую плату поставить во второй, тем более, что учитывая вырезы на боковой стенке корпуса, там она, по-моему и лучше бы охлаждалась.
Блока питания Chieftec 550Вт хватило для платы, но вот в корпус она едва влезла:



Пришлось ножницами по металлу откромсать выступающую часть над отсеком для винчестеров, я не совсем понял зачем она вообще была предусмотрена, но возможно для 2.5 дюймовых винчестеров. Этого оказалось недостаточно. Двухслотовая плата уперлась и вот что-то у задней стенки корпуса. Оказалось виновато оригинальное крепление: сверху над задними панелями для их фиксации предусмотрен ряд пластмассовых защёлок, которые поворачиваются, поднимаются вверх и после установки платы, снова опускаются и закрываются, фиксируя планку. Так вот между слотами сверху расположены пластмассовые перегородки. Пришлось и их выкусить и только тогда видеокарточка влезла в компьютер.

Охлаждение

Видеокарточка недаром называется ПЕЧ, если GTX набрать в кириллической раскладке Она довольно таки много потребляет энергии даже в простое и доходит до 150 Вт и даже более при полной загрузке. На ней стоит штатный кулер, выбрасывающий поток тёплового воздуха за пределы корпуса компьютера, через радиаторную решётку во втором слоте. Разумеется, часть тепла всё-равно остаётся внутри корпуса и пространство вокруг платы заметно нагревается. В общем, в плохо проветриваемом корпусе эту видеокарточку не стоит держать.

Добавляет проблем и поведение штатной системы охлаждения. По умолчанию, она настроена на автоматическое изменение скорости вращения встроенного вентилятора зависимости от её загруженности. Где-то я читал и подтвердил на собственном опыте, что эта скорость вращения установлена в 60% от максимальной, что соответствует примерно 1720 об/мин. и при разогреве почти не увеличивается и только при температуре за 86 градусов (Цельсия) обороты реально растут, что выглядит не допустимым. Положение осложняется наличием заводского разгона и как следствие, повышенным нагревом.

К счастью, скоростью вращения вентилятора платы можно управлять вручную. В Linux для этой цели можно использовать консольную программу nvclock. nvclock создавался для разгона или тонокой подстройки видеоплат от Nvidia и управления такими параметрами как частота работы памяти, GPU и др., умеет и устанавливать частоту вращения кулера.

Следует знать, что страница man к этой программе (по крайней мере в Debian) не полная и в ней не документирован параметр -F, задающий процент мощности работы кулера.

Цитата:
$apt-get install nvclock

$nvclock -c 1 -f -F 82
Current fanspeed: 1723 RPM
PWM duty cycle: 60.0%
Changing duty cycle from 60.0 to 82.0
Fanspeed: 1723 RPM
New PWM duty cycle: 60.0

$nvclock -c 1 -i
-- Sensor info --
Sensor: Analog Devices ADT7473
Board temperature: 59C
GPU temperature: 67C
Fanspeed: 2461 RPM
Fanspeed mode: auto
PWM duty cycle: 82.0%

и через некоторое время:

-- Sensor info --
Sensor: Analog Devices ADT7473
Board temperature: 53C
GPU temperature: 60C
Fanspeed: 2446 RPM
Fanspeed mode: auto
PWM duty cycle: 82.0%
Как видно, в режиме простоя, от повышения мощности кулера c 60% до 82% температура снизилась примерно на 7 градусов. Хотя шум от кулера увеличился, но не слишком сильно.
Тем не менее, для интенсивных вычислений надо ставить мощность сразу на 100% и всё-равно у меня температура подбирается к 80 градусам.
Экспериментируя с кулером необходимо помнить, что при его остановке видеокарточка может очень быстро сильно нагреться, особенно в ходе работы.
Можно посоветовать записать вызов nvclock с нужными параметрами в стартовые скрипты, чтобы после включения компьютера вентилятор сразу вращался на повышенных оборотах.

Драйвера и производительность

Приобретение новой видеокарточки совпало с выпуском NVIDIA новых драйверов для Linux 173.14.05. Тем не менее, поначалу я использовал старые драйвера 169.12.
Приятной неожиданностью стало то, что установка новой видеокарты и переезд старой в другой слот, система Debian GNU/Linux Testing (Lenny) восприняла спокойно, не потребовав никаких изменений настроек и внешне вообще не заметно, если не считать увеличения fps в играх и тестах. Попугаи в glxgears увеличились с 6500 до 18000 с чем-то. Интересно как в Windows бы прошло? Драйвера понадобилось бы переустанавливать или нет? Хотя, вообще-то в Debian приходится переустанавливать драйвер от nvidia практически каждый раз как меняется ядро или версия x.org
Но раз новые драйвера вышли я их всё-таки поставил.
Результат оказался интересным. Попугаи в glxgears уменьшились сразу на 2000 до 16500 примерно.
Протестировал я старую и новую видеокарточки и тестом Specviewperf, ориентированным на оценку быстродействия в профессиональных CAD-системах. Благо, что недавно вышла бета-версия SpecviewPerf 10 alpha 12 для Linux.



Очень забавно, но на некоторых тестах Geforce 7600GS оказалась даже чуть-чуть быстрее, чем 8800 GTX!
Практически получается, что для многих CAD-систем переход на 8800 GTX не оправдан, потому что они или не получают заметного прироста
или несмотря на прирост fps, все-равно слишком медленно работают и для них необходимо приобретать профессиональную серию Quadro.

Правда я сильно подозреваю, что особых различий в железе между игровыми платами и дорогими профессиональными не существует, если не считать увеличенного объёма памяти. Уж основной чип точно тот же самый и скорее всего, можно было бы заставить работать 8800 GTX в CAD'ах на уровне Quadro, если подкорректировать настройки в BIOS и в драйверах. Эти настройки в игровых платах явно ориентированы на функции OpenGL, более применяемые в игровых приложениях, а в Quadro - на компьютерное моделирование.

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

(c)
 
Ответить с цитированием