2015-04-27 5 views
1

У меня есть многопоточное приложение на C++, и я хочу повысить производительность и снизить общее использование ЦП с использованием графики Intel HD.Возможно ли разгружать функцию на графическую карту?

Я не пользуюсь CILK. (Приложение написано на чистом C++)

Я прочитал follwoing ссылку на: How to offload computation to Intel(R) Graphics Technology

Но техника его подводит нашел способ обработки письменной функции или темы на графической карте.

Возможно ли это? Есть ли способ использовать интеллектуальный компилятор для разгрузки функций (или потоков) в графику Intel HD?

Thanks

+2

Неявно (насколько я знаю). Вы должны сами вручную закодировать эти части (используя, например, CUDA или OpenCL или аналогичные фреймворки) – M2X

+1

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

ответ

4

Да, это возможно. Но это не просто.

Вы можете использовать CUDA, OpenCL или DirectCompute для чего хотите, однако вам нужно написать параллельную версию вашей функции. Запуск «последовательной» функции на графическом процессоре определенно неинтересен. Параллелизация алгоритма может быть самой сложной задачей, подходы API-интерфейсов примерно одинаковы.

Я сочувствую об этом:

  • код вы сделано для (однопоточных) процессоров, так последователен
  • код, который вы хотите GPU для запуска необходимо быть параллельными

Я не знаю ни одного инструмента, способного распараллеливать алгоритм.

+0

Спасибо, но если я буду использовать GPU, я не могу использовать больше «ядер», (ядра процессора + ядра GPU) нет? (Таким образом, последовательное многопоточное приложение может запускать больше потоков одновременно) ... – user3668129

+0

Графические процессоры и процессоры не работают одинаково. Обычно разделение одной и той же работы между процессором и графическим процессором не стоит, потому что для хороших параллельных алгоритмов GPU будет на 1000 раз быстрее, а для высокосерийных алгоритмов он даже не будет работать на GPU. – Synxis

+0

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

Смежные вопросы