1 cache_read
将数据存储到片上缓存,减少访问数据时间。
2 cache_write
将结果写入片上缓存,然后再写入片外缓存。当然这里的片上和片外并不是绝对的概念,也可以理解为不同层次的存储结构。
3 set_scope
为数据指定存储位置,相比于cache_read和cache_write提供了更灵活的指定数据存储方式。本质上是相同的。
4 storage_align
在我看的文章中,storage_align是针对GPU shared memory的一个优化,目的是为了减少同一个bank的访问冲突。在GPU中shared memory被分割成多个bank,这些bank可以被独立线程同时访问。Storage_align就是为了将数据和bank大小匹配,减少bank conflict的发生。AI芯片中也有类似的问题,只有尽量减少bank冲突的发生,才能最大化并行计算。
5 compute_at
不懂CUDA,所以对文章中的代码不是很理解,但是从其解释看,对于多次循环的计算(或者多维计算),可以通过并行计算来降维。
6 compute_inline
将独立操作转化为内联函数,有点类似FPGA上的流水线计算。转化成内联函数从上层层面减少了stage。在FPGA中也有类似问题,可以将具有相同迭代的多条指令放在一起执行。
7 compute_root
Compute_at的反操作。
8 fuse
将多个循环iter融合为一个iter。
9 split
Fuse的反操作,将一次循环迭代拆分为多次。
10 reorder
调整循环计算迭代顺序。
11 tile
Tile也是将循环迭代进行拆分,拆分多次计算。是split+reorder。
12 unroll
将循环展开,增加并发执行。
13 vectorize
将循环迭代替换成ramp,可以通过SIMD指令实现数据批量计算,也就是单指令多数据计算。这在AI加速中会很常用,每条指令都是多数据计算的。
14 bind
CUDA中使用的优化方法,将iter绑定到不同线程,实现并发计算。
15 parallel
实现多设备并行。
16 pragma
可以在代码中人为添加编译注释,人为干预编译优化。HLS中就是通过这样的方式来实现c的硬件编程的。
17 prefetch
将数据计算和load后者store数据重叠起来,在FPGA中是很常见优化方法。
18 tensorize
将tensor作为一个整体匹配硬件的计算核心,比如一个卷积运算就可以实现在FPGA上的一个匹配。
1 cache_read
将数据存储到片上缓存,减少访问数据时间。
2 cache_write
将结果写入片上缓存,然后再写入片外缓存。当然这里的片上和片外并不是绝对的概念,也可以理解为不同层次的存储结构。
3 set_scope
为数据指定存储位置,相比于cache_read和cache_write提供了更灵活的指定数据存储方式。本质上是相同的。
4 storage_align
在我看的文章中,storage_align是针对GPU shared memory的一个优化,目的是为了减少同一个bank的访问冲突。在GPU中shared memory被分割成多个bank,这些bank可以被独立线程同时访问。Storage_align就是为了将数据和bank大小匹配,减少bank conflict的发生。AI芯片中也有类似的问题,只有尽量减少bank冲突的发生,才能最大化并行计算。
5 compute_at
不懂CUDA,所以对文章中的代码不是很理解,但是从其解释看,对于多次循环的计算(或者多维计算),可以通过并行计算来降维。
6 compute_inline
将独立操作转化为内联函数,有点类似FPGA上的流水线计算。转化成内联函数从上层层面减少了stage。在FPGA中也有类似问题,可以将具有相同迭代的多条指令放在一起执行。
7 compute_root
Compute_at的反操作。
8 fuse
将多个循环iter融合为一个iter。
9 split
Fuse的反操作,将一次循环迭代拆分为多次。
10 reorder
调整循环计算迭代顺序。
11 tile
Tile也是将循环迭代进行拆分,拆分多次计算。是split+reorder。
12 unroll
将循环展开,增加并发执行。
13 vectorize
将循环迭代替换成ramp,可以通过SIMD指令实现数据批量计算,也就是单指令多数据计算。这在AI加速中会很常用,每条指令都是多数据计算的。
14 bind
CUDA中使用的优化方法,将iter绑定到不同线程,实现并发计算。
15 parallel
实现多设备并行。
16 pragma
可以在代码中人为添加编译注释,人为干预编译优化。HLS中就是通过这样的方式来实现c的硬件编程的。
17 prefetch
将数据计算和load后者store数据重叠起来,在FPGA中是很常见优化方法。
18 tensorize
将tensor作为一个整体匹配硬件的计算核心,比如一个卷积运算就可以实现在FPGA上的一个匹配。
举报