开发者
资源
[object Object]

【优先级】:高

【描述】假设,AI处理器的L2 Cache大小为192MB,L2 Cache读写混合带宽约为7TB/s,而GM的带宽约为1.6TB/s,两者之间存在较大差距。搬入或搬出相同数据量的情况下,访问L2 Cache读写数据比GM更快。若数据无法命中L2 Cache,即需要访问的数据不在L2 Cache内,导致需要去GM上读写,带宽利用效率较低,最终算子搬入或搬出数据变为算子整个运行过程的性能瓶颈。切分策略建议:当输入和输出数据的数据量超过L2 Cache大小时,Tiling中使能L2 Cache切分策略。

【反例】

假设输入数据大小为InputTotalSize,L2 Cache大小为L2CacheSize,InputTotalSize = L2CacheSize * 2,总核数为20个核,数据未切分,整体一次完成计算。假设20个核一次可以处理共L2CacheSize的数据,则每个核至少两次读取输入数据。

图 1 未使能L2 Cache切分[object Object][object Object]

[object Object]

【正例】

假设输入数据大小为InputTotalSize,L2 Cache大小为L2CacheSize,InputTotalSize = L2CacheSize * 2,能使用的总核数为20个核,输入数据均等切分成2份数据,则整体分两次进行计算,每次的计算量为L2CacheSize,第一次20个核先计算前L2CacheSize个数据,第二次20个核计算后L2CacheSize个数据。每次计算前读取的数据能够命中L2 Cache,提升算子性能。

图 2 使能L2 Cache切分[object Object][object Object]

[object Object]

更多完整样例请参考