基于nsight_compute进行kernel性能分析

当利用nsight进行性能分析时,当涉及到内核级别的性能分析时,nvidia提供了系统级别(nsight system),和内核级别的性能分析工具(nsight compute)。

其中,内核级别的性能分析,可以检查kernel实现的性能好坏及bottleneck。

本次分析参考的kernel实现代码为:

https://github.com/siboehm/SGEMM_CUDA

本次主要对比的是cublas和基于naive cuda实现的kernel性能对比:
cublas的实现可以理解为最优解,而naive cuda的kernel没有进行,global memory。 共享内存或者寄存器相关的优化。

参考下列执行执行nsight compute的分析。。。

step 1: enble the usage of ncu

based on the first reference

step 2; generate report 
```
ncu -o profile_matrix  --set full ./a.out

```

step 3: use nsight compute to watch report


Reference:

[1] https://developer.nvidia.com/nvidia-development-tools-solutions-err_nvgpuctrperm-permission-issue-performance-counters<

### NVIDIA Nsight 和 TensorRT 开发指南 #### 使用NVIDIA Nsight进行性能分析 Nsight Systems 是一款用于端到端应用程序跟踪的工具,能够帮助开发者理解程序的行为并识别潜在瓶颈。该工具可以捕捉整个系统的活动,包括CPU线程、GPU计算和图形工作负载以及I/O操作等[^1]。 对于希望优化其应用性能的开发者来说,Nsight Compute 提供了详细的CUDA kernel性能数据采集能力。这使得工程师们可以在命令行界面下指定要收集的信息种类,并针对特定kernel执行深入剖析[^3]。 #### 集成TensorRT加速推理过程 TensorRT是一个高性能神经网络推理库,它专为生产环境中的部署而设计。基于CUDA架构之上构建而成,TensorRT提供了多种手段来减少延迟时间,比如自动化的层间融合、精度转换等功能[^2]。 为了使大型语言模型(LLM)更高效地运行,在准备阶段可以通过如下方式利用TensorRT: - **简化量化**:支持INT8甚至更低位宽的数据表示形式; - **内核调整**:自动生成适用于目标硬件的最佳实现方案; - **张量运算融合**:合并相邻的操作以降低开销; 这些特性共同作用确保LLMs能够在保持高吞吐率的同时达到极低的服务响应时间。 ```python import tensorrt as trt def build_engine(onnx_file_path, engine_file_path=None): TRT_LOGGER = trt.Logger(trt.Logger.WARNING) with trt.Builder(TRT_LOGGER) as builder, \ builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)) as network, \ trt.OnnxParser(network, TRT_LOGGER) as parser: config = builder.create_builder_config() # 设置最大批处理大小 builder.max_batch_size = 1 # 启用FP16模式 if builder.platform_has_fast_fp16: config.set_flag(trt.BuilderFlag.FP16) with open(onnx_file_path, 'rb') as model: if not parser.parse(model.read()): for error in range(parser.num_errors): print(parser.get_error(error)) return None engine = builder.build_serialized_network(network,config) if engine_file_path is not None: with open(engine_file_path, "wb") as f: f.write(engine) return engine ``` 此代码片段展示了如何创建一个简单的函数`build_engine()`,用来加载ONNX格式的预训练模型文件,并将其编译成可用于推断的TensorRT引擎。注意这里启用了半精度浮点数(FP16),如果平台支持的话,则可进一步提升效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值