Можем ли мы оценить, насколько быстры CUDA или OpenCL по сравнению с производительностью процессора?

StackOverflow https://stackoverflow.com/questions/4268181

Вопрос

Насколько быстрее может выполняться алгоритм на CUDA или OpenCL по сравнению с обычным одноядерным процессором?(учитывая, что алгоритм написан и оптимизирован как для целевого процессора, так и для графического процессора).

Я знаю, что это зависит как от видеокарты, так и от процессора, но, скажем, от одного из самых быстрых графических процессоров NVIDIA и (одноядерного) процессора Intel i7?

И я знаю, что это также зависит от типа алгоритма.

Мне не нужен строгий ответ, но есть опытные примеры, такие как: для алгоритма обработки изображений с использованием плавающей запятой двойной точности и 10 операций на пиксель сначала потребовалось 5 минут, а теперь на этом оборудовании он выполняется за x секунд.

Это было полезно?

Решение

Ваш вопрос чрезмерно широкий, и очень сложно ответить. Более того, только небольшой процент алгоритмов (те, которые имеют дело без особого общего состояния), возможно, выгоднее с GPU.

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

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

Я видел этот поворот заявленного плюс в негативное, потому что одно время загрузки / времени загрузки было длиннее, чем основной процессор требует, чтобы сделать расчет.

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

Обновлять Новее GPU, похоже, умеют загружать / загружать и рассчитать одновременно с помощью буферов Ping-Pong. Но посоветую проверку пограничных условий тщательно по-прежнему стоит. Там много спин.

Другие советы

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

Примечательно, что вы сравниваете как 1) Выбор алгоритма 2) Относительная производительность аппаратного обеспечения 3) Способность оптимизации компилятора 4) Выбор языков реализации и 5) Эффективность реализации алгоритма, все в то же время ...

Обратите внимание, что, например, различные алгоритмы могут быть предпочтительными на GPU VS CPU; И передачи данных и из ГПУ должны быть учтены в таймингах тоже.

AMD имеет тематическое исследование (несколько, на самом деле) в производительности OpenCL для кода OpenCL, выполняемая на CPU и на GPU. Здесь Это один с результатами производительности для разнообразных матричных вектора размножается.

Я думаю, что это видео-введение to OpenCL дает хороший ответ на ваш вопрос в первом или втором эпизоде (я не помню).Я думаю, это было в конце первого эпизода...

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

Это очень зависит от алгоритма и насколько эффективна реализация может быть.

В целом, справедливо сказать, что GPU лучше при вычислении, чем процессоры. Таким образом, верхняя граница состоит в том, чтобы разделить теоретические рейтинг GFLOPS верхнего центра ГПУ верхнего конца верхним процессором. Вы можете сделать аналогичные вычисления для теоретической пропускной способности памяти.

Например, 1581.1 GFLOPS для GTX580 против 107,55 GFLOPS для I7 980XE. Обратите внимание, что рейтинг для GTX580 предназначен для одной точности. Я полагаю, что вам нужно сократить это в 4-х гостевом факторе для неренец-Tesla класса Fermi, чтобы добраться до двойного прецизионного рейтинга. Так что в этом случае вы можете ожидать примерно 4х.

Предостережения по тому, почему вы можете сделать лучше (или увидеть результаты, которые утверждают гораздо больше ускорений):

  1. GPU имеет лучшую пропускную способность памяти, чем CPU после того, как данные будут на карте. Иногда алгоритмы, связанные с памятью, могут преуспеть на GPU.

  2. Умное использование кэши (текстура памяти и т. Д.) Что может позволить вам сделать лучше, чем рекламируемая пропускная способность.

  3. Как говорит Марко, то время перевода не получилось. Я лично всегда включает в себя такое время в моей работе, и, таким образом, обнаружил, что самые большие ускорения, которые я видел, чтобы быть в итеративных алгоритмах, где все данные вписываются в GPU (я получил более 300x на среднем процессоре Midrange для среднего размера. ).

  4. Яблоки к оранжевым сравнениям. Сравнение верхнего графического процессора по сравнению с низким уровнем процессора, по своей природе не несправедливо. Убедталь - это то, что высококачественный процессор стоит гораздо больше, чем GPU высокого уровня. После того, как вы пойдете на GFLOPS / $ или GFLOPS / WATT Сравнение, он может выглядеть гораздо более благоприятно для GPU.

Я видел фигуры, начиная от 2x до 400x. Я также знаю, что средний диапазон GPU не может конкурировать с высоким уровнем процессоров в двухточных вычислениях - MKL на 8-ядроном Xeon будет быстрее, чем CULA или CUBLAS на графическом процессе за 300 долларов.

Opencl анекдотально намного медленнее, чем CUDA.

Новый базовый люкс под названием Shoc (масштабируемые гетерогенные вычисления) от National Lab House Ridge и Tech Georgia Tech имеет как Opencl, так и для CUDA для многих важных ядер. Вы можете скачать люкс из http://bit.ly/shocmarx.. Отказ Наслаждаться.

__kernel void vecAdd(__global float* results )
{
   int id = get_global_id(0);
}

Этот код ядра может появиться 16-миллиметровые потоки на новом 60 $ R7-240 GPU в 10 миллисекундров.

Это эквивалентно 16 потокам или контекстному выключателям в 10 наносекунды. Что такое 140 $ FX-8150 8-ядро срока процессора? Это 1 нить в 50 наносекундных на ядро.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top