Fak*_*een 5 kernel opencl openacc
我是OpenACC的新手,这是GPU加速和CPU的新编程标准.根据我的知识,OpenACC是一种编译器指令的语言,我们可以直接在任何地方加速代码,而无需更改整个代码.与OpenMP不同,此编程标准适用于GPU.
现在我怀疑在这里提出..
我们有OpenCL加速,现在是OpenACC(它非常容易使用,只需提供编译器提示).对于主机程序加速,我们可以简单地放置编译器指令,那么如果我们有内核呢?即现在我想写我的GPU(c语言)代码,我该怎么办?像OpenCL我需要编写example.c&example.cl ?? 那么需要添加OpenACC编译器指令吗?或者以哪种方式?如果是这样,那么OpenACC在这里的用途是什么,因为我们正在编写*.c和*.cl文件,(我们需要检查所有内存约束以及编写OpenCL的所有内容,这是一项艰巨的工作).
实际上,OpenACC很像OpenMP,但目标是加速设备,如GPU.#pragma parallel forOpenACC 不是让OpenMP 并行化多线程CPU的循环,而是#pragma acc kernels将包含的循环转换为在GPU上执行的内核函数.现在手动完成的大部分工作(例如,将数据从设备传输到设备)都被编译器隐藏.因此,您没有两个单独的编译单元.
现在这里是OpenACC的问题,我现在采用的答案非常低:没有GCC或Clang的支持.当然,有PGI和CAPS的商业解决方案,但如果没有这些其他编译器,您将疏远许多用户.