内核构造和并行构造之间的区别

pg1*_*927 14 cuda gpu gpgpu openacc

我研究了很多文章和OpenACC的手册,但我仍然不明白这两种结构的主要区别.

Rob*_*lla 20

kernels如果您之前编写过GPU(例如CUDA)内核,那么指令是更常见的情况,可能是您可能会想到的情况. kernels简单地指示编译器处理一段代码,并产生任意数量的"内核",任意"维度",按顺序执行,以将特定代码段并行/卸载到加速器.该parallel构造允许更精细地控制编译器将如何尝试在加速器上构建工作,例如通过指定并行化的特定维度.例如,作为parallel指令的一部分,工人和帮派的数量通常是不变的(因为通常只隐含一个基础"内核"),kernels

本PGI文章中包含对此特定问题的良好处理.

引用文章摘要:"OpenACC内核和并行构造都试图解决同样的问题,识别循环并行性并将其映射到机器并行性.内核构造更隐式,使编译器更自由地查找和映射并行性并行构造更加明确,需要程序员进行更多分析,以确定何时合法和适当."