@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
GoogleのXNNPackについては、このブログでも2回取り上げています。
で、実装を眺めてみました。f32-gemm です。
4x8 の実装は、aarch32 で5種類、aarch64 で6種類もありますね。
- aarch32 neon-ld64
- aarch32 neon-cortex-a53
- aarch32 neon-cortex-a55
- aarch32 neon-cortex-a57
- aarch32 neon-cortex-a75
- aarch64 neonfma-ld64
- aarch64 neonfma-ld128
- aarch64 neon-cortex-a53
- aarch64 neon-cortex-a55
- aarch64 neon-cortex-a57
- aarch64 neon-cortex-a75
Intelのライブラリのように、各Opに対して各CPUアーキテクチャに合ったコードがあるのね。。。
この commit では、
4x8 GEMM and IGEMM microkernels for Cortex A55. 7.8% faster for e2e mobile net v2.
Was f32_gemm_4x8__aarch64_neonfma_cortex_a53/mobilenet_v2/real_time 132632 us
Now f32_gemm_4x8__aarch64_neonfma_cortex_a55/mobilenet_v2/real_time 123029 usThe rev 1 version of Cortex A55 can co-issue a 64 bit
vector load with each FMA, so re-arrange the Cortex-A53
microkernel with 3 FMA paired with 2 loads and INS.
とありました。
地道な改善。。。