Skip to content

ttaohe/3DV_CompatibilityGraph_kernel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

项目简介

本项目实现并优化了用于计算矩阵 B 的 CUDA 核函数(上三角区域累加三元关系),从基线到多级优化逐步提升访存效率、数据复用度与有效算术密度,最终显著加速。

内核版本概览(越到后面越快)

  • v1(compute_B_kernel_float_v1): 基线实现。每线程负责一个 (row,col),遍历全部 k,直接从全局内存读取 S/R/D,对称写回。
  • v1_smem(compute_B_kernel_float_v1_smem): 引入共享内存 tile 复用。将当前 tile 的 row/col 行搬入 smem(转置布局避免 bank 冲突),命中时显著降低全局读取。
  • v2(compute_B_kernel_float_v2): 访存顺序与按需加载优化。先判 S 合法再读 R/D,减少无效内存访问;k 方向顺序访问更友好缓存。
  • v3(compute_B_kernel_float_v3): 三路合并读(zip_kernelS/R/D 打包为 float4),一次合并访问替代多次离散加载,并做轻度循环展开提升 ILP。
  • v4(compute_B_kernel_float_v4): K 维按 tile 稀疏剪枝 + 三维网格分段归约。在线构建 skipTile 掩码跳过无效 k 段,grid.z 覆盖 kTile 提升并行度,分段和用原子加写回。

目录结构

  • func_kernel.cu: CUDA 核函数与主机侧封装(v1/v2/v1_smem/v3/v4)。
  • include/func_kernel.cuh: 头文件声明。
  • export.cpp: PyTorch C++ 扩展导出接口。
  • test_v3.py: 示例/测试脚本。
  • ncu_profile.sh: Nsight Compute 性能采样脚本。
  • baseline_v1.ncu-rep: 基线 ncu 报告(示例)。

快速开始

运行示例

python test_v3.py

性能剖析(Nsight Compute)

bash ncu_profile.sh

可对比各内核版本的时间、带宽、指令与 stall 分布;重点关注内存事务、L2 命中、原子冲突与 FLOPs/Byte 的变化。

设计要点

  • 访存优化:按需加载、float4 合并读、共享内存 tile 复用、避免 bank 冲突。
  • 计算优化:条件合并、轻度展开、分段并行与原子分段归约。
  • 剪枝策略:build_skip_tile_mask_onlinek 维按 tile 做存在性检查,整段无效则直接早停,显著减少无效 FLOPs。

讲解文章

详细原理、优化路径与对比数据请见知乎: 0.5x: 3DV算子优化思路

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published