央视网|中国网络电视台|网站地图
客服设为首页
登录

中国网络电视台 > 新闻台 > 新闻中心 >

不仅是游戏 谈Fermi架构下通用计算的优化

发布时间:2012年02月13日 12:41 | 进入复兴论坛 | 来源:pconline | 手机看视频


评分
意见反馈 意见反馈 顶 顶 踩 踩 收藏 收藏
channelId 1 1 1
锘�

更多 今日话题

锘�

更多 24小时排行榜

锘�

  CUDA是NVIDIA的GPU通用运算技术,它运算速度高效精炼而著称。而X86则在通用领域有着天然的优势,即具备最广泛的软件应用支持。相信,至今没有一个指令级体系可以拥有如此广泛的软资源。CUDA要做到如此兼容,并非简单CUDA-x86编译器可以解决。

  不过广泛的支持是要付出一定的代价。因此每一代新的x86处理器设计时都需要兼容前一代处理器的指令。所以导致x86臃肿的架构。同时,你可以发现,同样的应用可以不加修改地在新x86处理器上得道更高效的运行。


四块Tesla组成

  相对于通用架构的CUDA体系,在代码编写方面是一种更加接近硬件的语言,因此如果要在新CUDA硬件上更加高效实现以往应用,则需要在指令应用到新的技术。在x86硬件方面,在此10年几乎没有革命性的变化,相对而言G80自从发布以来,CUDA硬件拥有了多次不为用户所知的重要变化。

  首次是最原始的G80架构,代表的产品是8800GTX。紧跟的是GT200核心的变革,最后也是最新的CUDA硬件Fermi的到来。

流处理器越多实时线程越多

  CUDA硬件区别一般的多核处理器,其最大不同是拥有更多的运算单元。举例说,一般的4核处理器只拥有4个物理处理器核心。而一款GTX480却拥有480个流处理器,而GTX580更具备512个CUDA核心之多。

  因此,高效的应用需要程序中建立足够多的线程让GPU充分地工作。当然,一般较为简单的做法是为不同的核心创建不同的代码,让其执行的时候去识别不同设备ID来调用不同的内核代码。

  当然,更为高效的做法是编写一个具备自适应核心数量的代码。此方法不但可以具备良好的兼容性,同时更可以不加修改地适用于往后的新硬件。

  在流处理器架构上,每一代产品都有不同的变化。首次采用此命名是因为该单元具备通用执行的能力。即该单元可以同时执行整型和浮点指令。在G80芯片上,SPs单元具备全速的单精度浮点运算以及24位整型指令。而在Fermi的CUDA核心里面,便可以同时执行全速的单精度以及32位整型运算。


Block中的线程映射

  注释:在CUDA中所说的shared memory并非直接的翻译为共享内存,它是由于高速晶体管组成的高速内存,速度和寄存器高速缓存一致,并且对程序员不透明。而且shared memory和代码中的指令同名,因此一般不作翻译。

  新存储体系的应用优化

  存储体系是变化是GPU向CPU靠拢的一个标志,第一代的G80的存储体系和GT200体系都是寄存器、shared memory和DRAM(显存)架构。因此,一般高级应用需要到高速缓存来提速的时候,通常需要shared memory代替或者用只读的纹理缓存代替。由于硬件的限制,此前两代对于一些通用算法实现的效率受制在高速缓存上。

热词:

  • Fermi
  • Tesla
  • 核处理器
  • 通用计算
  • 显存
  • 处理器核心
  • shared
  • memory
  • GPU
  • 线程
  • 搜索更多Fermi Tesla 的新闻