如果我的理解有任何错误,请随时纠正我。
我的理解是 GPU 提供了普通 CPU 提供的指令子集,但执行速度要快得多。
我知道有一些方法可以将 GPU 周期用于非图形目的,但似乎(理论上)一种及时编译的语言可以检测到合适的 GPU 的存在并将一些工作卸载到幕后的 GPU无需更改代码。
我的理解是幼稚的吗?难道只是因为它真的很复杂,只是还没有完成?
最佳答案
My understanding is that GPUs offer a subset of the instructions that a normal CPU provides but executes them much faster.
绝对没有那么简单。 GPU 主要针对 SIMD/矢量处理进行定制。因此,尽管如今 GPU 的理论潜力远远优于 CPU,但只有能够从 SIMD 指令中受益的程序才能在 GPU 上高效执行。此外,当数据必须从 CPU 传输到 GPU 以在那里进行处理时,当然会有性能损失。
因此,为了让 JIT 编译器能够有效地使用 GPU,它必须能够检测到可以并行化以从 SIMD 指令中受益的代码,然后必须确定将数据从 CPU 传输到 GPU 所引起的开销是否会被性能改进所抵消。
关于compilation - JIT 编译器是否有可能在幕后利用 GPU 进行某些操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3150280/