diff --git a/msmonitor/docs/nputrace.md b/msmonitor/docs/nputrace.md index 5e5e52737c49d4f2e1b79033d5dd4aa3b1a3b052..bde975fd7e12e7e931bc7a8c433ae18dbb40d881 100644 --- a/msmonitor/docs/nputrace.md +++ b/msmonitor/docs/nputrace.md @@ -24,9 +24,9 @@ nputrace的SUBCOMMANDS(子命令)选项如下: | --process-limit | u64 | 最大采集进程的数量,默认值3,dynolog原生参数 | N | N | N | | --profile-start-time | u64 | 用于同步采集的Unix时间戳,单位毫秒,默认值0,dynolog原生参数 | N | N | N | | --duration-ms | u64 | 采集的周期,单位毫秒,默认值500,dynolog原生参数 | N | N | N | -| --iterations | i64 | 采集总迭代数,默认值-1,dynolog原生参数,需与start-step参数同时指定 | Y | Y | Y | +| --iterations | i64 | 采集总迭代数,dynolog原生参数,需与start-step参数同时指定 | Y | Y | Y | | --log-file | String | 采集落盘的路径 | Y | Y | Y | -| --start-step | i64 | 开始采集的迭代数,默认值0,设置为-1时表示从下一个step开始采集 | Y | Y | Y | +| --start-step | i64 | 开始采集的迭代数,设置为-1时表示从下一个step开始采集 | Y | Y | Y | | --record-shapes | action | 是否采集算子的InputShapes和InputTypes,设置参数采集,默认不采集 | Y | Y | N | | --profile-memory | action | 是否采集算子内存信息,设置参数采集,默认不采集 | Y | Y | N | | --with-stack | action | 是否采集Python调用栈,设置参数采集,默认不采集 | Y | Y | N | diff --git a/msmonitor/dynolog_npu/cli/src/main.rs b/msmonitor/dynolog_npu/cli/src/main.rs index a04594c24bf83d1a4118a7676f244154acd3ed81..0c597ce046a0ff9d54c1ec299a2ad39b3876189f 100644 --- a/msmonitor/dynolog_npu/cli/src/main.rs +++ b/msmonitor/dynolog_npu/cli/src/main.rs @@ -113,6 +113,14 @@ fn parse_start_step(src: &str) -> Result { Ok(start_step) } +fn parse_iterations(src: &str) -> Result { + let iterations = src.trim().parse::().map_err(|e| format!("{}", e))?; + if iterations < 0 { + return Err(format!("Must be non-negative integer or {}", 0)); + } + Ok(iterations) +} + #[derive(Debug, Parser)] enum Command { /// Check the status of a dynolog process @@ -174,7 +182,7 @@ enum Command { #[clap(long, default_value_t = 500)] duration_ms: u64, /// Training iterations to collect, this takes precedence over duration. - #[clap(long, default_value_t = -1, allow_negative_numbers = true)] + #[clap(long, value_parser = parse_iterations, allow_negative_numbers = true)] iterations: i64, /// Log file for trace. #[clap(long)] @@ -183,7 +191,7 @@ enum Command { #[clap(long, default_value_t = 0)] profile_start_time: u64, /// Number of steps to start profile, -1 means start from next step. - #[clap(long, default_value_t = 0, value_parser = parse_start_step, allow_negative_numbers = true)] + #[clap(long, value_parser = parse_start_step, allow_negative_numbers = true)] start_step: i64, /// Max number of processes to profile. #[clap(long, default_value_t = 3)]