高效卷积范式与药物发现加速技术
立即解锁
发布时间: 2025-08-31 00:21:25 阅读量: 7 订阅数: 26 AIGC 

# 高效卷积范式与药物发现加速技术
## 1. 高效 im2win 卷积算法
### 1.1 算法概述
提出了一种基于 GPU 的高性能 im2win 卷积算法(Algorithm 3),其输入为输入张量 I、滤波器张量 F 和步长 s,输出为输出张量 O。算法流程如下:
```plaintext
Algorithm 3: High Performance Im2win Convolution Algorithm On GPU
Input: Input tensor I, Filter tensor F, Stride s
Output: Output tensor O
Im2winTensor: ˆI = Function im2win(I, F, s)
Dimensions: M = Co, N = No × Ho × Wo, K = Cf × Hf × Wf
# of blocks: M/MB × N/NB
# of threads per block: MB/MT × NB/NT
1 Registers: RˆI[2][NT ], RF[2][MT ], RO[MT × MT ] //double buffer
2 Shared memories: SˆI[2][KB × NB], SF[2][MB × KB] //double buffer
3 SˆI[0][kB × nB] load ←−−kB × nB of ˆI(0, by)
4 SF[0][mB × kB] load ←−−mB × kB of F(bx, 0)
5 syncthreads()
6 RˆI[0][nT ] vec load ←−−−−−nT of SˆI[0][0 × nB]
7 RF[0][mT ] vec load ←−−−−−mT of SF[0][mB × 0]
8 for kk = 0 to Cf × Hf × Wf/Kf,b −1 do
9 for k′ = 1 to Kf,b −1 do
10 RˆI[load][nT ] vec load ←−−−−−nT of SˆI[store][k′ × nB] //prefetching
11 RF[load][mT ] vec load ←−−−−−mT of SF[store][mB × k′] //prefetching
12 RO[mT × nT ] += RF[store][mT ] × RˆI[store][nT ] //micro-kernel
13 if kk ̸= Cf × Hf × Wf/Kf,b −1 then
14 SˆI[load][kB × nB] load ←−−kB × nB of ˆI(kk + 1, by) //prefetching
15 SF[load][mB × kB] load ←−−mB × kB of F(bx, kk + 1) //prefetching
16 syncthreads()
17 RˆI[0][nT ] vec load ←−−−−−nT of SˆI[store][0 × nB]
18 RF[0][mT ] vec load ←−−−−−mT of SF[store][mB × 0]
19 RO[mT × nT ] += RˆI[1][nT ] × RˆI[1][nT ] //micro-kernel
20 O(bx, by) store ←−−−RO[mT × nT ]
```
### 1.2 优化策略
受 GEMM 在 GPU 上的优化技术启发,对算法进行了多种优化:
- **分块(Tiling)**:将输入张量和滤波器张量的索引划分为小块(tiles),在块级别为 MB × NB × KB,线程级别为 MT × NT。分块的主要作用是通过减少数据访问和提高数据局部性来提升计算性能,例如使块大小与共享内存或寄存器大小匹配,提高数据重用和缓存命中率。
- **共享内存和寄存器(Shared Memory and
0
0
复制全文
相关推荐








