Parallel processing 在同一个程序中结合CUDA、OpenCL和OpenACC的可能性有哪些?

Parallel processing 在同一个程序中结合CUDA、OpenCL和OpenACC的可能性有哪些?,parallel-processing,cuda,opencl,nvidia,openacc,Parallel Processing,Cuda,Opencl,Nvidia,Openacc,每种语言都有其优点和缺点,但将它们结合起来又有什么优点呢?OpenACC显然与CUDA有一定程度的互操作性。另一方面,OpenCL无法使用OpenACC或CUDA。因此,无论你认为这样做有什么好处,都无法做到你所要求的 通常,在标准C/C++和Fortran中使用OpenACC进行高级开发和数据管理。然后,如果您需要对内核进行更高程度的控制(即,如果您认为可以以失去一些可移植性为代价获得更好的性能),那么您可以在CUDA或OpenCL的较低级别模型中对内核进行编码。但是你不可能同时完成所有这些任

每种语言都有其优点和缺点,但将它们结合起来又有什么优点呢?

OpenACC显然与CUDA有一定程度的互操作性。另一方面,OpenCL无法使用OpenACC或CUDA。因此,无论你认为这样做有什么好处,都无法做到你所要求的


通常,在标准C/C++和Fortran中使用OpenACC进行高级开发和数据管理。然后,如果您需要对内核进行更高程度的控制(即,如果您认为可以以失去一些可移植性为代价获得更好的性能),那么您可以在CUDA或OpenCL的较低级别模型中对内核进行编码。但是你不可能同时完成所有这些任务。

但是如何组合它们呢?这是一个实际的问题?OpenACC可以与CUDA互操作,因此可以组合它们。不过,我不确定是否要将CUDA与OpenCL混合。@talonmies OpenACC与CUDA以及OpenCL完全互操作,虽然我自己还没有与OpenCL合作过,但这应该是一个与CUDA混合时类似的过程。本博客提供了一个很好的概述,举例说明OpenCL不能在NVIDIA平台上与CUDA交互,扩展到OpenACC也不能。OpenCL运行时不一样,PTX方言也不一样,编译器也不一样你是正确的,你不能在NVIDIA平台上混合使用OpenCL和CUDA。但OpenACC与OpenCL可互操作。当我们(PGI)支持AMD设备时,我们使用OpenCL作为OpenACC的后端。因此,虽然实际的支持级别将取决于特定目标加速器的编译器实现,但OpenACC标准本身同时支持这两个方面。这是一个太宽泛的问题。此外,这些都不是“语言”,尽管它们包括用于编写计算内核的语言。最后,CUDA重视GPU方面的工作,其他方面的工作范围更广。那么-你到底想达到什么目的呢。。。将3个流行语加在一起只会给你带来时尚性的优势。大概