Возможно ли, чтобы JIT-компилятор использовал GPU для определенных операций за кулисами? - PullRequest
8 голосов
/ 30 июня 2010

Не стесняйтесь исправлять меня, если какая-то часть моего понимания неверна.

Насколько я понимаю, графические процессоры предлагают подмножество инструкций, которые предоставляет нормальный процессор, но выполняют их намного быстрее.* Я знаю, что есть способы использовать циклы графического процессора для неграфических целей, но кажется, что (в теории) язык, который был скомпилирован как раз вовремя, может обнаружить наличие подходящего графического процессора и перенести часть работы на графический процессор засцены без изменения кода.

Наивно ли мое понимание?Просто дело в том, что это действительно сложно и просто не было сделано?

Ответы [ 2 ]

8 голосов
/ 30 июня 2010

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

Это определенно не так просто. Графический процессор предназначен главным образом для SIMD / векторной обработки. Таким образом, даже несмотря на то, что теоретический потенциал графических процессоров в настоящее время значительно превосходит процессоры, только те программы, которые могут извлечь выгоду из инструкций SIMD, могут эффективно выполняться на графическом процессоре. Кроме того, существует, конечно, снижение производительности, когда данные должны передаваться из ЦП в ГП для обработки там.

Таким образом, чтобы JIT-компилятор мог эффективно использовать графический процессор, он должен уметь обнаруживать код, который можно распараллелить, чтобы извлечь выгоду из инструкций SIMD, а затем должен определить, вызваны ли накладные расходы, вызванные передачей данных из ЦП в GPU будет перевесить улучшения производительности.

0 голосов
/ 04 июля 2010

Можно использовать графический процессор (например, с поддержкой CUDA или OpenCL) для ускорения самого JIT.И распределение регистров, и планирование команд могут быть эффективно реализованы.

...