是否存在一个可以隐藏Opencl开头和结尾部分以简化SW的sw或类? 我认为OpenGL确实可以,但是我不知道是否可能仅在GPU上使用它,因为如果必须不断将数组下载和上传到GPU,效率会下降。
使用多线程而不是opencl运行gpus会很棒。当然应该执行新的驱动程序并进行一些硬件更改,但可以实现以下优点:
-与opencl相比,性能提高了12倍(具体取决于应用程序,请参阅(1))
-与标准多线程相比,性能提高了120倍(具体取决于应用程序,请参阅(1))
-使用库
-更好的调试
-存在很多SW
-更容易编程
-更好地使用其他语言(java,phyton)
-更好地访问硬盘和外围设备
响应:
NVIDIA正在使C ++在GPU上运行: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0761r2.pdf
它为C ++添加了并行性: https://www.youtube.com/watch?v=Vck6kzWjY88&feature=youtu.be
答案 0 :(得分:3)
TL; DR:有可能吗?也许。这是个好主意吗 ?否,因为(破坏者) GPU不是CPU 。
CPU可以执行所有操作,计算机的所有操作甚至可以执行图形操作。
GPU是一种特殊类型的微处理器,已针对图形任务进行了优化,该图形任务需要大量简单的并行“哑”操作。 GPU只能执行CPU所执行的许多操作的一小部分(但它做得很好)。
C ++是一种高效的语言,因为使编译器可以为您的CPU优化它(以汇编形式)。在GPU上,您没有相同的指令集。这意味着您必须将复杂的指令替换为多个更简单的指令(假设有可能),因此现在需要1条指令的操作将需要2 ... 4 ... 10 ...条指令!并且不要忘记,GPU时钟通常比CPU时钟慢。我看不到优化在哪里。
此外,我真的很想知道您在问题中要找到的值(12x,120x等)。