Cuda Graph (cuda 优化)

1、Nvidia 官网文档

cuda 官网文档 最早可查时间 2019年

https://developer.nvidia.com/blog/cuda-graphs/#:~:text=CUDA%20Graphs%20have%20been%20designed%20to%20allow%20work,a%20single%20CPU%20operation%2C%20and%20hence%20reduce%20overheads.

2、Cuda graph 作用

Cuda graph 通过掩盖 kernel 加载(下面展开详细说明)的时间,起到加速效果

3、如何起到加速效果

下面通过官网的示例 进行解释

示例运行的 Kernel,kernel 运行耗时 2.9 μs,运行条件如下  

 We can use the profiler to measure the time taken to be 2.9μs, where we are running on an NVIDIA Tesla V100 GPU using CUDA 10.1 (and we have set the number of threads per block as 512 threads). 

#define N 500000 // tuned such that kernel takes a few microseconds

__global__ void shortKernel(float * out_d, float * in_d){
  int idx=blockIdx.x*blockDim.x+threadIdx.x;
  if(idx

①  执行如下,平均 kernel 耗时 9.6μs(对比运行耗时 2.9 μs)

#define NSTEP 1000
#define NKERNEL 20

// start CPU wallclock timer
for(int istep=0; istep>>(out_d, in_d);
    cudaStreamSynchronize(stream);
  }
}
//end CPU wallclock time

分析耗时 ,在上文·中 适用 cudaStreamSynchronize() 函数,会导致在 一个kernel 执行完成前,下一个kernel 不能被加载(以 cpu 程序一条语句执行为例,包括 取指、译码、取操作数、执行,此处的加载类似执行之前的阶段,但应该要复杂的多 比如分配 Gpu 线程数、分配 shared mem)

Cuda Graph (cuda 优化)_第1张图片

                        说明: cuda  API   是 kernel 加载耗时, 下面的kernels 是运行耗时

② 通过将 cudaStreamSynchronize() 后移,将kernel 加载 和 执行的时间进行掩盖(掩盖较短的那个,这里指 kernel 加载,耗时 3.8 μs(对比运行耗时 2.9 μs)

// start wallclock timer
for(int istep=0; istep>>(out_d, in_d);
  }
  cudaStreamSynchronize(stream);
}
//end wallclock timer

Cuda Graph (cuda 优化)_第2张图片

                              说明: cuda  API   是 kernel 加载耗时, 下面的kernels 是运行耗时

③ 为了更好的掩盖 kernel 加载的延迟,nvidia 提供了 Cuda Graph, 耗时 3.4μs(对比运行耗时 2.9 μs)

使用静态图,只在循环第一次生成 cuda Graph,其余循环加载 cuda graph

bool graphCreated=false;
cudaGraph_t graph;
cudaGraphExec_t instance;
for(int istep=0; istep>>(out_d, in_d);
    }
    cudaStreamEndCapture(stream, &graph);
    cudaGraphInstantiate(&instance, graph, NULL, NULL, 0);
    graphCreated=true;
  }
  cudaGraphLaunch(instance, stream);
  cudaStreamSynchronize(stream);
}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

阿丘公司介绍:

目前做 工业视觉软件的  国内最强 选手,没有之一

阿丘科技创办于2017年,创始团队源自清华人工智能实验室,研发团队成员主要来自清华、北航、中科院等知名院校。基于计算机视觉核心技术的研发,将AI技术应用于智能制造领域,以解决富有挑战性的行业难题。公司研发的面向智能制造的AI深度学习视觉检测平台软件AIDI目前已在多家行业头部客户上线使用,助力消费电子、汽车、新能源、医药、半导体、物流等多场景来解决缺陷定位、检测、分类等工业视觉难题。已成为国内工业AI平台的领跑者。

个人评价

本人 2021 年 3月份入职 ,算法部门 高性能计算 

公司氛围很好,大多都是年轻人,有各种线下活动(乐队、乒乓球、狼人杀、桌游)

公司上次融资接近 2000w 美金,目前很多项目已经有收益(接近收支平衡了),不要担心公司会倒闭(虽然事创业公司,现在已经活了 5 个年头了)

上班 9:30 ~ 6:30 ,中午一个半小时休息时间(大部分同事都是 2个小时休息时间),所以 7 个小时工作时间,

公司主要业务: 以机器视觉(深度学习)的工业化质检,不是互联网公司

本人工作接近1年,感觉还是比较开心的 ,嘿嘿

薪资 ok,  如 高级算法 30-60k 

微信号 :i_scream_andicecream 

欢迎加好友,互利互惠

如果面试我们公司可以联系我,毕竟内推了有奖金,嘿嘿嘿

 内推码: NTAHmCz

内推码:NTAHmCz

内推码:NTAHmCz
官网  : 阿丘科技

你可能感兴趣的:(cuda,深度学习,人工智能)