是否可以在C ++多线程中而不是cuda / opencl中运行GPU?

时间:2018-06-26 12:05:06

标签: c++ multithreading parallel-processing opencl

是否存在一个可以隐藏Opencl开头和结尾部分以简化SW的sw或类? 我认为OpenGL确实可以,但是我不知道是否可能仅在GPU上使用它,因为如果必须不断将数组下载和上传到GPU,效率会下降。

使用多线程而不是opencl运行gpus会很棒。当然应该执行新的驱动程序并进行一些硬件更改,但可以实现以下优点:
-与opencl相比,性能提高了12倍(具体取决于应用程序,请参阅(1))
-与标准多线程相比,性能提高了120倍(具体取决于应用程序,请参阅(1))
-使用库
-更好的调试
-存在很多SW
-更容易编程
-更好地使用其他语言(java,phyton)
-更好地访问硬盘和外围设备

响应:

1 个答案:

答案 0 :(得分:3)

TL; DR:有可能吗?也许。这是个好主意吗 ?否,因为(破坏者) GPU不是CPU

CPU可以执行所有操作,计算机的所有操作甚至可以执行图形操作。

GPU是一种特殊类型的微处理器,已针对图形任务进行了优化,该图形任务需要大量简单的并行“哑”操作。 GPU只能执行CPU所执行的许多操作的一小部分(但它做得很好)。

C ++是一种高效的语言,因为使编译器可以为您的CPU优化它(以汇编形式)。在GPU上,您没有相同的指令集。这意味着您必须将复杂的指令替换为多个更简单的指令(假设有可能),因此现在需要1条指令的操作将需要2 ... 4 ... 10 ...条指令!并且不要忘记,GPU时钟通常比CPU时钟慢。我看不到优化在哪里。

此外,我真的很想知道您在问题中要找到的值(12x,120x等)。