Merged
Ascend 910B 芯片支持加载 cann-hcomm-compat.tar.gz #2889
pantongAdd on Jun 16
Ascend 910B 芯片支持加载 cann-hcomm-compat.tar.gz #2889
Merged
Merged frompan-tong/runtime_3519a2_pluginintocann/runtime9.1.0
Total: 3 files changed+37-12
| @@ -93,7 +93,7 @@ namespace tsd { | |||
| 93 | 93 | ||
| 94 | constexpr uint32_t TSD_SUPPORT_COMMON_SINK_PKG_CONFIG = 8U; | 94 | constexpr uint32_t TSD_SUPPORT_COMMON_SINK_PKG_CONFIG = 8U; |
| 95 | 95 | ||
| 96 | - constexpr uint32_t TSD_SUPPORT_CANN_TSCH_COMPAT = 9U; | 96 | + constexpr uint32_t TSD_SUPPORT_CANN_HCOMM_COMPAT_910B = 9U; |
| 97 | 97 | ||
| 98 | constexpr uint32_t MAX_DEVNUM_PER_OS = 64U; // 当前单OS上芯片最大数是64个 | 98 | constexpr uint32_t MAX_DEVNUM_PER_OS = 64U; // 当前单OS上芯片最大数是64个 |
| 99 | 99 | ||
| @@ -65,7 +65,7 @@ const std::map<std::string, std::vector<tsd::ChipType_t>> PKG_CHIP_SUPPORT_MAP = | |||
| 65 | {"aicpu_hccl.tar.gz", {tsd::CHIP_ASCEND_910B, tsd::CHIP_ASCEND_950, tsd::CHIP_CLOUD_V5, tsd::CHIP_ASCEND_350}}, | 65 | {"aicpu_hccl.tar.gz", {tsd::CHIP_ASCEND_910B, tsd::CHIP_ASCEND_950, tsd::CHIP_CLOUD_V5, tsd::CHIP_ASCEND_350}}, |
| 66 | {"mc2_server.tar.gz", {tsd::CHIP_ASCEND_950, tsd::CHIP_ASCEND_350}}, | 66 | {"mc2_server.tar.gz", {tsd::CHIP_ASCEND_950, tsd::CHIP_ASCEND_350}}, |
| 67 | {"aicpu_hcomm.tar.gz", {tsd::CHIP_DC, tsd::CHIP_ASCEND_910B, tsd::CHIP_ASCEND_950, tsd::CHIP_ASCEND_350, tsd::CHIP_CLOUD_V5}}, | 67 | {"aicpu_hcomm.tar.gz", {tsd::CHIP_DC, tsd::CHIP_ASCEND_910B, tsd::CHIP_ASCEND_950, tsd::CHIP_ASCEND_350, tsd::CHIP_CLOUD_V5}}, |
| 68 | - {"cann-hcomm-compat.tar.gz", {tsd::CHIP_ASCEND_950, tsd::CHIP_ASCEND_350, tsd::CHIP_CLOUD_V5}}, | 68 | + {"cann-hcomm-compat.tar.gz", {tsd::CHIP_ASCEND_910B, tsd::CHIP_ASCEND_950, tsd::CHIP_ASCEND_350, tsd::CHIP_CLOUD_V5}}, |
| 69 | {HCCD_PKG_NAME, {tsd::CHIP_ASCEND_910B}}, | 69 | {HCCD_PKG_NAME, {tsd::CHIP_ASCEND_910B}}, |
| 70 | {"cann-tsch-compat.tar.gz", {}}, | 70 | {"cann-tsch-compat.tar.gz", {}}, |
| 71 | {UDF_PKG_NAME, {tsd::CHIP_ASCEND_910B}}, | 71 | {UDF_PKG_NAME, {tsd::CHIP_ASCEND_910B}}, |
| @@ -2306,8 +2306,10 @@ TSD_StatusT ProcessModeManager::LoadSinglePackageToDevice(const std::string &pkg | |||
| 2306 | TSD_RUN_INFO("current package:%s does not need to load to device:%u", pkgPureName.c_str(), logicDeviceId_); | 2306 | TSD_RUN_INFO("current package:%s does not need to load to device:%u", pkgPureName.c_str(), logicDeviceId_); |
| 2307 | return TSD_OK; | 2307 | return TSD_OK; |
| 2308 | } | 2308 | } |
| 2309 | - if ((pkgPureName == "cann-tsch-compat.tar.gz") && (!IsSupportCommonInterface(TSD_SUPPORT_CANN_TSCH_COMPAT))) { | 2309 | + const uint32_t currentChipType = GetPlatInfoChipType(); |
| 2310 | - TSD_RUN_INFO("device does not support cann-tsch-compat package, skip load to device:%u", logicDeviceId_); | 2310 | + if ((pkgPureName == "cann-hcomm-compat.tar.gz") && (currentChipType == tsd::CHIP_ASCEND_910B) && |
| 2311 | + (!IsSupportCommonInterface(TSD_SUPPORT_CANN_HCOMM_COMPAT_910B))) { | ||
| 2312 | + TSD_RUN_INFO("device does not support cann-hcomm-compat package, skip load to device:%u", logicDeviceId_); | ||
| 2311 | return TSD_OK; | 2313 | return TSD_OK; |
| 2312 | } | 2314 | } |
| 2313 | if (pkgConInst->GetPkgHostAndDeviceDstPath(pkgPureName, orgFile, dstFile, procSign_.tgid) != TSD_OK) { | 2315 | if (pkgConInst->GetPkgHostAndDeviceDstPath(pkgPureName, orgFile, dstFile, procSign_.tgid) != TSD_OK) { |
| @@ -2876,38 +2876,61 @@ TEST_F(ProcessManagerTest, LoadPackageToDeviceByConfig_Success) | |||
| 2876 | EXPECT_EQ(processModeManager.LoadPackageToDeviceByConfig(), TSD_OK); | 2876 | EXPECT_EQ(processModeManager.LoadPackageToDeviceByConfig(), TSD_OK); |
| 2877 | } | 2877 | } |
| 2878 | 2878 | ||
| 2879 | -TEST_F(ProcessManagerTest, LoadSinglePackageToDevice_TschCompat_NotSupported_Skip) | 2879 | +TEST_F(ProcessManagerTest, LoadSinglePackageToDevice_HcommCompat_910B_NotSupported_Skip) |
| 2880 | { | 2880 | { |
| 2881 | + // 910B 芯片 + device 不支持 TSD_SUPPORT_CANN_HCOMM_COMPAT_910B 能力位时, | ||
| 2882 | + // cann-hcomm-compat.tar.gz 应被跳过加载,返回 TSD_OK,且不会进入下发流程。 | ||
| 2881 | ProcessModeManager processModeManager(deviceId, 0); | 2883 | ProcessModeManager processModeManager(deviceId, 0); |
| 2882 | PackConfDetail detail = {}; | 2884 | PackConfDetail detail = {}; |
| 2883 | detail.loadAsPerSocFlag = true; | 2885 | detail.loadAsPerSocFlag = true; |
| 2886 | + MOCKER_CPP(&ProcessModeManager::GetPlatInfoChipType) | ||
| 2887 | + .stubs().will(returnValue(static_cast<uint32_t>(tsd::CHIP_ASCEND_910B))); | ||
| 2884 | MOCKER_CPP(&ProcessModeManager::IsSupportCommonInterface).stubs().will(returnValue(false)); | 2888 | MOCKER_CPP(&ProcessModeManager::IsSupportCommonInterface).stubs().will(returnValue(false)); |
| 2885 | MOCKER_CPP(&PackageProcessConfig::GetPkgHostAndDeviceDstPath).stubs().will(returnValue(TSD_OK)); | 2889 | MOCKER_CPP(&PackageProcessConfig::GetPkgHostAndDeviceDstPath).stubs().will(returnValue(TSD_OK)); |
| 2886 | MOCKER_CPP(&ProcessModeManager::CompareAndSendCommonSinkPkg) | 2890 | MOCKER_CPP(&ProcessModeManager::CompareAndSendCommonSinkPkg) |
| 2887 | .expects(mockcpp::never()).will(returnValue(TSD_OK)); | 2891 | .expects(mockcpp::never()).will(returnValue(TSD_OK)); |
| 2888 | - EXPECT_EQ(processModeManager.LoadSinglePackageToDevice("cann-tsch-compat.tar.gz", detail, 0, ""), TSD_OK); | 2892 | + EXPECT_EQ(processModeManager.LoadSinglePackageToDevice("cann-hcomm-compat.tar.gz", detail, 0, ""), TSD_OK); |
| 2889 | } | 2893 | } |
| 2890 | 2894 | ||
| 2891 | -TEST_F(ProcessManagerTest, LoadSinglePackageToDevice_TschCompat_Supported_PassesGate) | 2895 | +TEST_F(ProcessManagerTest, LoadSinglePackageToDevice_HcommCompat_910B_Supported_PassesGate) |
| 2892 | { | 2896 | { |
| 2893 | - // 当 IsSupportCommonInterface 返回 true 时,不在 TSCH_COMPAT 门控处提前返回, | 2897 | + // 910B 芯片 + device 支持该能力位时,不在门控处提前返回,而是继续后续流程; |
| 2894 | - // 而是继续后续流程;此处用 GetPkgHostAndDeviceDstPath 返回错误来观测是否“穿过门控”。 | 2898 | + // 此处用 GetPkgHostAndDeviceDstPath 返回错误来观测是否“穿过门控”。 |
| 2895 | ProcessModeManager processModeManager(deviceId, 0); | 2899 | ProcessModeManager processModeManager(deviceId, 0); |
| 2896 | PackConfDetail detail = {}; | 2900 | PackConfDetail detail = {}; |
| 2897 | detail.loadAsPerSocFlag = true; | 2901 | detail.loadAsPerSocFlag = true; |
| 2902 | + MOCKER_CPP(&ProcessModeManager::GetPlatInfoChipType) | ||
| 2903 | + .stubs().will(returnValue(static_cast<uint32_t>(tsd::CHIP_ASCEND_910B))); | ||
| 2898 | MOCKER_CPP(&ProcessModeManager::IsSupportCommonInterface).stubs().will(returnValue(true)); | 2904 | MOCKER_CPP(&ProcessModeManager::IsSupportCommonInterface).stubs().will(returnValue(true)); |
| 2899 | MOCKER_CPP(&PackageProcessConfig::GetPkgHostAndDeviceDstPath) | 2905 | MOCKER_CPP(&PackageProcessConfig::GetPkgHostAndDeviceDstPath) |
| 2900 | .stubs().will(returnValue(static_cast<uint32_t>(TSD_INTERNAL_ERROR))); | 2906 | .stubs().will(returnValue(static_cast<uint32_t>(TSD_INTERNAL_ERROR))); |
| 2901 | - EXPECT_EQ(processModeManager.LoadSinglePackageToDevice("cann-tsch-compat.tar.gz", detail, 0, ""), | 2907 | + EXPECT_EQ(processModeManager.LoadSinglePackageToDevice("cann-hcomm-compat.tar.gz", detail, 0, ""), |
| 2902 | TSD_INTERNAL_ERROR); | 2908 | TSD_INTERNAL_ERROR); |
| 2903 | } | 2909 | } |
| 2904 | 2910 | ||
| 2905 | -TEST_F(ProcessManagerTest, LoadSinglePackageToDevice_OtherPkg_NotGatedByTschCompatBit) | 2911 | +TEST_F(ProcessManagerTest, LoadSinglePackageToDevice_HcommCompat_NonChip910B_NotGated) |
| 2906 | { | 2912 | { |
| 2907 | - // 即使 TSD_SUPPORT_CANN_TSCH_COMPAT 视为不支持,其他包也不应被该位拦截。 | 2913 | + // 非 910B 芯片时不受该能力位门控,即使 device 不支持也应穿过门控继续后续流程。 |
| 2908 | ProcessModeManager processModeManager(deviceId, 0); | 2914 | ProcessModeManager processModeManager(deviceId, 0); |
| 2909 | PackConfDetail detail = {}; | 2915 | PackConfDetail detail = {}; |
| 2910 | detail.loadAsPerSocFlag = true; | 2916 | detail.loadAsPerSocFlag = true; |
| 2917 | + MOCKER_CPP(&ProcessModeManager::GetPlatInfoChipType) | ||
| 2918 | + .stubs().will(returnValue(static_cast<uint32_t>(tsd::CHIP_ASCEND_950))); | ||
| 2919 | + MOCKER_CPP(&ProcessModeManager::IsSupportCommonInterface).stubs().will(returnValue(false)); | ||
| 2920 | + MOCKER_CPP(&PackageProcessConfig::GetPkgHostAndDeviceDstPath) | ||
| 2921 | + .stubs().will(returnValue(static_cast<uint32_t>(TSD_INTERNAL_ERROR))); | ||
| 2922 | + EXPECT_EQ(processModeManager.LoadSinglePackageToDevice("cann-hcomm-compat.tar.gz", detail, 0, ""), | ||
| 2923 | + TSD_INTERNAL_ERROR); | ||
| 2924 | +} | ||
| 2925 | + | ||
| 2926 | +TEST_F(ProcessManagerTest, LoadSinglePackageToDevice_OtherPkg_NotGatedByHcommCompatBit) | ||
| 2927 | +{ | ||
| 2928 | + // 非 cann-hcomm-compat.tar.gz 的包不受该能力位门控,即使在 910B 且 device 不支持也应穿过门控。 | ||
| 2929 | + ProcessModeManager processModeManager(deviceId, 0); | ||
| 2930 | + PackConfDetail detail = {}; | ||
| 2931 | + detail.loadAsPerSocFlag = true; | ||
| 2932 | + MOCKER_CPP(&ProcessModeManager::GetPlatInfoChipType) | ||
| 2933 | + .stubs().will(returnValue(static_cast<uint32_t>(tsd::CHIP_ASCEND_910B))); | ||
| 2911 | MOCKER_CPP(&ProcessModeManager::IsSupportCommonInterface).stubs().will(returnValue(false)); | 2934 | MOCKER_CPP(&ProcessModeManager::IsSupportCommonInterface).stubs().will(returnValue(false)); |
| 2912 | MOCKER_CPP(&PackageProcessConfig::GetPkgHostAndDeviceDstPath) | 2935 | MOCKER_CPP(&PackageProcessConfig::GetPkgHostAndDeviceDstPath) |
| 2913 | .stubs().will(returnValue(static_cast<uint32_t>(TSD_INTERNAL_ERROR))); | 2936 | .stubs().will(returnValue(static_cast<uint32_t>(TSD_INTERNAL_ERROR))); |