L2Cache切分
【优先级】:高
【描述】假设,AI处理器的L2Cache大小为192MB,L2Cache读写混合带宽约为7T/s,而GM的带宽约为1.6T/s,两者之间存在较大差距。搬入或搬出相同数据量的情况下,访问L2Cache读写数据比GM更快。若数据无法命中L2Cache,即需要访问的数据不在L2Cache内,导致需要去GM上读写,带宽利用效率较低,最终算子搬入或搬出数据变为算子整个运行过程的性能瓶颈。切分策略建议:当输入和输出数据的数据量超过L2Cache大小时,Tiling中使能L2Cache切分策略。
【反例】
假设,输入数据大小为InputTotalSize = 384MB,能使用的总核数为20个核,整体一次计算完成,则每个核至少两次读取输入数据,会发生数据无法命中L2Cache的情况。
图1 未使能L2Cache切分
【正例】
假设输入数据大小为InputTotalSize = 384MB, 能使用的总核数为20个核,均等切分成2份数据,则整体分两次进行计算,每次的计算量为192MB,第一次20个核先计算前192MB的数据,第二次20核计算后面192MB的数据。每次计算前读取的数据能够命中L2Cache,提升算子性能。
图2 使能L2Cache切分
注意: 图1和图2中方块中的数字表示核ID。
父主题: Tiling优化