avatar
Articles
68
Tags
12
Categories
0
回到首页
文章归档
学习笔记
关于本人
我的朋友
LogoYuanzhong Chen's Blogpytorch-day11 Back to Home
回到首页
文章归档
学习笔记
关于本人
我的朋友

pytorch-day11

Created2026-06-13|Updated2026-06-14
|Post Views:
Author: Adam Chen
Link: https://517adam.github.io/blog/2026/06/13/pytorch-day11/
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 3.0 CN unless otherwise stated.
Previous
CUDA全局坐标计算
1int i = blockIdx.x * blockDim.x + thredIdx.x CUDA 为每一个线程提供了四个内置变量,用于定位自己在整个任务中的位置: 量 含义 维度范围 threadIdx.x/y/z 线程在块内的局部索引 日 blockDim-1 blockIdx.x/y/z 线程块在网格内的索引 日 gridDim-1 blockDim.x/y/z 每个块每维的线程数 由启动参数 决定 $<<\ldots,\quad{\mathrm{t h r e a d s}}>>>$ gridDim.x/y/z 网格每维的块数 由启动参数 << 所谓全局索引,就是跳过前面所有块的线程,再加上当前块内的偏移。 全局坐标计算方式在内存中,数据始终按照一维排布,因此全局坐标计算就是将多维逻辑索引映射为一维物理地址 一维坐标计算1int global_id = blockIdx.x * blockDim.x + threadI...
Next
GPU并行
一些前置的东西SIMD(Single Instruction, Multiple Data) 属于硬件/指令集层面,是硬件能力,一条指令对一排数据做同样的计算。要求所有数据走完全一致的运算路径,不能各走各的分支 SIMT(Single Instruction, Multiple Threads) 是NVIDIA为GPU造的词,属于硬件执行模型层,是硬件和编程模型中间的“桥”。一个Wrap(32个线程)共用一条指令流,但每个线程有自己的寄存器,自己的内存地址,甚至可以走不同分支。本质是用SIMD的底层硬件,封装成一堆看起来独立的线程。 SPMD(Single Program, Multiple Data) 是变成模型,和硬件解耦。所有进程/线程跑同一份代码,处理不同数据。运行时可以走各自的不同路径,停在不同位置。这不要求指令级同步。它可以跑在完全独立的多核/集群硬件上 写CUDA使用SPMD思维,GPU使用SIMT执行模型调度,硬件底层通过SIMD式的向量单元。三层串成一条链 Flynn 分类法 这种分类法将 “数据流 x 指令流”将架构分为...
avatar
Adam Chen
Articles
68
Tags
12
Categories
0
Follow Me
Announcement
我喜欢你
Recent Posts
每天应该做些啥2026-07-07
各种各样的JEPA2026-06-21
规约reduce算法2026-06-21
oneflow element-wise代码解析2026-06-20
2026-6-182026-06-18
© 2025 - 2026 By Adam ChenFramework Hexo 7.3.0|Theme Butterfly 5.5.1