
调试工具
文章平均质量分 66
Hi20240217
每天进步一点点
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Apollo-BEV模型性能分析与优化
Apollo-BEV模型性能优化总结 针对Apollo中camera_detection_bev模块的性能不足问题,通过模型拆分与TensorRT加速实现显著优化: 性能分析:通过Timeline分析模块耗时,发现PaddleNet推理占主要开销(1924ms)。 模型拆分:将模型分为CNN(Backbone)与其他部分,CNN使用ONNX-TRT加速,其余保持Paddle推理。 TRT优化:在Tesla T4上,INT8精度使总耗时从1919ms降至376ms(提升5.1倍),精度损失仅0.4%;Jets原创 2025-08-15 11:09:58 · 910 阅读 · 0 评论 -
Apollo中三种相机外参的可视化分析
本文分析了自动驾驶系统中相机外参的可视化方法,对比了三种来源的外参数据(NuScenes数据集、Apollo BEV模型和Apollo园区版)。通过代码示例展示了从NuScenes数据集提取相机外参(位置和旋转四元数)的详细过程,并实现了外参数据的3D可视化。该方法可帮助验证标定质量、检测标定错误、理解感知系统覆盖范围以及确保多传感器融合的空间对齐关系。文章提供了完整的Python实现,包括环境准备、数据提取和可视化步骤。原创 2025-08-06 20:00:22 · 1006 阅读 · 0 评论 -
调用向日葵REST-API动态获取识别码的完整指南
本文介绍了如何通过向日葵REST API动态获取设备识别码的解决方案。传统手动查询方式效率低且易出错,尤其在设备重启导致识别码变化时更为不便。文章详细讲解了使用向日葵API实现自动化认证(HMAC-SHA256签名)、设备查询和结果分享的完整流程,包括API凭证获取、请求签名方法和关键代码实现。通过该方案,用户可自动获取最新识别码并直接分享URL,显著提升远程设备管理的效率和便利性。原创 2025-08-05 09:06:29 · 681 阅读 · 0 评论 -
如何用VSCode调试Apollo园区版:从零开始完整指南
本文详细介绍了使用VSCode调试Apollo 9.0园区版camera_detection_bev模块的完整流程。主要内容包括:1)环境准备,需使用VSCode v1.85版本以兼容Ubuntu 18.04的glibc 2.27;2)通过捕获完整编译命令生成compile_commands.json文件,确保代码智能跳转和补全功能;3)配置SSH远程调试通道,实现本地VSCode调试容器内程序;4)搭建运行时环境,通过符号链接解决开发与运行环境路径不一致问题。该指南涵盖了从编译数据库生成到远程调试配置的全原创 2025-08-05 09:00:27 · 823 阅读 · 0 评论 -
主机序列号的修改方法与原理
摘要:主机序列号是设备的唯一硬件ID,存储在BIOS/UEFI芯片、设备树文件或DMI信息表中。修改序列号可用于隐私保护、软件授权等场景,但需注意法律风险。本文介绍两种方法:1)用户空间拦截read函数,通过LD_PRELOAD加载自定义库动态修改返回值,操作简单但仅对特定程序有效;2)内核驱动直接修改DMI内存区域,需编译加载内核模块,效果更彻底但风险较高。两种方法均提供了详细的操作步骤和原理说明,适用于不同技术需求的用户。 (149字)原创 2025-08-03 14:22:30 · 684 阅读 · 0 评论 -
基于FRP + ttyd 的远程Web终端控制:无SSH环境下的救急方案
摘要:无SSH环境下的远程Web终端控制方案 当SSH服务不可用且无法安装图形化工具时,本文提出了一种基于FRP内网穿透和ttyd Web终端的应急远程控制方案。该方案通过在受控服务器本地运行ttyd创建Web终端,利用FRP的STCP模式建立安全隧道,使控制端通过浏览器即可访问服务器命令行界面。方案具有轻量级、无需复杂依赖、绕过SSH限制等特点,特别适合紧急恢复场景。文章详细介绍了FRP服务器配置、ttyd安装、安全密钥设置等关键步骤,并强调了双因素认证等安全措施。原创 2025-07-31 12:03:22 · 1127 阅读 · 0 评论 -
一次“非法指令”(SIGILL)问题的完整调试过程:CPU指令集兼容性探秘
摘要: 在运行Apollo自动驾驶程序时遇到"非法指令(SIGILL)"崩溃,经排查发现程序库libchassis_command_processor.so使用了AVX512指令集,而测试环境的CPU(包括Ubuntu 22.04宿主机和18.04虚拟机)均不支持该指令集。通过搭建KVM虚拟化环境、反汇编二进制文件,确认了指令集不兼容是根本原因。解决方法包括:更换支持AVX512的硬件、重新编译程序禁用高级指令集,或确保虚拟机正确透传宿主CPU指令集。该案例揭示了二进制兼容性问题中CPU原创 2025-07-25 20:57:27 · 744 阅读 · 0 评论 -
Python动态追踪函数执行并提取相关代码的实用技巧
本文介绍了使用Python的trace模块动态追踪函数执行并提取相关代码的实用技巧。通过trace.Trace类记录执行路径,结合AST解析识别被执行的类和函数定义,最终提取完整的代码块。关键步骤包括:动态追踪时过滤系统路径,利用AST分析代码结构,通过行号交集判断执行范围,并处理类和函数的嵌套关系避免重复提取。该方法适用于代码审计、依赖分析等场景,输出结果包含代码来源注释以便追踪。实现需Python 3.8+以支持AST节点的end_lineno属性。原创 2025-05-26 13:39:15 · 328 阅读 · 0 评论 -
一次因校时服务器异常引起的性能差异分析
本文分析了因校时服务器异常引起的性能差异,重点探讨了TSC(Time Stamp Counter)、gettimeofday、adjtimex等时间相关组件的作用及其对系统时间精度的影响。TSC是CPU提供的硬件计数器,其频率决定了时间测量的分辨率,但依赖校准和稳定性。gettimeofday是用户态时间接口,依赖TSC的分辨率,但受内核校准影响。adjtimex用于调整系统时钟的频率补偿和时间偏移,确保系统时间与真实时间同步。文章还通过实验模拟了NTP服务器异常对TSC频率的影响,并测试了不同tick值对原创 2025-05-14 09:57:37 · 1519 阅读 · 0 评论 -
PyTorch分布式训练调试方法(跟踪调用过程)
PyTorch分布式训练调试方法(跟踪调用过程)原创 2025-04-18 20:43:25 · 579 阅读 · 0 评论 -
Linux环境下基于指令追踪的源码覆盖分析技术实践
Linux环境下基于指令追踪的源码覆盖分析技术实践原创 2025-04-11 14:42:37 · 811 阅读 · 0 评论 -
如何从无法启动的KVM虚拟机中提取文件
如何从无法启动的KVM虚拟机中提取文件原创 2025-03-31 13:49:45 · 385 阅读 · 0 评论 -
不同版本sycl编译器测试
不同版本sycl编译器测试原创 2025-03-13 20:59:38 · 399 阅读 · 0 评论 -
基于Grafana+Prometheus的IB网卡硬件计数器监控方案
基于Grafana+Prometheus的IB网卡硬件计数器监控方案原创 2025-03-13 16:25:49 · 598 阅读 · 0 评论 -
PyTorch多机训练Loss不一致问题排查指南:基于算子级一致性验证
比较二次训练过程中所有算子的误差,定位存在一致性问题的pytorch算子原创 2025-03-13 15:38:00 · 813 阅读 · 0 评论 -
Ubuntu 18.04下普通用户的一次提权过程
1.OS为Ubuntu 18.04.6 LTS2.docker服务非开机自启动,需要管理员手动启动(之前并不知道)3.重启后,数据盘也需要管理员手动挂载(之前并不知道)4.目前给我的帐号为普通用户5.我需要测试关掉IOMMU的效果,得进BIOS设置,服务器在远程,又遇到周末没人支持6.万幸我的帐号有–privileged启动容器的权限。原创 2024-06-15 20:18:39 · 1336 阅读 · 0 评论 -
跟踪一个Pytorch Module在训练过程中的内存分配情况
跟踪一个Pytorch Module在训练过程中的内存分配情况1.通过pre_hook module的来区分module的边界2.通过__torch_dispatch__拦截所有的aten算子,计算在该算子中新创建tensor的总内存占用量3.通过tensor.data_ptr()为tensor去重,表示一块独立的内存。原创 2024-06-01 20:01:30 · 375 阅读 · 0 评论 -
尝试用智谱机器人+知识库,制作pytorch测试用例生成器
背景:是否能将API的接口文档和sample放到RAG知识库,让LLM编写API相关的程序呢小结:当前的实验效果并不理想,可以生成代码,但几乎都存在BUG。原创 2024-05-31 22:42:19 · 362 阅读 · 0 评论 -
修改ModelLink在RTX3090完成预训练、微调、推理、评估以及TRT-LLM转换、推理、性能测试
背景:因为没有华为的训练卡,又想跑ModelLink,顺便熟悉LLM从训练到部署的完全过程,记录备用。原创 2024-05-31 22:24:45 · 2622 阅读 · 3 评论 -
通过LLM多轮对话生成单元测试用例
在采用这种方法之前,曾通过本文的方法生成算子组合测试用例。目前所测LLM生成的代码均会出现BUG,且多次交互后仍不能解决.也许随着LLM的更新,这个问题会得到解决.记录备用。原创 2024-05-29 20:20:22 · 920 阅读 · 0 评论 -
随机生成pytorch算子测试序列且保证算子参数合法
1.一些对维度进行操作的算子的单算子测试,结果正常,但多个算子组合在一起,结果就不对。是否能给一个算子列表,随机生成它们的组合呢1.此程序用于在 CUDA 环境中生成随机张量并对其施加一系列随机选择的操作2.程序首先随机生成张量的形状和内容,然后随机选择一个操作(如reshapetransposematmul等),并生成适当的参数以执行该操作3.最终输出变换后的张量并打印相关操作信息4.整个过程在100次不同的种子下每次进行10次操作,以保证操作的多样性和结果的随机性。原创 2024-05-29 18:04:58 · 960 阅读 · 0 评论 -
通过伪造NPU设备,让AscendSpeed在没有安装torch_npu的环境中跑起来
背景: 我想在GPU上运行AscendSpeed框架,因为没有torch_npu、deepspeed_npu,又不想一个个注释掉方法:原创 2024-05-29 10:51:33 · 738 阅读 · 0 评论 -
基于LLM的优化器评测-凸函数
很多时候我们需要为系统寻找最优的超参.比如模型训练,推理的量化等.本文尝试将LLM当成优化器,帮忙我们寻找最优的超参原创 2024-05-28 09:41:47 · 879 阅读 · 0 评论 -
H800基础能力测试
本文记录了H800基础测试步骤及测试结果。原创 2024-05-23 20:53:05 · 4947 阅读 · 2 评论 -
H800多机多卡通信带宽测试
以下代码用于测试GPU多机多卡通信带宽。原创 2024-05-22 21:47:34 · 5293 阅读 · 1 评论 -
python获取某些城市的GPS坐标
【代码】python获取某些城市的GPS坐标。原创 2024-05-21 16:12:45 · 468 阅读 · 1 评论 -
基于gcc plugin机制,编译源码时在每个函数前插入一条指令,打印当前的调用栈,省去了修改源码的时间
在学习开源库时,想了解它的调用流程,可以使用valgrind的callgrind功能。这里介绍另一种方法,gcc有一种plugin机制,可以利用这种机制在编译源码时,在函数中插入call指令,调用自己的api调用,咱们在这个函数中调用libunwind获取调用栈信息原创 2024-05-21 16:05:14 · 1318 阅读 · 1 评论 -
pytorch模型精度对比工具
通过register_forward_pre_hook、register_forward_hook、register_full_backward_pre_hook、register_full_backward_hook记录Module的耗时及输出结果;aten算子则通过torch_dispatch实现。之后对比不同的平台输出结果的耗时及相对误差并绘出直方图。可通过diff信息,定位从哪里开始出现误差原创 2024-05-19 19:01:44 · 1282 阅读 · 0 评论 -
Windows11挂载LVM2
Windows11挂载LVM2原创 2024-05-18 14:12:05 · 738 阅读 · 0 评论 -
linux基于LD_PRELOAD机制的内存泄露检测工具
Valgrind影响性能且某些程序会报错,同时我们希望跳过初始化阶段,在程序稳定运行之后再去检测内存是否会持续增涨,为了更高效的记录内存分配情况,采用b+树.该程序会拦截malloc,free,calloc,realloc,new,delete。记录10层的PC指针,方便解析脚本定位调用的代码位置.原创 2024-05-17 16:52:21 · 1081 阅读 · 0 评论 -
python通过ctypes调用C/C++ SDK,当SDK异常时,同时打印C/C++/Python的栈信息
本文演示了python通过ctypes调用C/C++ SDK,当SDK异常时,同时打印C/C++/Python的栈信息.基于traceback、addr2line、PyErr_SetString、backtrace_symbols。原创 2024-05-14 18:20:11 · 995 阅读 · 0 评论 -
相同的随机种子CPU和GPU上torch.nn.init.xavier_normal_结果并不一致
在训练pytorch模型时,相同的随机种子,不同的服务器上loss并不一样,通过调试发现这二个平台的权值也不一样.单独测试torch.nn.init.xavier_normal_,发现也不一样.如果都放在CPU上则二台服务器上的结果一致,原来Megatron-DeepSpeed也有–use-cpu-initialization这样一个参数,采用CPU初始化权值。原创 2024-05-14 17:11:23 · 502 阅读 · 0 评论 -
一次pytorch分布式训练精度调试过程
9.在异常的时候pause进程,在python调用reduce_scatter的位置打印调用栈。15.review该算子内部实现,确实有几行代码将输入当fp32处理。8.dump reduce_scatter的输入,发现每次都不样。2.dropout设置为0,重复运行二次,对比loss是否一致。4.对比backward之后的梯度,发现某一个梯度不一致。5.dump得到所有算子的规模,单算子测试功能正常。7.排除通信库的问题,逐算子bypass。10.定位到有问题的模块,是一个融合算子。原创 2024-05-13 22:28:45 · 413 阅读 · 0 评论 -
pytorch如何知道某个Parameter是在哪一个Module中的创建的
在定位pytorch精度问题时,发现optimizer中某些Parameter值异常,想知道它属于哪个模块的.本文提供二种方法1.全局搜索2.在创建Parameter的地方加一个属性,写明所在的模块名,需要的时候直接获取。原创 2024-05-12 10:48:15 · 543 阅读 · 0 评论 -
判断某地址是否为合法的PCIE BAR空间地址
以下脚本用来判断某地址是否为合法的PCIE BAR空间地址。原创 2024-05-11 20:16:38 · 712 阅读 · 0 评论 -
基于torch_dispatch机制生成Megatron-DeepSpeed调用关系图
想知道Megatron-DeepSpeed训练过程中各模块之间的调用关系。torch_dispatch机制可以拦截算子,inspect又能获取到调用栈(文件,类名,函数,行号).基于这些信息可以生成调用关系,最后用graphviz生成SVG图像。该思路也可以用来画其它pytorch工程的调用关系图1.为了减少图像宽度,一行显示一级文件路径2.没有显示具体的ATen算子。因为边太乱。原创 2024-05-10 19:23:27 · 1023 阅读 · 1 评论 -
基于LD_PRELOAD机制的API批量拦截方法
之前采用LD_PRELOAD拦截某个SDK API时,会定义跟被拦截API一样的参数,如果要拦截的API很多,就太浪费时间了。于是想能不能定义一个足长参数的API代替呢以下实验实现了一个10个参数的API,通过宏批量生成拦截API,实验结论是,如果是参数不多,是没问题的,如果参数太多,可以用结构体指针传递。原创 2024-05-09 11:01:30 · 695 阅读 · 0 评论 -
通过os.dup sys.stdout.fileno捕获标准输出,判断pytorch算子是否fallback到了cpu
某种设备在运行pytorch算子时,如果不支持会自动fallback到cpu,输出的tensor.device却不是cpu,我希望能获取到这个状态。本文通过捕获标准输出,根据终端是否输出fallback字符串,判断是否触发了fallback。原创 2024-05-08 11:30:22 · 730 阅读 · 0 评论 -
基于picklerpc的pytorch单算子测试[单算子远程测试]
通过得到了算子类型及参数信息。我希望对比每个算子在不同硬件平台上的性能和误差。如果将所有的结果都存成文件,则占用空间太大。下文演示了如何使用picklerpc 将算子类型及参数传递到远程服务器测试。原创 2024-05-06 20:49:13 · 725 阅读 · 0 评论 -
pygame学习--精灵组、碰撞检测、精灵更新
通过pygame库,模拟种群的分化。1.X从左往右移动,表示年龄的增加;Y坐标表示阶层2.随着X坐标不断增大,圆逐渐增大,颜色也加深3.精灵越多,碰撞后死亡的概率越大,诞生新精灵的概率越小4.每个精灵都有随机的运动速度及Y坐标的移动方向5.发生碰撞且诞生新精灵时,继承当前坐标的Y值。原创 2024-05-05 13:32:50 · 809 阅读 · 1 评论