随着GPU通用计算应用的推广及其应用领域的不断扩大,GPU架构的发展非常迅速。主流芯片厂商根据实际计算需求,不断发展自己的GPU架构来满足日益增长的市场和性能需求。NVIDIA已经发布了如Fermi、Kepler和Maxwell以及Pac-all架构的GPU,AMD也发布了Cypress、Cayman、GCN架构的GPU。这些GPU都具有不同的架构特点,对应的优化策略也有差异。这种GPU架构的日益多样性,对算法移植特别是性能移植提出了新的挑战。
幸运的是,虽然不同GPU架构在优化方法选择以及优化细节上会有不同,但是从整体上看,GPU架构又具有很好的统一性,即都是大规模细粒度并行处理器,且具有层次式的架构特点,这主要体现在四个方面:
在计算单元的组织上,GPU由多个CU(Compute Unit,计算单元)组成,每个CU又由多个PE(Processing Unit,处理部件)组成。
在计算单元的组织上,GPU由多个CU(Compute Unit,计算单元)组成,每个CU又由多个PE(Processing Unit,处理部件)组成。
从内存组织上,从只能被一个线程访问的私有内存,到能够被work-group内所有线程共享的本地内存,再到可被所有线程访问的全局内存。
从内存组织上,从只能被一个线程访问的私有内存,到能够被work-group内所有线程共享的本地内存,再到可被所有线程访问的全局内存。(www.daowen.com)
在线程调度上,GPU一般都采用静态顺序调度模式,线程和数据映射在GPU kernel启动之前就已经确定,线程以work-group为单位被硬件顺序调度。
在线程调度上,GPU一般都采用静态顺序调度模式,线程和数据映射在GPU kernel启动之前就已经确定,线程以work-group为单位被硬件顺序调度。
在编程方式上,都采用了Host+Device的编程模式,即GPU程序依然由CPU端控制,CPU设定开启线程的数目后,将计算任务发送到GPU端执行,线程组织也都采用了Grid-Block-Thread的层次式组织方式。GPU这种统一的架构特点和线程组织调度方式,使性能移植成为可能。Jia给出了在不同GPU计算平台上优化策略的选择及应用。
在编程方式上,都采用了Host+Device的编程模式,即GPU程序依然由CPU端控制,CPU设定开启线程的数目后,将计算任务发送到GPU端执行,线程组织也都采用了Grid-Block-Thread的层次式组织方式。GPU这种统一的架构特点和线程组织调度方式,使性能移植成为可能。Jia给出了在不同GPU计算平台上优化策略的选择及应用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。