首页 > 其他分享 >pytorch算子调用过程:以rand算子为例

pytorch算子调用过程:以rand算子为例

时间:2025-01-12 18:43:50浏览次数:1  
标签:rand 函数 为例 代码 uniform pytorch 算子 cpp

通过pytorch的torch.profiler带调用栈采集运行过程可以看到如下信息,通过chrome://tracing查看,

图上每个小条条表示一个traceEvent, json中的信息如下图所示,其中cat表示traceEvent的类型,有cpu_op,python_function等,前者表示torch的cpp代码中定义的操作,后者表示pytorch的python代码中定义的函数。实际看cpp_op并不直接对应到cpp代码中函数的名字,应该是按某种约定注册的名字,这为gdb断点查看带来了一些不便。

通过断点uniform_函数看到采集的函数aten::uniform_对应代码at::Tensor::uniform_, aten::rand对应代码中的at::native::rand,且at::Tensor::uniform_在libtorch_cpu.so的plt上,也就是这个符号是可以被动态打桩打掉的。

在代码中找到callstack上两个rand的函数如下,函数含pytorch的源码文件pytorch/aten/src/ATen/native/TensorFactories.cpp中,

result.uniform_中的函数在TensorBody.h中,也及Tensor的一个成员函数,里面调用的是at::_ops::uniform_::call函数,call函数编在libtorch_cpu.so中,

但call的源码不再pytorch下载的原始源码中,而是下面build过程中生成的Operators_2.cpp中,

create_uniform_typed_handle也在Operators_2.cpp中定义,从代码中可以看到采样信息中的aten::uniform_字样,很可能采样信息就是从这里来的。自动生成的Operators_2.cpp很可能是来自pytorch中配置的某个yaml文件。

标签:rand,函数,为例,代码,uniform,pytorch,算子,cpp
From: https://www.cnblogs.com/zwlwf/p/18667111

相关文章

  • 【经典JESD204B ADC采集示例】基于FPGA的JESD204B ADC数据采集驱动源码(以AD9689为例)
    一、基础信息Ad9689是双通道ADC,分辨率14bit,最高采样率2Gsps/2.6Gsps;采用JESD204Bsubclass1协议,共8lanes串行接口输出;框图如下:在不同采样率下,不同输入频点的SFDR和SNR典型值:内部有可编程FIR滤波器,4个DDC:每个DDC包含一个48bitNCO实现混频,以及可编程的抽取速率;如此可......
  • IPOIB驱动中RSS和TSS相关功能的实现:以ipoib_main_rss.c为例
    一、引言在现代网络通信领域,InfiniBandoverEthernet(IPoIB)驱动的高效性对于网络性能有着至关重要的影响。其中,接收方扩展(RSS)和传输方扩展(TSS)是提升网络性能的关键技术。ipoib_main_rss.c文件作为IPoIB驱动中处理RSS和TSS的重要源码文件,蕴含着丰富的功能和复杂的......
  • 深入解析 Spring AI 系列:以OpenAI与Moonshot案例为例寻找共同点
    今天,我们将重点探讨对接的业务逻辑。为了帮助大家更直观地掌握其中的规律性,我将通过对比OpenAI与《月之暗面》中的Moonshot两个案例来阐述这一点。通过这样的对比,大家可以更清晰地看到,这些对接业务的整体框架其实非常相似。换句话说,我们要做的工作只是其中的一小部分,但它同样是关......
  • ubuntu 18.04下neovim手动添加treesitter支持(c语言为例)
    环境准备rustcurl--proto'=https'--tlsv1.2-sSfhttps://sh.rustup.rs|shnode.jshttps://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.xzneovimhttps://github.com/neovim/neovim-releases/releases/download/v0.10.3/nvim-linux64.tar.g......
  • Peft框架不提供merge_and_unload方法,如何进行peft方法和Base model的合并?以prefix tun
    Merge_peft_methods_prefix_and_prompt_tuning问题描述我想要把prefixtuning,prompttuning训练的参数和basemodel模型的参数合并,但是huggingface的peft框架只有lora存在merge_and_unload方法,其他的peft方法没有。那应该怎么办呢?这就是本文想解决的问题,把笔者踩得坑记录......
  • 深度学习基础框架通用模板 (Pytorch Template) - cifar10 图片分类为例,深度学习模板
    文章目录项目简介运行结果展示文件和目录结构说明功能模块详解1.数据相关2.模型相关3.工具函数4.可视化5.训练和日志6.主程序使用方法1.克隆项目2.创建并激活Python3.9虚拟环境3.安装依赖4.安装Jupyter及相关依赖2.数据准备3.开始训练4.可视化结果快......
  • laplacian算子
    拉普拉斯算子(LaplacianOperator)是图像处理中的一种二阶导数算子,用于检测图像中的边缘。它可以增强图像中灰度变化较大的区域,从而突出边缘特征。数学定义拉普拉斯算子在二维情况下定义为:[\Deltaf(x,y)=\frac{\partial^2f}{\partialx^2}+\frac{\partial^2f}{\partial......
  • 【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名
    【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈背景本次学习逆向是针对小红书的用户转uid学习使用,逆向工程应当在合法和道德的范围内进行,尊重他人的知识产权和隐私权。要在小红书(Red)中将用户名转换为用户ID(U......
  • PySpark学习笔记2-RDD算子,RDD持久化
    RDD定义RDD是弹性分布式数据集,是spark中的最基本的数据抽象,里面的元素可以并行计算RDD的五大特性RDD是有分区的,它的分区是数据存储的最小单位RDD的方法会作用在所有分区上RDD之间是有依赖关系的KV型的RDD可以有分区器RDD的分区会尽量靠近数据所在的服务器,尽量保证本......
  • 基于降噪自编码器的时间序列降噪方法-以心电信号为例(Python)
    #Importneededmodulesimportmatplotlibimportmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdimporttensorflowastffromscipy.fftimportfft,fftfreqfromscipy.signalimportbutter,lfilter,freqz,bode,filtfiltfromsklearn.mo......