CUDA学习(三)

     今天我讲讲CUDA所用到的编译器nvcc:

 —nvcc编译器根据配置编译CUDA C代码,可以生成三种不同的输出:PTXCUDA二进制序列和标准C

—nvcc可编译同时包含主机代码(在主机上执行的代码)和设备代码(在设备上执行的代码)的源文件。nvcc的基本流程包括分离主机和设备代码并将设备代码编译成汇编形式(PTX)或/和二进制形式(cubin对象)。生成的主机代码要么被输出为C代码供其它工具编译,要么在编译的最后阶段被nvcc调用主机编译器输出为目标代码。
—应用在运行时装载的任何PTX代码被设备驱动进一步编译成二进制代码。这称为即时编译。
—PTX类似于汇编语言,是为动态编译器JIT(即时编译)设计的输入指令序列。这样虽然不同的显卡使用的机器语言不同,JIT却可以运行同样的PTX。这样做使PTX成为一个稳定的接口,带来了很多好处:后向兼容性,更长的寿命,更好的可扩展性和更高的性能,但在一定程度上也限制了工程上的自由发挥。这种技术保证了兼容性,但也使新一代的产品必须拥有上代产品的所有能力,这样才能让今天的PTX代码在未来的系统仍然可以运行。 虽然PTX和JIT编译器提供了很高的性能,但也不是在所有场合都适用。某些独立的开发商倾向于牺牲性能,以获得更好的可确定性和可验证性。JIT编译器的输出会因为目标硬件和一些其他因素发生变化。
—编译的大概流程如下图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值