6.6.4.3、OpenACC
OpenACC,开放式并行编程标准,程序员能够轻松利用异构 CPU/GPU 计算系统的强大能力。和CUDA一样,是并行计算的主要平台架构。
6.6.4.3.1、简介
OpenACC 为并行程序员给编译器提供简单的提示,通过指令,使编译器能够识别哪些代码部分需要加速,无需程序员修改或改编底层代码本身。简化并行编程标准,把计算任务映射到加速器这方面,指令向编译器呈现出并行机制,从而让编译器能够更好执行工作。
OpenACC 指令由 PGI、Cray 以及英伟达在 CAPS 的支持下开发而成,是多家企业希望利用指令来简化 GPU 编程模型的一个共同愿景。硬件厂商和技术协会一起,这些企业均致力于支持一种共同的编程标准。共同把并行编程技术推向前进。
OpenACC指令与OpenMP指令工作方式很类似,都是指令级别编程,适用于高度数据并行代码。可插入标准的C,C + +和Fortran程序直接指导编译器进行某些代码段的并行。这些并行的代码,编译器会特别注意数据在CPU和GPU(或其它)之间来回转移的逻辑关系,并将计算映射到适当的处理器上。
这些指令由硬件支持,不需要较大的改动,相对小的改动以标示出加速并行区域。指令设计适用于一个通用并行处理器,这样相同的代码可以运行在多核CPU、GPU或任何编译器支持的其它类型的并行硬件上。