问题描述
我正在收集有关异构计算的信息。我遇到过SYCL和OpenACC。我认为OpenACC具有许多编译指示(类似于OpenMP)来抽象GPU计算(OpenCL或CUDA或两者兼有?)。但是,在我看来,SYCL也在尝试提取代码的GPU部分。
那么,SYCL和OpenACC是竞争框架还是它们可以互相补充? 如果它们是免费的,我可以一起使用吗?
我在理解这些框架之间的差异时遇到了麻烦,在我看来它们似乎是竞争对手。
解决方法
Internet上有很多关于OpenACC和SYCL的资源,您可以检查这些资源以了解更多信息。它们是完全不同的,OpenACC与OpenMP更相似,但主要致力于仅支持Nvidia硬件。 SYCL可以用于针对来自不同供应商的更多处理器集,并使用标准C ++代码。
简而言之:
像OpenMP一样,OpenACC启用基于指令的并行编程,例如通过使用#pragma标记要并行运行的代码。相比之下,SYCL与使用C ++代码并行执行代码的CUDA更相似,并行代码(内核)是用C ++编写的。
此slide deck可以帮助您更好地了解SYCL。