当前位置: 首页 > 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.hskmm.com/?act=detail&tid=33269

相关文章:

  • 【题解】成外友谊赛
  • 小程序商城客服系统
  • ubuntu 主机创建虚拟 ip,应对容器内部配置了宿主固定 ip,宿主迁移网络环境后容器报错
  • 2025权威报告:微信编辑器排版Top 10工具推荐(全链路解决方案)
  • 洛谷 P10149
  • 从0到1构建企业数据资产 - 智慧园区
  • 2025.10.17
  • 一行代码清空所有 docker 容器的日志文件
  • 塔吊施工 “隐形风险” 克星!思通数科 AI 卫士精准识别核心部件隐患
  • ubuntu配置vsftpd
  • 时序数据库 Apache IoTDB 等你“打卡”!2025 OSCAR 开源产业大会完整版议程揭晓
  • 2024 CCPC Final F
  • vue
  • Windows关闭端口占用
  • 洛谷 P12865
  • ubuntu清理内存缓存
  • ubuntu常用技巧
  • 10.17 CSP-S模拟33 改题记录
  • 包装类(基本数据类型对应的引用数据类型)
  • luogu P7915 [CSP-S 2021] 回文
  • USACO 绿-蓝 思维题小记
  • Day16-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\classlei
  • 一个实用的短视频脚本创作指令分享
  • 字典树 Trie 乱讲
  • redis和mysql之间的数据一致性
  • ubuntu允许root登录桌面系统
  • 24. 两两交换链表中的节点
  • AI协科学家:技术革命还是安全噩梦?
  • 一个决定
  • 10月17日