Оценка увеличения скорости при смене модели графического процессора NVIDIA - PullRequest
2 голосов
/ 12 июля 2011

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

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

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

Например, изменение может быть таким же тривиальным, как если бы я купил одного из этих бегемотов с водяным охлаждением EVGA, какнамного лучше он будет работать по сравнению со стандартным GTX 580?Это всего лишь упражнение в вычислении различий в ограничении тактовой частоты (памяти или часов GPU).Я также столкнулся с этим вопросом, задаваясь вопросом, следует ли мне разогнать мою карту.

Если вы собираетесь использовать аналогичную архитектуру , GTX 580 для Tesla C2070, вы можете сделать аналогичный случай.различий в тактовых частотах, но вы должны быть осторожны с проблемой одинарной / двойной точности.

Если вы делаете что-то гораздо более радикальное, скажем, переходя с мобильной карты - GTX 240M - наверхняя часть линейной карты - Tesla C2070 - , тогда вы можете вообще не получить никакого улучшения производительности.

Примечание: Крис очень прав в своем ответе, но я хотел подчеркнуть этоосторожность, потому что я представляю себе этот общий рабочий путь:

Кто-то говорит боссу:

  1. Итак, я слышал об этой штуке CUDA ... Я думаю, она могла бы функционировать X намного эффективнее.
  2. Босс говорит, что у вас может быть 0,05% рабочего времени для тестирования CUDA - эй, у нас уже есть эта мобильная карта, используйте эту .
  3. Год спустя ... Так что CUDA может получить нам трехкратную скоростьп.Могу ли я купить лучшую карту, чтобы проверить это?(GTX 580 стоит всего $ 400 - меньше, чем внутреннее фиаско ...)
  4. Вы тратите $$, покупаете карту, и ваш код CUDA работает на медленнее .
  5. Ваш босс теперь расстроен.Вы потратили впустую время и деньги .

Так что случилось?Разработка на старой карте, например 8800, 9800 или даже на мобильном GTX 2XX с примерно 30 ядрами, приводит к тому, что оптимизировать и разрабатывать свой алгоритм совершенно иначе, чем эффективно использовать карту с 512 ядрами. Caveat Emptor Вы получаете то, за что платите - эти удивительные карты потрясающие - но ваш код может не работать быстрее .

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

ОК, так что, так сказать, эмпирическое правило?Графические процессоры становятся в два раза быстрее каждые шесть месяцев.Поэтому, если вы переходите с карты, которой два года, на карту, находящуюся на вершине линии, заявите своему боссу, что он будет работать в 4–8 раз быстрее (и если вы получите полное 16-кратное улучшение, браво!!)

2 голосов
/ 12 июля 2011

Вам предстоит трудное время по ряду причин:

  1. Тактовая частота и скорость памяти имеют слабое отношение к скорости кода, потому что под капотом происходит гораздо больше (например, переключение контекста потока), которое улучшается / изменяется почти для всего нового оборудования.

  2. Кэши были добавлены к новому оборудованию (например, Fermi), и если вы не смоделируете частоту попаданий / промахов в кеше, вам будет сложно предсказать, как это повлияет на скорость.

  3. Производительность с плавающей запятой в целом очень зависит от модели (например, у Tesla C2050 производительность выше, чем у «верхней части линии» GTX-480).

  4. Использование регистра для каждого устройства может изменяться для разных устройств, что также может влиять на производительность; занятость будет затронута во многих случаях.

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

Теперь, несмотря на это, вы, вероятно, можете сделать некоторые прогнозы, если вы запустите свое приложение через один из профилировщиков (например, NVIDIA Compute Profiler), и вы посмотрите на вашу занятость и использование SM. Если ваш GPU имеет 2 SM, а тот, на котором вы в конечном итоге будете работать, имеет 16 SM, то вы почти наверняка увидите улучшение, но не именно из-за этого.

Так что, к сожалению, нелегко сделать тип предсказаний, который вы хотите. Если вы пишете что-то с открытым исходным кодом, вы можете опубликовать код и попросить других протестировать его на более новом оборудовании, но это не всегда возможно.

...