From: Dongju Chae Date: Tue, 12 Oct 2021 06:50:12 +0000 (+0900) Subject: [FIX/DSPM] Use envionment variable to check dspm size X-Git-Tag: submit/tizen/20220103.094045~19 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7e8b56df15f5aa581e9d69db4937d7f43579bc3d;p=platform%2Fadaptation%2Fnpu%2Ftrix-engine.git [FIX/DSPM] Use envionment variable to check dspm size This patch uses envionment variable of libmrpsim to check the dspm size. Signed-off-by: Dongju Chae --- diff --git a/src/core/ne-handler.cc b/src/core/ne-handler.cc index 71bd999..aa1f7ba 100644 --- a/src/core/ne-handler.cc +++ b/src/core/ne-handler.cc @@ -894,8 +894,8 @@ TrinityVision2::checkDspmSize (const Model *model) { } if (npu_dspm_size < model_dspm_size) { - logerr (TAG, "The minimum DSPM size of model is %u KiB (NPU: %u KiB)\n", model_dspm_size / 1024, - npu_dspm_size / 1024); + logerr (TAG, "The minimum DSPM size is %u KiB (vs. DSPM size for vISA: %u KiB)\n", + model_dspm_size / 1024, npu_dspm_size / 1024); return -ENOMEM; } diff --git a/src/core/npu/NPUdrvAPI_emul.cc b/src/core/npu/NPUdrvAPI_emul.cc index 5681bb7..95c35de 100644 --- a/src/core/npu/NPUdrvAPI_emul.cc +++ b/src/core/npu/NPUdrvAPI_emul.cc @@ -26,6 +26,8 @@ #define TAG _N94 #define MAX_EMUL_DEVICES (3) +#define DEFAULT_DSPM_SIZE (128 * 1024) /* 128 KiB */ +#define RESERVED_DSPM_SIZE (64 * 1024) /* 64 KiB */ static uint64_t global_exec_seq = 0; @@ -229,8 +231,38 @@ TrinityEmulAPI::getDspmSize (uint32_t *dspm) const { return -EINVAL; } - /* unlimited size */ - *dspm = UINT32_MAX; + *dspm = DEFAULT_DSPM_SIZE; + + char *dspm_str = getenv ("MRPSIM_SPM_SIZE"); + if (dspm_str != NULL) { + unsigned long val; + char *unit = nullptr; + + errno = 0; + val = strtoul (dspm_str, &unit, 10); + if (errno == 0) { + if (unit) { + if (*unit == 'K' || *unit == 'k') { + val *= 1024; + } else if (*unit == 'M' || *unit == 'm') { + val *= 1024 * 1024; + } else if (*unit == 'G' || *unit == 'g') { + val *= 1024 * 1024 * 1024; + } + } + + /* unlimited size */ + if (val > UINT32_MAX) + val = UINT32_MAX; + + *dspm = static_cast (val); + } + } + + if (*dspm > RESERVED_DSPM_SIZE) + *dspm -= RESERVED_DSPM_SIZE; + else + *dspm = 0; return 0; }