Нередко графические процессоры менее интересны для небольших наборов данных по сравнению с большими наборами данных. Причины этого будут зависеть от конкретного алгоритма. Графические процессоры обычно имеют более высокую пропускную способность основной памяти, чем процессоры, а также могут превосходить их по производительности в тяжелых условиях обработки чисел. Но графические процессоры обычно работают хорошо только тогда, когда проблема связана с параллелизмом, который может быть обнаружен. Использование преимуществ этого параллелизма позволяет алгоритму задействовать большую полосу пропускания памяти, а также более высокие вычислительные возможности.
Однако, прежде чем графический процессор сможет что-либо сделать, необходимо передать данные графическому процессору. И это создает «затраты» на версию кода для графического процессора, которая обычно не присутствует в версии для процессора.
Чтобы быть более точным, графический процессор обеспечит преимущество, когда сокращение времени вычислений на графическом процессоре (по сравнению с процессором) превышает стоимость передачи данных. Я считаю, что решение системы линейных уравнений находится где-то между O (n ^ 2) и O (n ^ 3) сложностью. Для очень малых n эта вычислительная сложность может быть недостаточно большой, чтобы компенсировать стоимость передачи данных. Но очевидно, что чем больше n, тем больше должно быть. С другой стороны, ваша векторная операция может иметь сложность только O (n). Так что сценарий выгоды будет выглядеть иначе.
Для случая O (n ^ 2) или O (n ^ 3), когда мы переходим к большим наборам данных, «стоимость» передачи данных увеличивается как O (n), но требования к вычислениям для решения увеличиваются как O ( n ^ 2) (или O (n ^ 3)). Следовательно, для более крупных наборов данных должны быть экспоненциально большие вычислительные нагрузки, что снижает влияние «стоимости» передачи данных. С другой стороны, проблема O (n), вероятно, не будет иметь этой динамики масштабирования. Рабочая нагрузка увеличивается с той же скоростью, что и «стоимость» передачи данных.
Также обратите внимание, что если «стоимость» передачи данных в графический процессор может быть скрыта путем перекрытия ее с вычислительной работой, тогда «стоимость» перекрывающейся части становится «бесплатной», то есть она не влияет на общее время решения.
person
Robert Crovella
schedule
08.01.2013