代码之家  ›  专栏  ›  技术社区  ›  Davy8

JIT编译器是否有可能在后台使用GPU进行某些操作?

  •  8
  • Davy8  · 技术社区  · 14 年前

    如果我的理解有任何错误,请随时纠正我。

    我的理解是GPU提供了一个普通CPU提供的指令子集,但执行速度要快得多。

    我知道有一些方法可以利用GPU循环来实现非图形化的目的,但是(理论上)一种及时编译的语言似乎可以检测到合适的GPU的存在,并在不改变代码的情况下将一些工作卸载到GPU的幕后。

    我的理解是幼稚的吗?这只是一个非常复杂的问题,而且还没有做到?

    2 回复  |  直到 14 年前
        1
  •  8
  •   Janick Bernet    14 年前

    我的理解是GPU提供 指令的子集 正常的CPU提供但执行它们 快得多。

    这显然没有那么简单。GPU主要针对SIMD/矢量处理。因此,尽管目前GPU的理论潜力大大优于CPU,但只有能够从SIMD指令中获益的程序才能在GPU上有效地执行。此外,当数据必须从CPU传输到要在那里处理的GPU时,当然会有性能损失。

    因此,为了使JIT编译器能够有效地使用GPU,它必须能够检测到可以并行化的代码,以从SIMD指令中获益,然后必须确定,从CPU到GPU传输数据所引起的开销是否会超过性能改进。

        2
  •  0
  •   SK-logic    14 年前

    可以使用GPU(例如,CUDA或OpenCL启用的GPU)来加速JIT本身。寄存器分配和指令调度都可以有效地实现。