已合并
修复dav_3510下SSBUF通信场景用户Workspace地址偏移 #5264
修复dav_3510下SSBUF通信场景用户Workspace地址偏移 #5264
已合并
zhangyujia77创建于 8月21日
共 4 个文件变更+35-0
@@ -55,8 +55,12 @@ __aicore__ inline GM_ADDR GetUserWorkspace(GM_ADDR workspace)
55 return workspace;55 return workspace;
56#else56#else
57 (void)(workspace);57 (void)(workspace);
58+#if ENABLE_CV_COMM_VIA_SSBUF != 0 && __MIX_CORE_AIC_RATION__ != 1
59+ return GetSysWorkSpacePtr();
60+#else
58 return GetSysWorkSpacePtr() + RESERVED_WORKSPACE;61 return GetSysWorkSpacePtr() + RESERVED_WORKSPACE;
59#endif62#endif
63+#endif
60}64}
61 65 
62__aicore__ inline int64_t GetStoreAtomicConfigImpl() { return get_st_atomic_cfg(); }66__aicore__ inline int64_t GetStoreAtomicConfigImpl() { return get_st_atomic_cfg(); }
@@ -6016,6 +6016,29 @@ Contents of section
6016 compile_info,6016 compile_info,
6017 )6017 )
6018 self.assertNotEqual(result, "")6018 self.assertNotEqual(result, "")
6019+ self.assertIn(
6020+ " GM_ADDR usrWorkspace = AscendC::GetUserWorkspace(workspace);\n",
6021+ result,
6022+ )
6023+ with mock.patch.object(
6024+ CommonUtility, "is_support_workspace_offset", return_value=True
6025+ ):
6026+ result = _gen_set_workspace_codes(
6027+ is_mix,
6028+ is_single_and_using_hard_sync,
6029+ op_info,
6030+ tiling_info,
6031+ compile_options,
6032+ compile_info,
6033+ )
6034+ self.assertIn(
6035+ "#if ENABLE_CV_COMM_VIA_SSBUF != 0 && __MIX_CORE_AIC_RATION__ != 1\n"
6036+ " GM_ADDR usrWorkspace = workspace;\n"
6037+ "#else\n"
6038+ " GM_ADDR usrWorkspace = workspace + AscendC::RESERVED_WORKSPACE;\n"
6039+ "#endif\n",
6040+ result,
6041+ )
6019 with buildcfg.build_config() as cfg:6042 with buildcfg.build_config() as cfg:
6020 cfg.current()["tir.op_debug_config"] = ["oom"]6043 cfg.current()["tir.op_debug_config"] = ["oom"]
6021 result = _gen_set_workspace_codes(6044 result = _gen_set_workspace_codes(
@@ -652,7 +652,11 @@ def _gen_set_workspace_codes(
652 source += " GM_ADDR usrWorkspace = AscendC::GetUserWorkspace(workspace);\n"652 source += " GM_ADDR usrWorkspace = AscendC::GetUserWorkspace(workspace);\n"
653 else:653 else:
654 source += (654 source += (
655+ "#if ENABLE_CV_COMM_VIA_SSBUF != 0 && __MIX_CORE_AIC_RATION__ != 1\n"
656+ " GM_ADDR usrWorkspace = workspace;\n"
657+ "#else\n"
655 " GM_ADDR usrWorkspace = workspace + AscendC::RESERVED_WORKSPACE;\n"658 " GM_ADDR usrWorkspace = workspace + AscendC::RESERVED_WORKSPACE;\n"
659+ "#endif\n"
656 )660 )
657 if "oom" in get_current_build_config("tir.op_debug_config"):661 if "oom" in get_current_build_config("tir.op_debug_config"):
658 source = add_op_param_to_workspace(662 source = add_op_param_to_workspace(
@@ -619,7 +619,11 @@ def _gen_set_workspace_codes(
619 source += " GM_ADDR usrWorkspace = AscendC::GetUserWorkspace(workspace);\n"619 source += " GM_ADDR usrWorkspace = AscendC::GetUserWorkspace(workspace);\n"
620 else:620 else:
621 source += (621 source += (
622+ "#if ENABLE_CV_COMM_VIA_SSBUF != 0 && __MIX_CORE_AIC_RATION__ != 1\n"
623+ " GM_ADDR usrWorkspace = workspace;\n"
624+ "#else\n"
622 " GM_ADDR usrWorkspace = workspace + AscendC::RESERVED_WORKSPACE;\n"625 " GM_ADDR usrWorkspace = workspace + AscendC::RESERVED_WORKSPACE;\n"
626+ "#endif\n"
623 )627 )
624 if "oom" in get_current_build_config("tir.op_debug_config"):628 if "oom" in get_current_build_config("tir.op_debug_config"):
625 source = add_op_param_to_workspace(629 source = add_op_param_to_workspace(