我正在阅读有关并行处理的OpenMP和其他主题,并发现其中大量声称CUDA或OpenCL将成为此类系统的未来。但是,我认为OpenMP的某些修改版本是最佳解决方案,并且没有看到GPU不应该运行线程的原因。
所以我的问题是,GPU能否像CPU一样运行线程,是否可以扩展OpenMP以支持GPU?这有什么理论问题吗?
我读到最新的OpenMP标准支持GPU但是没有一个实现。如果有一个实现,它将如何比“内核”更好或更差? OpenCL使用的模型?
答案 0 :(得分:6)
GPU可以像CPU一样运行线程
GPU线程和现代多核CPU线程的典型定义在行为和功能上有很大差异。 GPU线程在某种程度上具有支持线程的所有必要功能,但是尝试在GPU线程上强加CPU风格的线程模型通常会导致GPU性能不佳。 GPU线程需要以一致的方式在组中工作,以实现高性能。因此,(见下文)OpenMP4 加速器模型看起来与传统的多核CPU加速的OpenMP指令不同。
可以扩展OPENMP以支持GPU。
OpenMP 4具有加速器模型指令功能(OMP4中的新功能)。所以(理论上)将OpenMP样式加速扩展到加速器(GPU,Xeon Phi等)当然是可能的
至少对于GPU来说,这个OpenMP指令功能通常看起来明显不同于指令注释的类型,该指令注释将用于多核CPU上的普通/传统OpenMP使用。
不存在任何一个实现。
该标准最近发布,编译器供应商可能需要一些时间才能实现该标准。 rose compiler是面向研究的编译器的一个例子,用于测试(早期实现)OpenMP 4加速器模型。 Recent versions of intel ICC may have some support for OpenMP 4 targetting Xeon Phi, and Cray compilers may have some support for OpenMP 4 targetting GPUs (in Cray systems)。
另请注意,OpenMP是一个不断发展的标准,加速器模型非常新,因此未来可能会在某种程度上改变/发展,至少在加速器模型中是这样。
答案 1 :(得分:-1)