Wäre es für einen JIT-Compiler möglich, die GPU für bestimmte Vorgänge hinter den Kulissen zu verwenden?

8

Fühlen Sie sich frei, mich zu korrigieren, wenn irgendein Teil meines Verständnisses falsch ist.

Ich verstehe, dass GPUs eine Teilmenge der Anweisungen bieten, die eine normale CPU bietet, aber sie viel schneller ausführt.

Ich weiß, dass es Möglichkeiten gibt, GPU-Zyklen für nicht grafische Zwecke zu nutzen, aber es scheint (in der Theorie) eine Sprache zu sein, die Just In Time kompiliert das Vorhandensein einer geeigneten GPU erkennen und einen Teil der Arbeit an die GPU abladen könnte hinter den Kulissen ohne Code-Änderung.

Ist mein Verständnis naiv? Ist es nur eine Frage von es ist wirklich kompliziert und hat es einfach nicht getan?

    
Davy8 30.06.2010, 14:35
quelle

2 Antworten

8
  

Meines Wissens nach bieten GPUs ein   Teilmenge der Anweisungen, die a   normale CPU stellt sie zur Verfügung, führt sie aber aus   viel schneller.

Es ist definitiv nicht so einfach. Die GPU ist hauptsächlich auf SIMD / Vektorverarbeitung zugeschnitten. Obwohl das theoretische Potenzial von GPUs heute den CPUs weit überlegen ist, können nur Programme, die von SIMD-Befehlen profitieren, effizient auf der GPU ausgeführt werden. Außerdem gibt es natürlich eine Leistungseinbuße, wenn Daten von der CPU zur GPU übertragen werden müssen, um dort verarbeitet zu werden.

Damit ein JIT-Compiler die GPU effizient verwenden kann, muss er in der Lage sein, Code zu erkennen, der parallelisiert werden kann, um von SIMD-Befehlen zu profitieren, und dann bestimmen muss, ob der Overhead durch die Übertragung von Daten von der CPU induziert wird Die GPU wird durch die Leistungsverbesserungen übergewichtig sein.

    
Janick Bernet 30.06.2010, 14:46
quelle
0

Es ist möglich, eine GPU (z. B. eine CUDA- oder OpenCL-fähige) zu verwenden, um JIT selbst zu beschleunigen. Sowohl die Registerzuweisung als auch die Befehlsplanung konnten effizient implementiert werden.

    
SK-logic 04.07.2010 11:20
quelle

Tags und Links