- 博客(89)
- 资源 (1)
- 收藏
- 关注
原创 [C++] traits机制
这些is_xxx的函数,如何定义的; 有什么可以学习的点std::enable_if::type的使用c++的原则就替换失败并非错误(SFINAE)。std::enable_if 就是满足条件时类型是有效的所谓的SFINAE规则就是在编译时进行查找替换,对于重载的函数,如果能够找到合适的就会替换,如果第一个不合适并不会报错,而会使用下一个替换直到最后一个,如果都不满足要求,那么才会报错。出现二义性的话也会报错。主要两个应用类型判断,可以自定义类型判断返回值指定,根据输入类型判断返回值
2025-06-21 17:46:20
953
原创 [CUDA] cuda的一些实用工具
本文介绍了两种GPU数据打印工具和性能分析工具。打印工具包括直接在GPU上打印数据的CUDA模板函数和将数据传回CPU打印的方法。性能分析部分详细介绍了NSight System和NSight Compute的使用:NSight System用于可视化性能报告,可分析stream调用、内存泄露和函数并行性;NSight Compute则专注于CUDA内核的详细性能指标分析。文章还提供了启动/停止评测的脚本方法,适合对大型应用进行分段性能分析。这些工具能有效帮助开发者调试GPU程序和优化性能。
2025-06-21 17:43:08
562
原创 [CUDA] cub库的使用
CUB(CUDA Unbound)是NVIDIA提供的高性能并行计算组件库,主要针对CUDA编程模型各层级(Warp/Block/Device)提供可复用的集合操作,包括排序(BlockRadixSort)、选择(DeviceSelect)、规约(reduce/scan)等核心功能。其特点如下: 分层设计:支持Warp-wide、Block-wide和Device-wide三个级别的并行操作,例如BlockRadixSort需配合BlockLoad/Store处理数据补齐问题。 典型应用场景: 非零元素提取
2025-06-21 17:42:01
693
原创 [AI算法] 什么事RoPE scaling
RopeScaling技术通过频率缩放扩展Transformer模型上下文长度,其中Dynamic NTK-Aware Scaling和YaRN是主流方法。Dynamic NTK基于神经切核理论动态调整RoPE频率参数
2025-06-01 17:18:47
909
原创 [AI算法] LLM中LoRA的占用显存没有减少多少?
LoRA微调方法虽能减少参数数量,但显存占用仍较高,主要原因是计算图完整构建导致中间特征无法及时释放。LoRA输出特征图与原始模型大小相同,需参数融合送入后续计算。相比之下,torch.no_grad最节省显存(不构建计算图),requires_grad=False仅停止梯度回传,而eval()模式会影响BN/Dropout层行为。这些差异导致显存优化效果不如预期。
2025-06-01 16:27:44
333
原创 [AI算法] LLM中的gradient checkpoint机制
梯度检查点(Gradient Checkpoint)是一种深度学习显存优化技术,通过在训练过程中选择性保存中间激活值来降低内存消耗。该技术以Transformer Block为单位,仅保存输入输出,在反向传播时重新计算中间结果,从而大幅节省显存占用。适用于训练大型模型、增加批处理尺寸或深层网络(如Transformer)等场景。但需注意该技术会因重复计算而延长训练时间,且可能与其他优化方法存在兼容性问题。实际应用中建议先进行有效性测试。
2025-06-01 16:18:38
452
原创 [AI 算法] PointPillar算法
pointpillar最主要的特点是检测速度和精度的平衡1. 研究出发点现有的一些研究喜欢将不规则、稀疏的点云数据按照以下两种方式进行处理,然后引入RPN层进行3D Bbox Proposal,这两种方法为:(1)将点云数据划纳入一个个体素(Voxel)中,构成规则的、密集分布的体素集。常见的有VoxelNet和SECOND,这在之前的文章中已经解析过了;(2)从俯视角度将点云数据进行处理,获得一个个伪图片的数据。常见的模型有MV3D和AVOD,这也说过了。. 主要是将点云透射到俯视图上,然后
2025-02-12 11:40:19
310
原创 [CUDA] 编译调试工具objdump使用查看某些cuda函数汇编代码
调研cublas等cuda库函数的一些底层代码实现逻辑,通过汇编逻辑来看具体实现,推断可能的耗时异常原因
2024-12-09 14:54:56
312
原创 [CUDA] cuda kernel开发记录
包括kernel的一些使用注意事项, launch_bound, __device__, debug排查技巧
2024-11-11 20:45:00
1132
原创 [CUDA] 设置sync模式cudaSetDeviceFlags
可以设置cuda Stream synchorinze时是释放cpu资源还是把持cpu资源;根据官方说明默认当gpu 个数大于cpu的时候,因为cpu紧张所以会yield时间片;cuda的 synchronize等待模式分为: Yield方式, busy waiting方式(spin), blocking方式。- gpu context切换更加频繁了,应该是block阻塞导致的。- block恢复存在延迟,导致一些空白gpu时间,如下图红色框。采用blocking模式后,nsight观察的现象有几个。
2024-11-07 20:01:19
1062
原创 [CUDA] 将已有的地址空间设置为pinned memory
使用cudaHostRegister将已有的地址空间设置为pinned memory。
2024-11-07 19:50:05
580
原创 [CUDA] stream使用笔记
一些cudaMemcpyAsync, 不一定是异步的,比如当host和device之间传输数据的时候,虽然使用异步copy,但是会内含同步,从而导致一些block或spin行为。
2024-11-01 16:18:54
516
原创 [C++] 程序耗时统计函数的使用指南
本文总汇了clock, clock_gettime, getimeofday, times四种时间获取方法,用于debug C++代码时使用,通过他们的特性和自己使用场景来选择
2024-09-03 17:43:25
946
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人