当前位置: 首页 > news >正文

从libtorch_cuda.so中提取某个函数的sass汇编指令

研究cuda算子用得着。

用cuobjdump工具,linux window上都有。安装cuda toolkit后就有了,和nvcc一套的

 

wget https://download.pytorch.org/libtorch/cu128/libtorch-shared-with-deps-2.9.0%2Bcu128.zip

下载后解压

cd libtorch/lib

cuobjdump -symbols libtorch_cuda.so > libtorch_cuda.txt

在 libtorch_cuda.txt 里查找 div_floor_kernel_cuda 可以找到1000多个重载函数,用c++filt翻译他们,找到需要的具体类型实现的函数名。比如 _ZN2at6native18elementwise_kernelILi128ELi4EZNS0_15gpu_kernel_implINS0_13BinaryFunctorIN3c108BFloat16ES5_S5_ZZZNS0_15binary_internal21div_floor_kernel_cudaERNS_18TensorIteratorBaseEENKUlvE1_clEvENKUlvE2_clEvEUlS5_S5_E_EEEEvS8_RKT_EUliE_EEviT1_ 

 

用类似这样的命令提取具体函数的sass汇编。sass汇编已经是针对特定架构的,不是ptx汇编。所以要指定arch

cuobjdump -sass -arch sm_70 -fun _ZN2at6native18elementwise_kernelILi128ELi4EZNS0_15gpu_kernel_implINS0_13BinaryFunctorIN3c108BFloat16ES5_S5_ZZZNS0_15binary_internal21div_floor_kernel_cudaERNS_18TensorIteratorBaseEENKUlvE1_clEvENKUlvE2_clEvEUlS5_S5_E_EEEEvS8_RKT_EUliE_EEviT1_ libtorch_cuda.so > div-floor0.sass

 

注意可能打印很多no found提示,不必在意。这是因为库里很多fatbin。某个fatbin找不到就会报。

输出文件很长,在某个地方可以找到:

 

Fatbin elf code:
================
arch = sm_70
code version = [1,7]
host = linux
compile_size = 64bit
compressed

code for sm_70

Fatbin elf code:
================
arch = sm_70
code version = [1,7]
host = linux
compile_size = 64bit
compressed

code for sm_70
Function : _ZN2at6native18elementwise_kernelILi128ELi4EZNS0_15gpu_kernel_implINS0_13BinaryFunctorIN3c108BFloat16ES5_S5_ZZZNS0_15binary_internal21div_floor_kernel_cudaERNS_18TensorIteratorBaseEENKUlvE1_clEvENKUlvE2_clEvEUlS5_S5_E_EEEEvS8_RKT_EUliE_EEviT1_
.headerflags @"EF_CUDA_64BIT_ADDRESS EF_CUDA_SM70 EF_CUDA_VIRTUAL_SM(EF_CUDA_SM70)"
/*0000*/ IMAD.MOV.U32 R1, RZ, RZ, c[0x0][0x28] ; /* 0x00000a00ff017624 */
/* 0x000fe400078e00ff */
/*0010*/ @!PT SHFL.IDX PT, RZ, RZ, RZ, RZ ; /* 0x000000fffffff389 */
/* 0x000fe200000e00ff */
/*0020*/ S2R R2, SR_CTAID.X ; /* 0x0000000000027919 */
/* 0x000e220000002500 */
/*0030*/ BMOV.32.CLEAR RZ, B6 ; /* 0x0000000006ff7355 */
/* 0x000fe20000100000 */
/*0040*/ BSSY B6, 0x5cb0 ; /* 0x00005c6000067945 */
/* 0x000fe40003800000 */
/*0050*/ S2R R3, SR_TID.X ; /* 0x0000000000037919 */
/* 0x000e240000002100 */
/*0060*/ IMAD R3, R2, 0x200, R3 ; /* 0x0000020002037824 */
/* 0x001fc800078e0203 */

 

 

http://www.gsyq.cn/news/23202.html

相关文章:

  • 【题解】成外友谊赛
  • 小程序商城客服系统
  • 2025.10.17
  • 一行代码清空所有 docker 容器的日志文件
  • 2024 CCPC Final F
  • ubuntu常用技巧
  • 字典树 Trie 乱讲
  • 申威(sw_64)架构下如何安装java-1.8.0-swjdk的rpm包?​
  • 实用指南:计算机毕设java基于mybatis的医用器械管理系统 基于 SSM+JavaWeb 的医用器械全流程管理平台 Java+MySQL 的医疗物资一体化系统
  • ffmpeg使用
  • 2025.10.17总结 - A
  • Ubuntu创建python桌面图标
  • Nimble:让SwiftObjective-C测试变得更优雅的匹配库 - 指南
  • 【Linux】基础 I/O - 指南
  • DIVCNT
  • 详细介绍:CI/CD流水线优化:GitLab CI镜像构建加速实战​
  • 最新版Origin 2025b安装包下载及详细安装教程,附永久免费中文汉化破解版Origin安装包
  • Unity3D中定义全局宏(不同于在unity设置中的)
  • HyperWorks许可状态监控工具
  • 从创作到分析:2025 公众号排版工具全维度测评榜单
  • 2025 年无锡专线物流公司最新推荐排行榜:聚焦个性化运输解决方案,精选优质服务商往返无锡/冷链无锡/公路无锡/大件无锡专线物流公司推荐
  • 第三次课动手动脑合集
  • 2025 年火山石厂家最新推荐排行榜:聚焦自有矿藏与全自动生产,涵盖滤料填料等多品类企业权威指南人工湿地填料/人工湿地滤料/黑色/红色火山石厂家推荐
  • mysql5.7.44升级到8.0.34 mysql跨版本升级实战操作 windows环境
  • 【SPIE出版、往届已检索】第十届能源系统、电气与电力国际学术会议 (ESEP 2025)
  • 2025-10-17
  • 有趣评测小程序系统:开启视频与答题变现新创业风口
  • 设备租赁归还小程序系统:免人工化租赁管理解决方案
  • Navcat如何上传数据大的sql文件?
  • 使用Scalar.AspNetCore来管理你的OpenApi