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

news/2025/10/17 21:21:20/文章来源:https://www.cnblogs.com/qmjc/p/19148853

研究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.mzph.cn/news/939172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【题解】成外友谊赛

T1 舞蹈机器⼈题目大意: 给一个可以向四个方向移动的小点,对于每次移动,如果上或下⽅向进⾏了⼀次移动,那么,下⼀次就只能往左或右⽅向进⾏⼀次移动,反之亦然。 求该点可以到达的位置数量。STEP 1. 对于这个问题…

小程序商城客服系统

vx:llike620 网址:gofly.v1kf.com 微信小程序对接有两种方式:webview组件嵌入页面,小程序客服组件对接消息 使用webview组件嵌入聊天页面形式。这种形式更加的灵活可控,可以传递更多的信息给到客服,例如可以把用户…

ubuntu 主机创建虚拟 ip,应对容器内部配置了宿主固定 ip,宿主迁移网络环境后容器报错

配置文件:/etc/netplan/01-network-manager-all.yaml# Let NetworkManager manage all devices on this system network:version: 2renderer: NetworkManager 备份配置:cd /etc/netplan cp 01-network-manager-all.…

2025权威报告:微信编辑器排版Top 10工具推荐(全链路解决方案)

作为一名深耕新媒体领域多年的运营者,我深知内容创作者在选题、写作、配图到分发过程中面临的痛点。从文案质量把控到微信编辑器排版效率提升,再到多平台同步分发,每个环节都需要耗费大量精力。为了帮助大家找到真正…

洛谷 P10149

给定序列 \(a_1,\dots,a_n(n \le 5 \times 10^5, 3s)\) ,\(m\) 次询问,每次询问给出 \(l,r\) ,问有多少组 \((i,j,k)\) 满足 \(l\le i<j<k\le r,\;a_i=a_k>a_j\) 。 这个题看起来如果离线下来按 \(r\) 排序…

从0到1构建企业数据资产 - 智慧园区

在当今这个时代,每一个制造企业都漂浮在一片浩瀚的数据海洋之上。然而,拥有数据并不等同于拥有洞察力,更不意味着拥有了真正的数据资产。对于许多制造业者而言,数据常常是沉睡的、割裂的、甚至混乱的,它们是亟待开…

2025.10.17

今天没课,在宿舍躺了一天。

一行代码清空所有 docker 容器的日志文件

一行代码搞定cd $(docker info 2>/dev/null | awk /Docker Root Dir/ {print $4})/containers 2>/dev/null && find . -name "*-json.log" -exec truncate -s 0 {} \; && find . -nam…

塔吊施工 “隐形风险” 克星!思通数科 AI 卫士精准识别核心部件隐患

在塔吊施工安全巡检中,传统人工排查模式常陷入 “看得见却查不细、查得慢还易遗漏” 的困境:钢管开裂、锈蚀等部件损耗,靠肉眼难发现细微痕迹,尤其在光线不足、雨天或夜间作业时,识别准确率骤降;扣件是否合规、是…

ubuntu配置vsftpd

在Ubuntu上快速创建FTP服务器,推荐使用vsftpd(Very Secure FTP Daemon)。以下是完整步骤: 1. 安装vsftpdbashsudo apt update sudo apt install vsftpd 2. 配置vsftpd 备份原始配置bashsudo cp /etc/vsftpd.conf /…

时序数据库 Apache IoTDB 等你“打卡”!2025 OSCAR 开源产业大会完整版议程揭晓

10月 28 日,期待与您在北京相见!开源作为一种开放共享的新型生产模式,已成为数字经济创新、开放、共享和可持续发展的核心驱动力。由中国通信标准化协会牵头主办,中国信息通信研究院具体承办的 2025 OSCAR 开源产业…

2024 CCPC Final F

F. Witnessing the Miracle / 见证奇迹 动态规划。 打表发现当一个被拿走的磁铁集合确定之后,未被拿走的磁铁的方向和距离可以由它左边被拿走的磁铁数量确定,因此,拿走磁铁的先后顺序不影响最终局面的状态,即从 \(…

Windows关闭端口占用

Microsoft Windows [版本 10.0.18363.535] (c) 2019 Microsoft Corporation。保留所有权利。 C:\Users\Administrator> netstat -ano | find "1099"TCP 0.0.0.0:1099 0.0.0.0:0 …

洛谷 P12865

给定长度为 \(n\) 的序列 \(a\) 和 \(q\) 次操作。每次操作为对 \(a\) 进行一次冒泡排序(\(a_i > a_{i + 1}\) 时交换)或者查询 \(a_l \sim a_r\) 之和。 对于一次冒泡排序,显然会把最大值挪到最后面。所以,当 …

ubuntu清理内存缓存

sudo sync; echo 3 | sudo tee /proc/sys/vm/drop_caches

ubuntu常用技巧

获取qq的pid sudo netstat -anpt | grep qq | awk {print $7} | awk -F / {print $1} | head -n 1 获取无线网卡的ip地址 ifconfig wlp2s0 | grep inet | head -n 1 | awk {print $2} 获取首行 全局范围的IPv6地址…

单线程如何撑起百万连接?I/O多路复用:现代网络架构的基石

单线程如何撑起百万连接?I/O多路复用:现代网络架构的基石I/O多路复用(I/O Multiplexing)是一种允许单个线程同时监视多个文件描述符的I/O模型。其核心价值在于,它将应用程序从低效的I/O等待中解放出来,实现了“一…

10.17 CSP-S模拟33 改题记录

10.17HZOJ 写在前面 貌似没啥可写。。。大概就是二十多分钟写完T1然后写T2,一直想假一直写挂然后写了三个多小时,好在写出来了。T3看不上,T4正解需要的东西都写了然后喜提0pts,甚至不如输出0的37pts。《夜信》 今晚…

包装类(基本数据类型对应的引用数据类型)

包装类(基本数据类型对应的引用数据类型) Notice:基本数据类型存在栈里(基本类型基本没有属性和方法,所以基本类型的运算都靠Java提供的运算符) 引用数据类型存在堆里 所以栈里存的是堆里东西的地址NObject可统一…

luogu P7915 [CSP-S 2021] 回文

题目大意 给定一个长度为 \(2n\) 的序列 \(a\),要求每次取出其第一个数或者最后一个数,使得取出的数列 \(b\) 为一个回文数列。 注:回文数列即 \(\forall i\in \{ 1,n \}\) 都有 \(b_i=b_{2n-i+1}\) Sol 考虑第一步…