解读CUDA Compiler Driver NVCC - Ch.4

本文详细解读CUDA Compiler Driver NVCC的工作原理,包括GPU代际差异、二进制兼容性、虚拟架构及其对CUDA程序的影响。重点讨论了nvcc的两阶段编译模型,以及如何选择虚拟和真实GPU架构以确保应用兼容性和性能。同时,介绍了即时编译(JIT)和fatbinaries的概念,以解决GPU应用的启动延迟和跨架构执行问题。
摘要由CSDN通过智能技术生成

前言

第四章是详细的NVCC选项描述和用法,我们可以把它当作工具手册,在需要的时候去查看即可,感兴趣的话也可以花时间去了解。但现在,更重要地是理解,NVCC在编译CUDA程序的时候,具体做了什么,有什么作用,这些内容,我们将在完成本文阅读后得到答案。

GPU Generations

为了让GPU 架构进化,NVIDIA GPU被发布为不同的generation。新的generation会引入功能性或者芯片架构上的重大改进,而同一个generation的GPU models只有轻微的配置上的区别,这些配置上的区别会相应地去影响功能或者性能,或者两者都会影响。

cross-generation的GPU应用的二进制兼容性是不受保证的。比如说,一个CUDA程序,它在FermiGPU上进行了编译,很可能在Kepler GPU上是无法运行的,反之亦然。因为,不同generation间的指令集(instruction set)和指令编码(instruction encoding)是不同的。

相同generation的二进制兼容性,需要在特定条件下才能保证,因为必须要有一样的基本指令集。包括这种情况:两个GPU versions之间没有functional differences, 或者其中一个version的functionality被包含在另一个version(比如说,base Maxwell version sm_52 ,它的功能是其他Maxwell versions的子集: 那么任何为sm_52编译的CUDA代码都可以运行在其他的Maxwell GPU上)。

GPU Feature List

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值