Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在GPGPU方面,OpenMP与OpenCL有何区别?_Opencl_Openmp_Distributed Computing - Fatal编程技术网

在GPGPU方面,OpenMP与OpenCL有何区别?

在GPGPU方面,OpenMP与OpenCL有何区别?,opencl,openmp,distributed-computing,Opencl,Openmp,Distributed Computing,当程序在GPGPU上运行时,如果用OpenMP和OpenCL实现,它的执行会有什么不同 OpenMP是否通过OpenCL使用GPGPU? 如果没有,我可以直接使用的通用GPGPU API是什么(不需要在上面构建任何OpenMP/OpenCL) 另外,在Linux上,OpenMP只使用pthread来管理线程。除了OpenCL和CUDA,我找不到GPGPU的任何其他API,所以很明显(但相当痛苦)承认OpenMP在GPGPU上使用OpenCL(或者CUDA,如果GPGPU是由NVIDIA提供的,O

当程序在GPGPU上运行时,如果用OpenMP和OpenCL实现,它的执行会有什么不同

OpenMP是否通过OpenCL使用GPGPU? 如果没有,我可以直接使用的通用GPGPU API是什么(不需要在上面构建任何OpenMP/OpenCL)


另外,在Linux上,OpenMP只使用pthread来管理线程。除了OpenCL和CUDA,我找不到GPGPU的任何其他API,所以很明显(但相当痛苦)承认OpenMP在GPGPU上使用OpenCL(或者CUDA,如果GPGPU是由NVIDIA提供的,OpenMP就是这么智能的话)。

就我而言,OpenMP是一组编译器指令,用于在共享内存架构上提供并行性,而GPGPU通常不是这样的。
您可以同时使用这两个库来归档更好的性能,或者您可以使用,或者,可以准替代它们,或者您可以使用或这样的库-它们可以让您不费吹灰之力就使用GPGPU。

就我而言,OpenMP是一组编译器指令,用于在共享内存架构上提供并行性,而GPGPU通常不是这样的。
为了归档更好的性能,您可以同时使用它们,或者您可以使用,或者,它们可以准替代它们,或者您可以使用诸如或之类的库-它们可以让您不费吹灰之力就使用GPGPU。

OpenMP编译器和运行时供应商决定如何实现GPGPU卸载。技术和实现API各不相同。@hristoilev感谢您的评论。GPGPU开发周期的理解现在对我来说是一团糟:正如我所知,OpenCL公开了标准,GPGPGPU开发人员(和Xeon Phi)应该遵循这些标准才能称之为OpenCL兼容。它们今天都是这样称呼的,所以可以假设这些硬件是朝着OpenCL架构发展的。很好,但是!我们有OpenMP,它也提供不同于OpenCL的GPGPU接口。因此,OpenMP通过OpenCL使用GPGPU,或者有两种GPGPU开发标准,这是非常不可能的。OpenMP编译器和运行时供应商决定如何实现GPGPU卸载。技术和实现API各不相同。@hristoilev感谢您的评论。GPGPU开发周期的理解现在对我来说是一团糟:正如我所知,OpenCL公开了标准,GPGPGPU开发人员(和Xeon Phi)应该遵循这些标准才能称之为OpenCL兼容。它们今天都是这样称呼的,所以可以假设这些硬件是朝着OpenCL架构发展的。很好,但是!我们有OpenMP,它也提供不同于OpenCL的GPGPU接口。因此,OpenMP通过OpenCL使用GPGPU,或者有两种GPGPU开发标准,这是非常不可能的。