CANN/asc-devkit GetMMConfig矩阵配置

发布时间:2026/9/12 19:35:50

CANN/asc-devkit GetMMConfig矩阵配置 GetMMConfig【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品AI Core支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品不支持Kirin X90支持Kirin 9030不支持功能说明灵活的自定义Matmul模板参数配置。通过设置MatmulConfigMode、MatmulShapeParams、MatmulQuantParams、MatmulBatchParams、MatmulFuncParams获取自定义的MatmulConfig。MatmulConfigMode指定了获取并要修改的MatmulConfig模板各模板介绍请参考模板特性用户根据使用需求通过设置可变参数即一个或多个任意顺序的MatmulShapeParams、MatmulQuantParams、MatmulBatchParams、MatmulFuncParams修改该MatmulConfig模板的相应参数配置。相比GetNormalConfig、GetMDLConfig等获取模板的接口该接口提供了更灵活的自定义Matmul模板参数的配置方式。函数原型template MatmulConfigMode configMode, typename... ArgTypes __aicore__ inline constexpr MatmulConfig GetMMConfig(ArgTypes... args)参数说明表1模板参数说明参数名描述configMode获取的MatmulConfig模板。ArgTypes可变模板参数。表2参数说明参数名输入/输出描述args输入可变参数任意顺序传入需要设置的MatmulShapeParams、MatmulQuantParams、MatmulBatchParams、MatmulFuncParams中的一个或多个。表3MatmulConfigMode参数说明| 参数 | 说明 | | --- | --- | | CONFIG_NORM | 表示设置MatmulConfig默认值为Norm模板 | | CONFIG_MDL | 表示设置MatmulConfig默认值为MDL模板 | | CONFIG_SPECIALMDL | 表示设置MatmulConfig默认值为SpecialMDL模板 | | CONFIG_IBSHARE | 表示设置MatmulConfig默认值为IBShare模板 |表4MatmulShapeParams参数说明| 参数 | 数据类型 | 说明 | | --- | --- | --- | | singleCoreM | uint32_t | 单核内M轴shape大小以元素为单位。 | | singleCoreN | uint32_t | 单核内N轴shape大小以元素为单位。 | | singleCoreK | uint32_t | 单核内K轴shape大小以元素为单位。 | | basicM | uint32_t | 与TCubeTiling结构体中的baseM参数含义相同Matmul计算时base块M轴长度以元素为单位。 | | basicN | uint32_t | 与TCubeTiling结构体中的baseN参数含义相同Matmul计算时base块N轴长度以元素为单位。 | | basicK | uint32_t | 与TCubeTiling结构体中的baseK参数含义相同Matmul计算时base块K轴长度以元素为单位。 |表5MatmulQuantParams参数说明| 参数 | 数据类型 | 说明 | | --- | --- | --- | | isPerTensor | bool | A矩阵half类型输入且B矩阵int8_t类型输入场景开启B矩阵量化时是否为per tensor。trueper tensor量化。falseper channel量化。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持此参数。 | | hasAntiQuantOffset | bool | A矩阵half类型输入且B矩阵int8_t类型输入场景开启B矩阵量化时是否使用offset系数。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持此参数。 |表6MatmulBatchParams参数说明| 参数 | 数据类型 | 说明 | | --- | --- | --- | | isNBatch | bool | 是否多Batch输入多Batch输出。仅对BatchMatmul有效开启多Batch后仅支持Norm模板且需调用IterateNBatch实现多Batch输入多Batch输出。参数取值如下false不开启多Batch默认值。true开启多Batch。 | | batchMode | BatchMode | BatchMatmul场景中Layout类型为NORMAL时设置BatchMatmul输入A/B矩阵的多batch数据总和与L1 Buffer的大小关系。参数取值如下BatchMode::BATCH_LESS_THAN_L1多batch数据总和L1 Buffer SizeBatchMode::BATCH_LARGE_THAN_L1多batch数据总和L1 Buffer SizeBatchMode::SINGLE_LARGE_THAN_L1单batch数据总和L1 Buffer Size。 | | isBiasBatch | bool | 批量多Batch的Matmul场景即BatchMatmul场景Bias的大小是否带有Batch轴。参数取值如下trueBias带有Batch轴Bias大小为Batch * N默认值。falseBias不带Batch轴Bias大小为N多Batch计算Matmul时会复用Bias。注意BatchMode::SINGLE_LARGE_THAN_L1场景仅支持设置为true。除MxMatmul场景外Ascend 950PR/Ascend 950DT支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持设置为false。Atlas 200I/500 A2 推理产品不支持设置为false。Kirin X90支持此参数。 | | bmmOutMode | BatchOutMode | 预留参数。 |表7MatmulFuncParams参数说明| 参数 | 数据类型 | 说明 | | --- | --- | --- | | intrinsicsLimit | bool | 当左矩阵或右矩阵在单核上内轴即尾轴大于等于65535元素个数时是否开启循环执行数据从Global Memory到L1 Buffer的搬入。例如左矩阵A[M, K]单核上的内轴数据singleCoreK大于65535配置该参数为true后API内部通过循环执行数据的搬入。参数取值如下false当左矩阵或右矩阵在单核上内轴大于等于65535时不开启循环执行数据的搬入默认值。true当左矩阵或右矩阵在单核上内轴大于等于65535时开启循环执行数据的搬入。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持此参数。 | | enVecND2NZ | bool | 开启通过vector指令进行ND2NZ。开启时需要设置SetLocalWorkspace。参数取值如下false不开启通过vector指令进行ND2NZ默认值。true开启通过vector指令进行ND2NZ。针对Atlas 推理系列产品AI Core在Unified Buffer空间足够的条件下Unified Buffer空间大于2倍TCubeTiling的transLength参数建议优先开启搬运性能更好。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持此参数。 | | enableDoubleCache | bool | 开启IBShare模板后在L1 Buffer上是否同时缓存两块数据。参数取值如下falseL1 Buffer上同时缓存一块数据默认值。true开启L1 Buffer上同时缓存两块数据。注意该参数取值为true时需要控制基本块大小防止两块数据的缓存超过L1 Buffer大小限制。包括MxMatmul场景Ascend 950PR/Ascend 950DT不支持此参数。Kirin X90不支持此参数。 | | enableL1CacheUB | bool | 是否开启L1 Buffer缓存Unified Buffer计算块。建议在MTE3和MTE2流水串行较多的场景使用。参数取值如下true开启L1 Buffer缓存Unified Buffer计算块。false不开启L1 Buffer缓存Unified Buffer计算块。若要开启L1 Buffer缓存Unified Buffer计算块必须在Tiling实现中调用SetMatmulConfigParams接口将参数enableL1CacheUBIn设置为true。包括MxMatmul场景Ascend 950PR/Ascend 950DT不支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持该参数。Atlas 推理系列产品AI Core支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90不支持该参数。 | | doMTE2Preload | uint32_t | 在MTE2流水间隙较大且M/N数值较大时可通过该参数开启对应M/N方向的预加载功能开启后能减小MTE2间隙提升性能。预加载功能仅在MDL模板有效不支持SpecialMDL模板。参数取值如下0不开启默认值。1开启M方向preload。2开启N方向preload。注意开启M/N方向的预加载功能时需保证K全载且M/N方向开启DoubleBuffer其中M方向的K全载条件为singleCoreK/baseK stepKaN方向的K全载条件为singleCoreK/baseK stepKb。 | | iterateOrder | IterateOrder | Matmul做矩阵运算的循环迭代顺序与表1中的iterateOrder参数含义相同。当ScheduleType参数取值为ScheduleType::OUTER_PRODUCT时本参数生效。参数取值如下ORDER_M先往M轴方向偏移再往N轴方向偏移。ORDER_N先往N轴方向偏移再往M轴方向偏移。UNDEF当前无效。注Norm模板的Matmul场景、MDL模板使用时若IterateOrder取值ORDER_MTCubeTiling结构中的stepN需要大于1IterateOrder取值ORDER_N时TCubeTiling结构中的stepM需要大于1。MxMatmul仅支持MDL模板。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90支持该参数。 | | scheduleType | ScheduleType | 配置Matmul数据搬运模式。参数取值如下ScheduleType::INNER_PRODUCT默认模式在K方向上做MTE1的循环搬运ScheduleType::OUTER_PRODUCT在M或N方向上做MTE1的循环搬运设置该取值后需要与IterateOrder参数配合使用。该配置当前只在BatchMatmul场景开启Norm模板或Matmul场景开启MDL模板或Norm模板生效。若IterateOrder取值ORDER_M则N方向循环搬运在singleCoreN大于baseN场景可能有性能提升即B矩阵的MTE1搬运并行若IterateOrder取值ORDER_N则M方向循环搬运在singleCoreM大于baseM场景可能有性能提升即A矩阵的MTE1搬运并行不能同时开启M方向和N方向循环搬运注Norm模板的Batch Matmul场景或者MDL模板中singleCoreKbaseK时不能设置为ScheduleType::OUTER_PRODUCT取值需使用默认模式。Norm模板或MDL模板的Matmul场景仅支持在纯Cube模式只有矩阵计算下配置ScheduleType::OUTER_PRODUCT。MDL模板仅在调用IterateAll计算的场景支持配置ScheduleType::OUTER_PRODUCT。仅在C矩阵输出至GM时支持配置ScheduleType::OUTER_PRODUCT。Ascend 950PR/Ascend 950DT支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90支持该参数。 | | enableReuse | bool | SetSelfDefineData函数设置的回调函数中的dataPtr是否直接传递计算数据。若未调用SetSelfDefineData设置dataPtr该参数仅支持默认值true。参数取值如下true直接传递计算数据仅限单个值。false传递GM上存储的数据地址信息。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持该参数。 | | enableUBReuse | bool | 是否开启Unified Buffer复用。在Unified Buffer空间足够的条件下Unified Buffer空间大于4倍TCubeTiling的transLength参数设置开启Unified Buffer复用后Unified Buffer空间分为互不重叠的两份分别存储Matmul计算相邻前后两轮迭代的数据后一轮迭代数据的搬入将不必等待前一轮迭代的Unified Buffer空间释放从而优化流水。参数取值如下true开启Unified Buffer复用。false不开启Unified Buffer复用。包括MxMatmul场景Ascend 950PR/Ascend 950DT不支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持该参数。Atlas 推理系列产品AI Core支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90不支持该参数。 | | isPartialOutput | bool | 是否开启PartialOutput功能即控制Matmul顺序输出K方向的基本块计算方式Matmul一次Iterate计算的K轴是否进行累加计算。参数取值如下true开启PartialOutput功能一次Iterate的K轴不进行累加计算Matmul每次计算输出局部baseK的baseM * baseN大小的矩阵分片。false不开启PartialOutput功能一次Iterate的K轴进行累加计算Matmul每次计算输出SingleCoreK长度的baseM * baseN大小的矩阵分片。Ascend 950PR/Ascend 950DT支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90支持此参数。 | | isA2B2Shared | bool | 是否开启A2和B2的全局管理即控制所有Matmul对象是否共用A2和B2的double buffer机制。该配置为全局配置所有Matmul对象取值必须保持一致。注意开启时A矩阵、B矩阵的基本块大小均不能超过32KB。参数取值如下true开启。false关闭默认值。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持该参数。除MxMatmul场景外Ascend 950PR/Ascend 950DT支持该参数。Kirin X90支持此参数。该参数取值为true时建议同时设置enUnitFlag参数为true使搬运与计算流水并行提高性能。 | | isEnableChannelSplit | bool | 是否开启channel_split功能。正常情况下Matmul计算出的CubeFormat::NZ格式的C矩阵分形为16*16假设此时的分形个数为xchannel_split功能是使获得的C矩阵分形为16*8同时分形个数变为2x。注意当前仅在Matmul计算结果C矩阵的Format为CubeFormat::NZTYPE为float类型矩阵乘结果CO1为float类型输出到Global Memory的场景支持开启该参数。参数取值如下false默认值不开启channel_split功能输出的分形为16*16。true开启channel_split功能输出的分形为16*8。Ascend 950PR/Ascend 950DT支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90不支持此参数。 | | enableKdimReorderLoad | bool | 是否开启K轴错峰加载数据。基于相同Tiling参数执行Matmul计算时如果多核的左矩阵或者右矩阵相同且存储于Global Memory多个核一般会同时访问相同地址以加载矩阵数据引发同地址访问冲突影响性能。开启K轴错峰加载数据后多核执行Matmul时将尽量在相同时间访问矩阵的不同Global Memory地址减少地址访问冲突概率提升性能。该参数功能只支持MDL模板建议K轴较大且左矩阵和右矩阵均非全载场景开启该功能。参数取值如下。false默认值关闭K轴错峰加载数据的功能。true开启K轴错峰加载数据的功能。除MxMatmul场景外Ascend 950PR/Ascend 950DT支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90支持此参数。 | | enableL1BankConflictOptimise | bool | 是否开启L1上的Bank冲突优化。在Tiling侧调用EnableL1BankConflictOptimise接口获取能否开启该优化的结果并与TilingKey机制配合使用在Kernel侧增加代码实现分支。若开启该优化基于相同Tiling参数执行Matmul计算时对A、B矩阵和MxMatmul场景的ScaleA、ScaleB矩阵不再连续分配L1 Buffer的空间在DoubleBuffer场景下并行计算的数据分别被分配在L1 Buffer的上半部空间和下半部空间非DoubleBuf场景数据被分配在L1 Buffer的上半部空间另外Bias被分配在L1 Buffer的上半部空间向量的量化/反量化场景的量化系数被分配在L1 Buffer的下半部空间。参数取值如下。false默认值关闭L1 Bank冲突优化。true开启L1 Bank冲突优化。除MxMatmul场景外Ascend 950PR/Ascend 950DT支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持该参数。Atlas 推理系列产品AI Core不支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90不支持此参数。 |返回值说明MatmulConfig结构体。约束说明无调用示例// 获取MatmulConfig模板为Norm模板 constexpr static MatmulConfigMode configMode MatmulConfigMode::CONFIG_NORM; // singleCoreM、singleCoreN、singleCoreK、basicM、basicN、basicK constexpr static MatmulShapeParams shapeParams {128, 128, 128, 64, 64, 64}; // B矩阵量化时为per channel且不使用offset系数 constexpr static MatmulQuantParams quantParams {false, false}; // 不开启多Batch constexpr static MatmulBatchParams batchParams{false}; // 不进行芯片指令搬运地址偏移量校验开启通过vector进行ND2NZ constexpr static MatmulFuncParams funcParams{false, true}; constexpr static MatmulConfig mmConfig GetMMConfigconfigMode(shapeParams, quantParams, batchParams, funcParams);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/7 16:33:56

AI芯片技术解析:核心价值、选型与部署实战

1. AI芯片的本质与核心价值 AI芯片本质上是一种为人工智能计算任务专门优化的处理器。与传统CPU不同,它的设计哲学是"少做复杂的事,但把简单的事做到极致"。想象一下,如果让一位大学教授(CPU)去做100道两位数…

2026/9/10 8:38:24

RStudio安装配置与核心工作流详解:从入门到专业实践

1. 为什么RStudio不是“另一个IDE”,而是R语言生态的呼吸系统 RStudio不是简单地给R语言套上图形界面的外壳,它本质上是R语言工作流的呼吸系统——你每一次加载数据、调试函数、生成图表、撰写报告,甚至和同事协作,都在这个系统里…

2026/9/12 19:31:00

48核配置TPS差一倍?数据库一体机软硬协同性能调优实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 19:31:00

RoboMaster硬件基础讲义V0.2.1:从主控板到电源系统的实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 19:31:00

AI全栈开发实战:从技术选型到成本治理的完整路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 19:31:00

医疗推理提速:用Neo4j知识图谱替代传统规则引擎

1. 医疗推理为什么要落在“图”上 2018年我参与过一个合理用药审查系统的改造,当时团队用关系型数据库存了药品说明书、适应证、禁忌证和不良反应数据,配合一堆规则引擎做冲突检测。规则写得多了之后,出现一个很尴尬的现象: 规则…

2026/9/12 19:26:00

Linux C++多线程编程核心概念与实战技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码