分类 未分类 下的文章

nvcc 编译过程

nvcc 编译分为两个阶段
首先将 .cu 编译为面向 虚拟架构 的 .ptx 代码 (stage1)
然后将 .ptx 编译为面向 实际架构 的 二进制代码 (stage2)

- 阅读剩余部分 -

cupti : CUDA profiling tools interface
搭建面向 CUDA 应用的 profiling 和 tracing 工具

CUDA dynamic parallelism : CDP

CUPTI 提供四种 API :

  • activity api
  • callback api
  • event api
  • metric api

CUPTI 在第一次调用 CUPTI 函数时懒惰初始化
cuptiSubscribe() : 最先调用,防止多个 CUPTI client 互相干扰

目前理解:CUPTI 分为 用户端 和 服务端, 服务端记录 CUDA 设备和 CPU 上产生的事件 CUpti_Activity,储存在 用户端提供的 Activity Buffer 上
CUPTI 不保证 activity 在 activity buffer 中的顺序
用户端 调用 cuptiActivityFlushPeriodcuptiActivityFlushAll

CUPTI 创建一个 worker thread,以减少对 application thread 的干扰

activate api

activate record : 记录事件,使用基类 CUpti_Activity
activity buffer : 将 activity record 从 CUPTI 转移到 client
使用 cuptiActivityEnable cuptiActivityEnableContext 初始化
activity kind