首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在OpenCL上使用OpenACC?

在OpenCL上使用OpenACC?
EN

Stack Overflow用户
提问于 2013-01-31 17:36:59
回答 4查看 8.7K关注 0票数 6

我对OpenACC是个新手,它是一个新的图形处理器加速编程标准。据我所知,OpenACC是一种编译器指令语言,我们可以直接在任何我们想要的地方加速代码,而不需要改变整个代码。这个编程标准将适用于图形处理器,这也不同于OpenMP。

现在我的疑虑出现在这里..

我们有用于加速的OpenCL,现在是OpenACC(它非常容易使用,只需给出编译器提示)。对于主机程序加速,我们可以简单地放上编译器指令,那么如果我们有一个内核呢?也就是说,现在我想写我的GPU(c语言)的代码,我必须做什么?像OpenCL一样,我需要写example.c &example.cl吗?那么需要添加OpenACC编译器指令吗?或者以哪种方式?如果是这样,那么OpenACC在这里有什么用,因为我们正在编写*.c和*.cl文件,(我们需要检查所有的内存约束以及所有用于编写OpenCL的内容,这是一项艰巨的工作)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-31 19:02:30

实际上,OpenACC很像OpenMP,但它的目标是GPU等加速设备。OpenACCs #pragma acc kernels将包含的循环转换为在图形处理器上执行的内核函数,而不是让OpenMP #pragma parallel for并行化多线程CPU的循环。现在必须手动完成的大部分工作(例如,在设备之间传输数据)都被编译器隐藏了。因此,您没有两个独立的编译单元。

这就是OpenACC的问题所在,而我对为什么现在的采用率很低的回答是非常低的:没有来自GCC或克隆的支持。当然,也有来自PGI和CAPS的商业解决方案,但如果没有这些其他编译器,您将疏远许多用户。

票数 8
EN

Stack Overflow用户

发布于 2017-01-11 23:58:28

更新: gcc6现在已经有了部分功能:

"GCC 6发行版系列包含了对OpenACC 2.0a规范的改进实现。

请参阅https://gcc.gnu.org/wiki/OpenACC

票数 3
EN

Stack Overflow用户

发布于 2020-08-09 11:46:32

更新(2020年8月):

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14622540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档