OpenMP可以扩展到包括图形处理器吗?

use*_*550 3 multithreading cuda gpu openmp opencl

我正在阅读有关并行处理的OpenMP和其他主题,并发现其中大量声称CUDA或OpenCL将成为此类系统的未来.但是,我认为OpenMP的某些修改版本将是最佳解决方案,并且没有看到GPU不应该运行线程的原因.

所以我的问题是,GPU可以像CPU一样运行线程吗?可以扩展OpenMP以支持GPU吗?这有什么理论问题吗?

我读到最新的OpenMP标准支持GPU,但是没有一个实现.如果有实现,那么它比OpenCL使用的'内核'模型更好还是更差?

Rob*_*lla 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使用.

没有任何一个实现.

该标准最近发布,编译器供应商可能需要一些时间来实现该标准.所述玫瑰编译器是用于测试的(早期实施的)的OpenMP 4加速器模型研究型编译器的一个例子. 最近版本的intel ICC可能对OpenMP 4目标Xeon Phi有一些支持,而Cray编译器可能对OpenMP 4目标GPU(在Cray系统中)有一些支持.

另请注意,OpenMP是一个不断发展的标准,加速器模型是相当新的,因此未来可能会在某种程度上改变/发展,至少在加速器模型中是这样.