你好,这个问题将由@hw-zjy为您解答


你好,以下是对问题的答复:
1、你说提的CS架构指的是Matmul的MIX模式,是否是MIX模式需要看算子的写法,在CV分离架构下默认为MIX模式,即AIV驱动cube侧,通过MatmulClient(AIV)驱动MatmulService(cube)
2、在MIX模式下,会在AIV与AIC侧之间通过消息通信框架中专消息,带来额外的scalar性能开销,scalar相比cube only会多10%左右
3、可以使用纯Cube模式,在该模式下完成Matmul计算,可减少消息通信的性能开销,提升算子性能。具体实现请参考https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/latest/programug/Ascendcopdevg/docs/guide/算子实践参考/优秀实践/Matmul性能调优案例/Matmul高阶API使能纯Cube模式.md


你的回答无法解决我的问题,我现在的场景就是CV融合的MIX场景,不可能使用纯cube模式,在所有cube计算完以后再计算vector。
你们有没有尝试比对过在不使用这套通信框架的前提下,实现相同MIX场景下的功能。和使用通信框架时的性能差异有多少?


你好,可以使用纯CUBE模式跑matmul,插入核间同步后交替执行cube-vector指令,具体实现可参考用例:https://gitcode.com/cann/asc-devkit/tree/master/examples/01_simd_cpp_api/04_advanced_api/00_matmul/matmul_fused_manual
通过msopprof工具收集性能数据,对比MIX模式与CUBE模式的scalar开销,CUBE模式开销可降低22%,msopprof工具指南:https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/latest/devaids/optool/docs/zh/user_guide/msopprof_performance_data.md


好的谢谢,我们尝试一下


Welcome to ask questions and discuss with other members.
问题描述
环境:Ascend910_9382
cann版本:9.0.0
cpu:arm架构
在优化一个算子的时候,发现使用了cann头文件中的matmul::Matmul类。

我的算子要做的是每cube处理一个matmul操作,产生一个矩阵写入GM,然后通知vector进行反量化处理。同步关系中只有vector依赖cube的生产。
采集了这个算子的profiling,发现aic_scalar_ratio占比极高,达到了接近90%。并且在cube计算完以后还需等待vector结束,此时cube的scalar存在大量的空转。
用ai分析了matmul的代码,ai给出的结论是:在这个算子中,matmul使用了busy_polling的CS架构,cube为server,vector为client。
想求证以下问题: