自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 【架构分析】GPU执行GEMM矩阵运算实例演示

Cutlass是 NVIDIA 提供的一套用于高效实现矩阵乘法和卷积操作的 C++ 库。它以 CUDA 为基础,提供了高度优化的数学运算,尤其适用于GPU上的高性能并行计算。本文以GEMM矩阵运算作为实例,展示Cutlass在GPU上执行GEMM运算的过程。

2024-06-09 22:45:40 586

原创 【算法分析】FlashAttention v2算法优化实例说明

​针对Tri Dao提出的FlashAttentionV2算法论文链接做实例演示,详细对比了V2和V1的核心算法执行步骤的差异,红字higlight FlashAttentionV2算法的几个核心性能优化点

2024-02-24 11:46:07 436

原创 【算法分析】FlashAttention算法实例演示

基于Tri Dao提出的FlashAttention算法以动画做实例演示,详细说明了核心算法的每一步执行过程,提升对算法的理解。

2024-01-05 19:17:36 653

原创 【编程技术】CUDA TencoreCore编程实例说明

通过一个m16n8k16矩阵乘法的CUDA TencoreCore编程实例,展示load/store mma 的矩阵乘法运行过程。

2023-12-07 23:08:20 619

原创 Megatron-LM GPT 源码分析(四) Virtual Pipeline Parallel分析

本文接着上一篇【Megatron-LM GPT 源码分析(三) Pipeline Parallel分析】,基于开源代码,通过的模型运行示例,从三个维度 - 模型结构、代码运行、代码逻辑说明 对其源码做深入的分析。

2023-10-29 12:00:00 1111

原创 Megatron-LM GPT 源码分析(三) Pipeline Parallel分析

本文接着上一篇【Megatron-LM GPT 源码分析(二) Sequence Parallel分析】,基于开源代码,通过的模型运行示例,从三个维度 - 模型结构、代码运行、代码逻辑说明 对其源码做深入的分析。

2023-10-29 08:00:00 714 1

原创 Megatron-LM GPT 源码分析(二) Sequence Parallel分析

本文接着上一篇【Megatron-LM GPT 源码分析(一) Tensor Parallel分析】,基于开源代码,通过的模型运行示例,从三个维度 - 模型结构、代码运行、代码逻辑说明 对其源码做深入的分析。

2023-10-29 00:00:00 1037

原创 Megatron-LM GPT 源码分析(一) Tensor Parallel分析

本文基于开源代码,通过的模型运行示例,从三个维度 - 模型结构、代码运行、代码逻辑说明 对其源码做深入的分析。

2023-10-28 19:45:09 1300 1

原创 【架构分析】BladeDISC 源码分析

目录概述架构源码分析TensorRT 对比概述BladeDISC 是Alibaba 推出的端到端AI Compiler,由于它基于MLIR的实现,所以它能够支持模型的动态shape,这也是为什么它的缩写DISC代表DynamIc Shape Compiler的原因。本文基于BladeDISC 源码链接,对它的架构和工作原理进行分析,并从一个实例对它的实际运行过程做了详细说明。架构BladeDISC 软件架构软件核心模块架构如上BladeDISC API...

2022-05-25 16:51:39 660

原创 【架构分析】Torch-MLIR 技术详解

目录概述架构举个栗子IR转换详解OpConversion代码分析核心时序Linalg Generic Op说明Code Gen VS LibCall概述Torch-MLIR 作为一个编译器支持将pytorch生态转换到MLIR生态,本文基于Torch-MLIR 开源项目对它的主要工作流程,以及涉及到的MLIR主要概念进行了分析说明架构上面的架构图说明从Pytorch生态有多条pipeline可以转换到MLIR的世界,本文主要介绍T...

2022-04-24 20:50:02 4799 3

原创 【架构分析】Tensorflow Internals 源码分析5 - TensorRT与Tensorflow

目录概述TensorRT Overview架构OverviewTF优化器TRT 优化器执行时序概述TensorRT是一个高性能的深度学习推理优化器,可以为深度学习模型提供低延迟、高吞吐率的部署推理,本文旨在从Tensorflow r1.15源码分析它中是如何与TensorRT对接,实现对TF 模型的推理优化TensorRT OverviewTRT典型执行时序TRT C++ API构建模型推理优化与运行的典型时序如上图所示,其中“静态读取模型文件”时序

2022-04-05 16:45:20 2176

原创 【问题分析】Unsuccessful TensorSliceReader constructor: Failed to find any matching files for model

目录背景概述示例Sample问题分析Saver.restore API分析背景概述百度/Google “Unsuccessful TensorSliceReader constructor: Failed to find any matching files for model"的错误,可以发现网上有很多类似的问题分析,但基本都是从装载pretrain的checkpoint文件路径提示解决方案,忽略了该错误信息中最后一个model 关键字 “Unsucc...

2022-03-25 16:20:18 5196

原创 【架构分析】Tensorflow Internals 源码分析4 - TF Core之MatMul Kernel 生命周期

目录概述TF CoreMatMul Kernel的生命周期概述本文基于Tensorflow r1.15源码链接,以MatMul Kernel的整个生命周期为例来分析Tensorflow 最核心的Core是如何实现Kernel的注册、查找、运行TF Coretensorflow/core 目录结构如上图,其中包含的代码相当多,如果直接看进去很快就迷失其中,以MatMul Kernel的整个生命周期为例可以将其中核心的数据结构及其关系梳理为下图TF Co..

2022-03-20 20:27:40 1842

原创 【架构分析】Tensorflow Internals 源码分析3 - Stream Executor 连接计算设备

目录概述架构源码分析数据结构CudaPlatform注册Stream Executor初始化Stream Executor API调用概述本文基于Tensorflow r1.15源码链接,重点分析抽象了计算设备算力并提供TF框架控制和使用计算设备的模块Stream Executor架构Stream Executor与Tensorflow 整体架构从上图可以看到,Stream Executor抽象了计算设备(各类xPU)的能力,提供TF框架..

2022-03-14 16:46:45 2054

原创 【架构分析】Tensorflow Internals源码分析2 - 计算图创建与执行

目录概述Sample示例GPU设备创建计算图创建与执行概述本文基于Tensorflow r1.15源码链接通过Sample示例,重点分析计算图创建与执行的内部原理。Sample示例import tensorflow as tfx1 = tf.placeholder(tf.float32, shape=(2, 2))y1 = tf.placeholder(tf.float32, shape=(2, 2))b1 = tf.placeholder(tf.f..

2022-03-13 14:47:37 2372

原创 【架构分析】DALI 源码分析

目录概述编程模型软件架构源码分析核心类图注册OPDALI初始化​执行计算图概述Nvidia Data Loading Library( 简称DALI ) 是Nvidia提供的开源库,用于深度学习中便捷的执行图形、视频、语音等各种数据类型的处理,本文基于DALI 1.9版本 链接对软件架构和源码做分析编程模型DALI的应用程序编程模型和Tensorflow非常类似 - 构建计算图和节点,在DALI中称为创建需要执行具体操作的Operator,并...

2022-01-05 00:15:00 2894 2

原创 【架构分析】Tensorflow 自动微分源码分析

文章 链接对几种不同类型的微分做了很详细的图文说明,值得一看Tensorflow 求解梯度(微分)的核心函数代码分析如下@tf_export(v1=["gradients"])def gradients(ys, xs, grad_ys=None, name="gradients", colocate_gradients_with_ops=False, ga.

2021-12-21 00:45:00 2120

原创 【编程技术】Tensorflow Framework Debug Tips

Tensorflow debug log tips

2021-12-20 23:45:00 1306

原创 【架构分析】分布式训练框架horovod源码分析

目录概述软件架构工作时序概述Horovod是当下流行的分布式训练框架,它是Uber公司提出来的。受到百度的RingAllReduce项目的启发。Horovod成功之处是工程化做的非常好,它把梯度同步的概念抽象出来,作为一个单独的Python包,支持不同的框架。同时提出了Tensor Fusion和Gradient Compression技术来进一步提供通信性能,基本上被业界作为通用技术接受了。另外还提供TimeLine工具来方便进行性能调试。以下是Horovod和PS的性能对

2021-11-27 12:42:38 1113

原创 【算法分析】Faster RCNN 模型与算法代码分析

引用 链接

2021-11-25 20:29:39 557

原创 【架构分析】Tensorflow Internals源码分析

目录概述整体架构计算图创建计算图执行Debug Tips概述本文基于Tensorflow r1.15源码 链接从整体架构、计算图创建、计算图执行、Debug Tips四部分介绍了Tensorflow内部的运行原理整体架构计算图创建计算图执行计算图动态执行动画示意Tensorflow计算图执行Debug Tips...

2021-10-18 20:15:00 361

原创 【编程技术】opencv扩展自定义模块与python wrapper

背景介绍opencv链接支持扩展第三方扩展模块链接,也支持pythonAPI wrapper,本文旨在说明如何扩展自定义的模块以及将wrap对应的pythonAPI如何编译编译命令行cd <path/to/opencv>mkdir buildcd buildcmake -D CMAKE_BUILD_TYPE=RELEASE \-D PYTHON_DEFAULT_EXECUTABLE=$(python -c "import sys; print(sys.ex...

2021-07-26 20:25:10 826

原创 【算法分析】深度学习框架-前向反向传播原理

目录背景目标核心方法前向传播反向传播结论背景深度学习框架如Tensorflow Pytorch 等最重要的功能之一即自动对网络模型进行了前向传播和反向梯度传播计算,从而对应用开发人员屏蔽了底层算法实现的细节,很容易进行网络模型的training、evalution、testing 最终构建符合AI应用场景需求的网络模型及其参数,本文旨在用通俗易懂的方式解释前向传播(Forward Pass)和反向传播(Backward Pass)的过程目标深度学习的目标

2021-07-18 14:20:25 591 2

原创 【编程技术】Tensorflow Forward Outputs &Backwards Gradient API介绍

背景介绍上一篇【编程技术】Keras Forward Outputs &Backwards Gradient API介绍介绍如何通过Keras API 获得Keras 模型(Ex:比如预定义的ResNet50 或者自定义的其它模型)的每一层前向输出(Forward Outputs)和每一层的后向梯度(Backward Gradients)本文旨在介绍通过Tensorflow API 在Google Official ResNet Mode中获得每一层前向输出(Forward Output..

2021-06-30 20:22:57 172

原创 【编程技术】Keras Forward Outputs &Backwards Gradient API介绍

如果选择Tensorflow作为AI框架,并且想找一个简化的、高层的模型定义接口来让深度学习的工作变得很便捷,Keras API可以提供很大的帮助 链接

2021-06-17 20:34:15 325

原创 【代码分析】通过transpose_kernel.cu 理解Memory BANK Conflict和Coalescing

目录背景BANK ConflictMemory Coalescingtranspose算法解析背景Nvidia的cuda 示例代码transpose_kernel.cu提供了两种矩阵转置的实现 -transpose_naive和transpose,其中后者针对BANK Conflict 和 MemoryCoalescing做了专门的优化,本文旨在结合代码说明transpose的算法和优化BANK Conflict百度bank conflict可以得到很多的说明,简...

2021-04-24 07:58:45 608

原创 【架构分析】pytorch cuda 编译扩展解析

目录背景介绍编译架构代码分析FindCUDA.cmakrun_nvcc.cmake背景介绍本文基于pytorch 1.7 分析它是如何扩展cmake编译脚本,支持使用nvidia的cuda sdk编译cuda cu 源代码的原理编译架构pytorch CUDA编译扩展架构图从上图可以看到,CMakeLists.txt中使用了扩展的API cuda_add_library/cuda_add_executable 编译cu文件,在cmake目录下面则实现了这两个.

2021-04-15 20:53:23 886

原创 【代码分析】Tensorflow OpShapeInferenceFn 详解

目录背景OpShapeInference分析举个栗子背景在我之前的文章Tensorflow自定义算子实现原理中说明了自定义OP的注册过程,其中开始的第一步通过REGISTER_OP注册算子,有一个类型为OpShapeInferenceFn的参数通过SetShapeFn注册到OpRegistrationData对象中,本文解释OpShapeInferenceFn的作用和实例OpShapeInference分析OP定义了Input和Output,但是没有定义它们的形状(...

2021-03-31 22:31:27 1008

原创 【问题分析】Tensorflow Unit Test与Benchmark Test

概述Tensorflow中的native程序的测试用例分为两类,gtest写的unit test与BENCHMARK宏定义的Benchmark Test,本文旨在分析它们是如何被框架调用执行。实例举个例子:Kernel cast_op的测试用例cast_op_test中用TEST_XXX的宏定义了可以运行在gtest框架下的测试用例#define TEST_CAST(in, out) \...

2021-03-16 09:57:44 508

原创 【问题分析】Tensorflow build过程发生 ‘undefined reference to‘ Error

问题描述在定制tensorflow的过程中,进行bazel build的过程中莫名提示如下的undefined reference to `tensorflow::DataTypeToEnum<float>::value'的错误,由于并没有修改过tensorflow的相关source code,所以感觉很困惑问题分析报错的DataTypeToEnum是一个templatestruct,它的定义在tensorflow/core/framework/types.h 中,并且...

2021-03-10 18:51:00 1385

原创 【架构分析】TensorFlow CUDA Device Backend扩展分析

目录概述Tensorflow Build系统CUDA Device Backend扩展概述Tensorflow除了能运行在CPU上,更重要的是它支持运行在GPU TPU 乃至其它硬件加速器上,从而带来倍爽的Training和Inference运行速度,本文旨以Tensorflow r1.15版本(下载链接)为例,分析Nvidia GPU的CUDA软件栈是如何被扩展到Tensorflow上作为加速Tensorflow运行速度的设备后端(Device Backend)T...

2021-03-04 20:08:50 374 3

原创 【架构分析】TensorFlow 自定义算子实现原理分析

目录背景介绍代码示例核心数据结构REGISTER_OP 分析REGISTER_KERNEL_BUILDER 分析自定义算子运行分析背景介绍TensorFlow官网如何创建自定义算子OP的How to文档链接,本文基于该文档中的代码示例,着重分析TensorFlow框架是如何实现用户自定义算子扩展的功能,力求知其然还要知其所以然。TensorFlow源码下载链接,本文的分析基于最新的master分支2.3.2 版本代码示例#include "tensorf..

2021-01-07 15:47:14 3440

原创 【编程技术】Python扩展C/C++与pytorch扩展实现原理分析

使用C 或 C++ 扩展 PythonPython API关于python API更详细的官方说明文档链接代码示例与解析//PyAPIExample.c#include <Python.h>//Step1: c function to do the application specific computationint fact(int n){ if (n <= 1) return 1; else return n * f...

2021-01-05 19:40:31 1945

原创 【算法分析】Conv卷积算子

什么是卷积百度一下卷积会有满屏幕的结果,这里就不再赘述它的定义和描述了,上动图展示典型的一个3D卷积过程如下Conv3D-signed卷积算法上图展示的是一种很简单粗暴的卷积算法,姑且称之为朴素卷积算法,算法的形式化描述如下//输入: F(N,Ci,Df,Df),卷积核K(Co,Ci,Dk,Dk)//输出: G(N,Co,Dg,Dg)for (n in N) {//遍历输入F的所有Batch输入 for (co in Co) {//遍历kernel的所有Output Ch

2020-12-22 09:59:00 2244

原创 【算法分析】Reduce类算子-ArgMax解析

什么是Reduce算子常见的如TensorFlow的tf.reduce_sum、MNN框架中的ArgMax/ArgMin,概况起来说就是对输入的多维张量(Tensor)数据,在某一维上执行特定的计算(比如sum、求Max/Min),从而达到降低维度的目的,下图先展示了一个典型的Reduce算子计算过程,本文围绕该过程对算法做详细说明3维矩阵Reduce计算示意理解Reduce的过程2维矩阵Reduce计算示意图如上图所示,2维矩阵(n,m) 有x和y两个维度的方向,在x维度做redu

2020-12-11 13:54:25 3536 2

原创 【编程技术】C++ CRTP & Expression Templates

目录概要奇异递归模板模式(CRTP)解决的问题与实现原理表达式模板(Expression Templates)解决的问题与实现原理示例代码示例程序对应的CRTP和编译树概要最近在学习Eigen 线性代数计算库的代码,对其中很多C++的模板定义不甚理解,作为一名资深码农甚是惭愧。学习了相关背景知识后总结为本文的两个知识点奇异递归模板模式(CRTP) 表达式模板(Expression Templates)奇异递归模板模式(CRTP)解决的问题与实现原理..

2020-11-17 13:51:02 827 2

原创 【架构分析】MESA (EGL/GLES)架构分析

目录背景介绍MESA软件架构非-Gallium3D架构Gallium3D架构Intel i915 BackendVirtIO-GPU Backend核心数据结构层次关系MESA核心函数调用时序非Gallium3D架构eglGetDisplay调用时序eglInitialize调用时序eglCreateContext调用时序eglCreateWindowSurface调用时序eglMakeCurrent调用时序eglSwapBuffer...

2020-10-13 16:28:42 10716 7

原创 【架构分析】Android EMUGL架构分析

目录Android EMUGL是什么架构分析AEMUGL-ClientAEMUGL-Serve代码详解Android EMUGL是什么上一篇文章介绍了QEMU模拟器,Android EMUGL(后面简称A-EMUGL)就是基于QEMU模拟器架构支持Android GLES应用渲染和显示的的软件框架,Google官方的代码和介绍参考Android EMUGL代码链接,本文旨在对代码分析后做更详细的架构和时序分解架构分析No A-EMUGL vs A-EMUG...

2020-07-27 20:38:28 1698

原创 【工程技术】QEMU运行Linux Kernel环境配置

目录为什么选择QEMU资源下载环境配置QEMU运行Linux解决SSH远程登录Linux Server没有GUI界面的问题为什么选择QEMUQEMU Architecture QEMU(Quick Emulator)是个模拟器(官网链接:https://www.qemu.org),它能够动态模拟特定架构的CPU指令,如X86,ARM,RSIC等。 如上图所示,QEMU模拟系统架构称为TARGET,运行 QEMU的系统架称为HOST,QEMU的核心模块是微...

2020-06-08 20:09:01 1463

原创 【程序分析】指针与二维数组的访问

访问二维数组的指针问题一级/二级指针访问二维数组看似是个简单的问题,但在实际编程中发现还是有不少值得学习的细节问题,本文总结如下指针解引用过程指针解引用过程声明一个指针类型使用该指针访问数据的解引用过程如上图所示,关键点如下要理解指针P本身的值被解释为数据的起始内存地址 指针P指向的数据类型TYPE是什么(TYPE当然还是一个指针类型,从而有了后文的二级指针使用注意事项)...

2019-11-14 13:54:07 881

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除