前言


上一篇文章简单了介绍了nvcc预定义的宏,以及支持的编译阶段,对应的输入文件后缀和输出文件的默认名。本篇文章了解CUDA源文件编译的整个workflow。

Overview


CUDA编译的工作原理如下:输入程序经过设备编译编译预处理,编译为CUDA二进制(cubin)和/或PTX中间代码,被放置在一个fatbinary。 输入程序再次预处理以供主机编译,嵌入到 fatbinary, 并将 CUDA 特定 C++ 扩展转换为标准 C++ 构造。 然后 C++ 主机编译器将把带有嵌入式 fatbinary 的host code编译成host object。

每当主机程序启动设备代码时,CUDA 运行时系统都会检查嵌入式 fatbinary 以获得当前 GPU 的适当 fatbinary image。

CUDA 程序默认采用the whole program compilation mode全程序编译模式编译,即设备代码不能从单独的文件中引用实体。在全程序编译模式下,设备链接步骤不起作用。单独编译和整个程序编译的更多信息,将在第六章进行介绍。

总结


本文主要的take away: CUDA源文件会先被针对device进行预编译,然后编译为中间文件fatbinary, 然后由主机编译把host code with fatbinary为 host object.

下一篇文章会详细介绍关于GPU 编译相关的内容。

解读CUDA Compiler Driver NVCC - Ch.3相关推荐

  1. 解读CUDA Compiler Driver NVCC - Ch.1 - Introduction

    前言 从这个系列开始,我会解读<CUDA Compiler Driver NVCC>的内容.通过这本书,可以更深刻地了解GPU 编译的底层相关的设计. CUDA Programming M ...

  2. 解读CUDA Compiler Driver NVCC - Ch.5

    前言 前面几篇文章,我们了解了NVCC的作用,nvcc编译的two stage, 每个stage做了什么,怎么去选择虚拟架构和真实架构,JIT编译的原理,好处和弊端以及解决方案.本文我们将了解几个实际 ...

  3. 解读CUDA Compiler Driver NVCC - Ch.4

    前言 第四章是详细的NVCC选项描述和用法,我们可以把它当作工具手册,在需要的时候去查看即可,感兴趣的话也可以花时间去了解.但现在,更重要地是理解,NVCC在编译CUDA程序的时候,具体做了什么,有什 ...

  4. 解读CUDA Compiler Driver NVCC - Ch.2 - Compilation Phases

    前言 上篇文章我们了解了nvcc是做什么的,本篇文章我们会了解Compilation Phases,编译阶段,nvcc预定义的宏,编译支持的文件格式等. NVCC Identificaiton Mac ...

  5. CUDA 并行计算 机器学习 NVCC CUDNN CUDATOOLKIT CUDA DRIVER 显卡驱动(NVIDIA Driver) 显卡(GPU)

    微信公众号: 点击蓝色字体小白图像与视觉进行关注 关于技术.关注yysilence00.有问题或建议,请公众号留言 整理知识,学习笔记 发布日记,杂文,所见所想 CUDA 并行计算 机器学习 NVCC ...

  6. 报错 The CUDA compiler identification is unknown;No CMAKE_CUDA_COMPILER could be found.

    在cmake的编译过程中,可能会报找不到cuda编译器的错误,如下 -- The CUDA compiler identification is unknown CMake Error at CMak ...

  7. Linux查看CUDA版本以及nvcc: command not found

    在日常使用中,在配置镜像以及使用开源网站时经常需要查询CUDA版本,版本也确实十分的重要.一般的我们有三种常见的查询方式. 查看当前Cuda的版本,即实际安装的Cuda版本 nvcc -V(nvcc ...

  8. Nvidia显卡驱动与Cuda关系,Cuda的driver API 和runtime API

    Total 从今年年初反复安装多次Ubuntu+Win双系统,并配置深度学习环境,对Nvidia显卡驱动与Cuda关系认识应该更加清晰. 在配置好的环境中使用nvidia-smi和nvcc -V两个命 ...

  9. 【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?

    一.如何查看CUDA版本? 1.1 查看runtime版本的CUDA (1)nvcc -V或nvcc --version (2)在CUDA的include文件夹中找到cuda.h文件 打开后搜索ver ...

最新文章

  1. istringstream ostringstream stringstream
  2. Android源代码介绍,Android-Log源码详解
  3. java 类一定要声明成public_类和对象练习题
  4. Vue.use()是什么?
  5. 苏宁大数据怎么运营_数据驱动经营 苏宁大数据用户标签入选2019TOP100全球软件案例...
  6. 零基础学Java的10个方法
  7. 基于深度学习(端到端)的OCR文字识别
  8. .NET Framework学习笔记(八)
  9. Npm更新移除包的规则
  10. 1156 Sexy Primes – PAT甲级真题
  11. 微信棋牌平台开发架设HTML5手机端页面缩放搭建教程
  12. 《战国策》的两个逻辑
  13. 打印1900年到2100年之间的闰年,一行打印4个
  14. 前端实现五子棋小游戏2(AI实现人机对战)
  15. android debug SIGABRT (signal SIGABRT)
  16. 07 面向对象编程-结构、封装、继承、多态、接口
  17. CSS 渐变色 (超好看)
  18. 计算机摄像头原理,教你了解网络摄像机的工作原理
  19. 计算机发论文攻略(收藏)
  20. Linux驱动技术(八) _并发控制技术

热门文章

  1. java坦克大战(2.0)
  2. 一台云服务器绕过企业微信域名验证本地开发
  3. Android手机直播
  4. 武汉创业者声讨网易:占用我们LOGO 还大张旗鼓做起销售
  5. nginx安装、nginx前端配置、后端配置、前后端分离配置、https支持(ssl配置)、负载均衡配置、nginx location详解
  6. 手动下载VMware Tolls.ISO
  7. 『Citric』天空中的繁星 · DP
  8. 如何使用Element Plus 提供的Icon图标库
  9. 计算机人工智能分数,分数一般想学人工智能?这6所双一流大学是首选
  10. java中左移运算符解释_java左移右移运算符