Hi! 我是李文举.

一名AI算法工程师,热爱生成式模型和具身智能.

CUDA多GPU编程要点


总结一下多GPU的相关要点。

1、使用多gpu的原因:

  • 单一gpu内存难以加载庞大的数据集
  • 提升吞吐量和效率

阅读全文 »


CUDA中的流的相关要点


总结一下流的相关要点。

1、流中排队的所有操作,相对于主机都是异步的,但在流的内部,它们严格按照主机代码确定的顺序执行的。

2、异步函数和流是在cuda中构建网格级并发的两个基本支柱。

阅读全文 »


AI经典资料收集


收集那些看了之后直呼过瘾的资料。

深度学习中的Normalize

GEMM代码优化讲解

pytorch实现Transformer

pytorch源码解读系列

阅读全文 »


IEEE754浮点标准


一、基本结构

浮点系统采用位模式来表示数值。一个数值的表示由3部分组成:符号位(S)、阶码(E)和尾数(M)。每个(S,E,M)模式根据下列格式可以标识一个唯一的数值:

阅读全文 »


模型推理速度影响因素分析


以下是对影响模型推理速度的因素分析,目的是构建总体的分析框架。属于学习笔记,原文在这里,向作者致谢。

1、计算量

计算量越大,推理耗时通常越长。模型的计算量主要有各个算子的计算量相加得到。常说的计算量通常指FLOps(Float Operations)。 pytorch中分析计算量的工具:ptflops。

2、参数量

参数量并不直接影响推理速度,但是会影响内存占用和模型磁盘空间占用,以及程序初始化时间。

阅读全文 »


动态链接分析指引


一、为什么需要动态链接

静态链接的出现,提高了程序的模块化水平。对于一个大的项目,不同的人可以独立地测试和开发自己的模块。通过静态链接,生成最终的可执行文件。

但是在多进程的背景下,静态链接的缺点就显示出来了。

想象这样一种情况,一个程序使用了glibc标准库,现在计算机中同时运行着该程序的100个进程。那么,每个进程中都会有一份glibc,操作系统需要在真实的物理内存中加载100份glibc,浪费了很多内存。

阅读全文 »


CUDA矩阵转置要点


在kernel执行过程中,执行了两个相互独立的索引映射。

1、第一个映射


第一个映射比较简单,就是根据线程索引映射到原始矩阵的全局内存地址。

分成两步完成,第一步是映射到矩阵的坐标。

阅读全文 »


技术人最终还是要靠技术


当初选择技术作为职业方向时,怀着技术改变世界的理想。

入行后,慢慢地,一种声音总在耳边来回响,那就是技术要服务业务。

好像这个说法也没毛病,毕竟这样才能体现技术的价值。

阅读全文 »


相关链接