我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:刘伯温论坛 > 分别编译 >

AMD HCC C++CUDA 编译器 QA

归档日期:04-13       文本归类:分别编译      文章编辑:爱尚语录

  每年高性能计算或者说超算的盛事主要有两个,分别是年中的ISC(国际超算研讨会)和年末的SC(超算研讨会),前者的历史可以追溯到1986年,而后者则是1988年。

  它们受瞩目的其中一个原因是自1993年年中开始,每隔半年公布一次的Top500超算排名榜就是分别在这两个盛会上发布。

  超算500强是全球瞩目的计算性性能排名榜,每到排行榜发布之日,全球各大媒体都会发布相应的消息,即使你不是这个行业内的人士也会因此或多或少得知有这么一个排行榜。

  既然大会受到了媒体的瞩目,因此很多行业内的知名企业也会藉此机会发布各自的最新技术和产品,而在这次的SC15上美国AMD公司则公布了一条非常轰动业界的消息,这就是该公司宣布将推出名为BoltzmannInitiative的工具包,能够将CUDA代码转换为可以在AMDFirePro上执行的二进制代码。

  众所周知,当前的GPU或者说异构计算编程阵营主要有两派,即OpenCL和CUDA,因为当年NVIDIA抢闸推出了TeslaGPU,在学界、产业等多个领域以惊人的魄力力推基于Tesla的CUDA编程框架,许多GPU计算项目因此选择了CUDA。

  在OpenCL以及微软的DirectCompute推出的时候,也大量借鉴了CUDA的多层次化并行、内存设计,例如OpenCL中的许多术语其实都可以在CUDA中找到其来源,某种程度上,最初的OpenCL就是CUDA的别名开放版。

  从编程语言的角度,OpenCL属于开放标准,而CUDA则完全控制在NVIDIA手里,有自己的编译器(nvcc),而OpenCL则是以库的形式提供,可以在C等语言中以动态或者静态的方式链接,使用现有的编译器即可。

  CUDA是专有的开发环境,必须使用支持CUDA显卡才能使用,因此用户选择了CUDA的话,那就只能选择NVIDIA的显卡。

  而AMDBoltzmannInitiative的出现可以在一定程度上改变这个局面,CUDA编程人员可以在NVIDIA和AMDGPU加速器之间根据自己的预算、应用环境、性能需求进行自行的选择,不再仅仅限于某个厂商的产品。

  随着BoltzmannInitiative的发布,人们也对此提出了一系列疑问,例如BoltzmannInitiative的推出是否意味着AMD要全面转向CUDA、NVIDIA是否答应等等,这些问题其实在官方的资料中大都有答案,下面就让我试试看根据这些资料就大家常见的问题提供个人的见解。

  答:BoltzmannInitiative是AMD公司针对旗下服务器级APU、GPU产品的工具包,目的是为开发人员提供一个比CUDA更舒适的超算开发环境。

  1、驱动程序--针对服务器版FirePro和Linux而特别定制的HSA+驱动程序。

  答:根据AMD的介绍,该公司将会提供一个专门的64-位Linux驱动程序,该驱动程序针对Linux的headless操作进行了全新设计,而在此之前AMD的OpenCL驱动headless模式属于技巧性实现。

  所谓的headless就是显卡不提供显示输出,没有物理键鼠等用户界面,是典型的超算应用环境。

  当显卡提供显示输出的情况下,驱动程序需要每隔一段时间就检查GPU上跑的程序是否已经完成,在Windows里这个时间是5秒左右,如果5秒还没执行完,操作系统就会对显示驱动进行复位操作,相当于强制停止运行该程序。

  对于显示输出来说这样被称作看门狗的机制是合理的,因为现在的人机交互界面都需要显卡的参与,如果显卡长时间忙着一件事情就会导致系统看上去瘫痪了。

  但是如果这片显卡只是用作加速卡而不参与显示输出(所谓的headless模式)的话,看门狗的存在意义或者机制就需要调整了。

  超算应用大部分都是在Linux下进行开发、使用的,这有两个原因,一个是在Linux的工具链比较强大、有较多的社区支持,另一个原因是这次AMD提供的编译器是基于Clang/LLVM这个基础架构目前在Linux要比Windows成熟得多(Windows下涉及到运行时库的问题,相当棘手),这都涉及到最终用户的使用成本问题。

  这个驱动或者说开发环境被称作HSA+的原因是因为这是首次把HSA概念注入到独立的显卡上,在此之前,你要是留意HSA的介绍,都会看到完全是在讲APU的,APU当然可以用作超算,但是性能先决的情况下,显然还是需要专用的加速卡。不过,HSA+作为一个扩展集合目前并非HSA组织的标准,所以这个驱动暂时还不会在非FireProS系列的其他显卡上实现。AMD未来有可能会将这些扩展开源。

  有了HSA+以后,独立显卡和CPU就可以使用单一统一内存寻址空间,降低程序开发的难度,并且对性能会有一定的帮助。

  答:HCC是BoltzmannInitiative的重要组成部分,是之前的HSA编译器上的加强版本,提供了C11、C++14、C++17、OpenMP4.0的支持,不管是CPU还是GPU的代码,都可以透过这个编译器来编译,无需像OpenCL那样需要另外的编译器来编译。

  答:HIP就是异构计算迁移界面(Heterogeneous-computeInterfaceforPortability),它包含了一个名为HIPifyTools的工具,可以自动把CUDA源代码转换为HIP源代码,我们目前尚未得知这个HIP源代码是长什么样子(应该就是上面提到的HCC所能支持的C/C++/OMP代码)的,但是HIP代码可以既可以被AMDHCC编译也可以被NVCC编译(透过HIP头文件让NVCC实现HIP支持)。

  答:首先,HIP并不会让NVCC编译的二进制代码在AMDGPU上运行,但是它提供了一个重要的技术手段,可以把CUDA代码转换成HCC或者NVCC支持的代码,这些HIP代码用HCC编译后就能够在AMDFireProS系列GPU上运行了。

  其次,由于HIP的存在,CUDA开发人员可以把以往的代码很快地往通用型的HIP代码上移植,至少在Linux下是这样,确保代码可以在AMDFirePro和NVIDIA的GPU上运行。

  答:BoltzmannInitiative的出现与AMD是否转向CUDA无关,它的三大核心主要目的是为了让程序员可以更舒适地编写异构计算代码,将CUDA转换为HIP代码只是其中的一个功能,目的是一致的。

  答:BoltzmannInitiative的HIP转换器属于源代码级的转换,HCC并不是直接对CUDA代码进行编译、编译出来的二进制代码也只能在AMDFireProS系列专业卡执行,所以BoltzmannInitiative不太可能引起法律上的问题。

  答:根据目前看到的资料,BoltzmannInitiative只对FireProS系列有影响,而且仅限于Linux下。这其中的原因应该是BoltzmannInitiative本身是希望加强AMD在超算领域的地位,而且像HSA+里的独立GPU统一内存寻址模式,在游戏和工作站应用中基本上是不需要的,所以这个特性最适合在FirePro上实现。

  特别提醒:目前关于BoltzmannInitiative的信息还不是很完整,而且距离正式发布尚有一段时间,因此文中的内容可能会与实际有出入,仅代表作者本人一家之言,请读者随时关注相关的最新报道。

  深圳KF景丰/0755-83295070(深圳市福田区深南中路佳和华强大厦B座21楼)

  广州KF景丰/0755-83295070(广州天河区石牌西路1-7号太平洋数码广场B场G306室)

  上海KF景丰/0755-83295070(上海市徐汇区漕溪北路41号汇嘉大厦太平洋数码广场一期16楼1608室)

本文链接:http://saltstudios.net/fenbiebianyi/4.html