Cuda API 创建对象: #include <cuda_runtime.h> #include <cuda.h> #include <iostream> #include <string> // 获取当前机器的GPU数量 cudaError_t error_id = cudaGetDevice
随着LLM业务的不断发展,我们发现单机单卡无法承载一个模型的训练和推理,故此出现了单机多卡和多机多卡的训练推理算子,这时候每个机和卡之间都需要通信,所以通信算子十分的重要。 分布式并行 下面是传统的四种并行处理架构,常用于大模型训练。 DP
(施工ing) 概述 我们知道,算子的作用是计算,那在整个体系中,我们的核心目标是拉满GPU的利用率。 在现代分布式体系中,多GPU之间同时存在着计算、内存访问和通信这三种基本活动,为了服务于我们的核心目标,我们需要尽可能的将通信时间和访存时间放在计算时间内,使得GPU不存在运算时间的泡泡。 大模型
(施工ing)
代码参考了傅哥,请b站关注我是傅傅猪喵,谢谢喵! Triton DSL是以BLOCK tile为中心的Python DSL。与CUDA相比,Triton的使用者无法控制所有细节,因为某些优化是自动完成的,但是在Triton编译器的逐层编译优化之下也可以获得与Cuda相近甚至超过的性能。另外,Trit
矩阵乘法跟之前不同,之前一维可以直接写一个kernel,或者多个kernel线性的排布来并行计算,那么矩阵乘法就是由一维向二维转变的关键。这时候一维的kernel排布也变成了二维排布。 这里最关键的点是在于threadIdx和dataIdx的映射,从原来单一的tid变成了二维的tidx和tidy。
该项目代码参考傅哥的课程,很有用的课程,请多多支持他。 reduce 规约求和是cuda中一个经典的问题,其本质是将输入的序列进行求和。 在CUDA的多线程中,我们清楚数据被分为一个一个的block中进行运行,每个block通过warp来并发32个线程进行运算。 所以将数据分割成一个一个block进
上文中,我们运行了一个简单的cuda函数,并且一次过的将其运行了起来,这次,我们需要补充一些基础的概念,通过概念和框架的建立,我们才能走的更远,高屋建瓴的认识更多。 vscode的CUDA调试 继续沿用上次的hello world代码,可能名字有点修改,问题不大,请务必看清楚文件名! 新建一个res
从cuda kernel出发,看懂人生第一个cuda attention
CUDA是什么 cuda是一种gpu编程组件,是一种原生支持GPU软硬件的架构,使得开发者可以直接在 GPU 上编写和执行通用计算程序。 GPU架构 上图是H100白皮书中,H100 GPU带满了144个SM的架构图
ACM
算法
算法竞赛
vllm
AMD算子挑战赛
github
inference
LLM
CUDA入门到入土
cuda/Triton
MLsys24
paper
blog
默认分类