From f735295cff63cd5b6fdd3546420e87202782b358 Mon Sep 17 00:00:00 2001 From: lambda7xx Date: Wed, 23 Aug 2023 09:47:54 +0000 Subject: [PATCH 1/6] update the parse_args in examples/cpp/candle_uno/candle_uno.cc --- examples/cpp/AlexNet/alexnet.cc | 24 ++++++++----- examples/cpp/AlexNet/alexnet.h | 1 + examples/cpp/candle_uno/candle_uno.cc | 49 +++++++++++---------------- 3 files changed, 36 insertions(+), 38 deletions(-) diff --git a/examples/cpp/AlexNet/alexnet.cc b/examples/cpp/AlexNet/alexnet.cc index d2e4a669c9..06df12f370 100644 --- a/examples/cpp/AlexNet/alexnet.cc +++ b/examples/cpp/AlexNet/alexnet.cc @@ -14,6 +14,7 @@ */ #include "alexnet.h" + #include #include #include @@ -28,14 +29,14 @@ using FlexFlow::Tensor; LegionRuntime::Logger::Category log_app("AlexNet"); -void parse_input_args(char **argv, int argc, AlexNetConfig &config) { - for (int i = 1; i < argc; i++) { - if (!strcmp(argv[i], "--dataset")) { - std::strcpy(config.dataset_path, argv[++i]); - continue; - } - } -} +// void parse_input_args(char **argv, int argc, AlexNetConfig &config) { +// for (int i = 1; i < argc; i++) { +// if (!strcmp(argv[i], "--dataset")) { +// std::strcpy(config.dataset_path, argv[++i]); +// continue; +// } +// } +// } void FlexFlow::top_level_task(Task const *task, std::vector const ®ions, @@ -47,6 +48,13 @@ void FlexFlow::top_level_task(Task const *task, InputArgs const &command_args = HighLevelRuntime::get_input_args(); char **argv = command_args.argv; int argc = command_args.argc; + ArgsParser args; + args.add_argument("--dataset", + std::string(""), + "Path to the dataset file"); + args.parse_args(argc, argv); + std::strcpy(alexnetConfig.dataset_path, + args.get("--dataset").data()); parse_input_args(argv, argc, alexnetConfig); log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ffConfig.batchSize, diff --git a/examples/cpp/AlexNet/alexnet.h b/examples/cpp/AlexNet/alexnet.h index b41726afd8..ae4ee16c99 100644 --- a/examples/cpp/AlexNet/alexnet.h +++ b/examples/cpp/AlexNet/alexnet.h @@ -14,6 +14,7 @@ */ #include "flexflow/model.h" +#include "utils/parse.h" // Note(lambda):this may have problems #define MAX_NUM_SAMPLES 4196 using namespace Legion; diff --git a/examples/cpp/candle_uno/candle_uno.cc b/examples/cpp/candle_uno/candle_uno.cc index efd6ed6949..1220d6be3b 100644 --- a/examples/cpp/candle_uno/candle_uno.cc +++ b/examples/cpp/candle_uno/candle_uno.cc @@ -14,6 +14,7 @@ */ #include "candle_uno.h" +#include "utils/parser.h" //Note(lambda): this headfile may be false, #include #include #include @@ -23,8 +24,6 @@ using namespace std; LegionRuntime::Logger::Category log_app("Candle_Uno"); -void parse_input_args(char **argv, int argc, CandleConfig &apConfig); - CandleConfig::CandleConfig(void) { // Set default configurations here for (int i = 0; i < 4; i++) { @@ -56,6 +55,16 @@ Tensor build_feature_model(FFModel *model, return t; } +std::vector parse_string(std::string & inputs) { + std::vector result; + std::stringstream ss(inputs); + std::string word; + while (std::getline(ss, word, '-')) { + result.push_back(std::stoi(word)); + } + return result; +} + void print_vector(std::string const &name, std::vector const &vector) { std::ostringstream out; for (size_t i = 0; i < vector.size() - 1; i++) { @@ -77,7 +86,14 @@ void FlexFlow::top_level_task(Task const *task, InputArgs const &command_args = HighLevelRuntime::get_input_args(); char **argv = command_args.argv; int argc = command_args.argc; - parse_input_args(argv, argc, candle_config); + ArgsParser args; + args.add_argument("--dense-layers", "64-32-16","Dense layers"); + args.add_argument("--dense-feature-layers", "64-32-16","Dense feature layers"); + args.add_argument("--dataset", "", "Dataset path"); + args.parse_args(argc, argv); + candle_config.dense_layers = parse_string(args.get("dense-layers")); + candle_config.dense_feature_layers = parse_string(args.get("dense-feature-layers")); + candle_config.dataset_path = args.get("dataset"); log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ff_config.batchSize, ff_config.workersPerNode, @@ -181,33 +197,6 @@ void FlexFlow::top_level_task(Task const *task, data_loader.num_samples * ff_config.epochs / run_time); } -void parse_input_args(char **argv, int argc, CandleConfig &config) { - for (int i = 1; i < argc; i++) { - if (!strcmp(argv[i], "--dense-layers")) { - std::stringstream ss(std::string(argv[++i])); - std::string word; - config.dense_layers.clear(); - while (std::getline(ss, word, '-')) { - config.dense_layers.push_back(std::stoi(word)); - } - continue; - } - if (!strcmp(argv[i], "--dense-feature-layers")) { - std::stringstream ss(std::string(argv[++i])); - std::string word; - config.dense_feature_layers.clear(); - while (std::getline(ss, word, '-')) { - config.dense_feature_layers.push_back(std::stoi(word)); - } - continue; - } - if (!strcmp(argv[i], "--dataset")) { - config.dataset_path = std::string(argv[++i]); - continue; - } - } -} - size_t get_file_size(std::string const &filename) { streampos begin, end; ifstream file(filename.c_str(), ios::binary); From 0de71cf759b811ebdb3a7ad2e26d590a6ae4b53d Mon Sep 17 00:00:00 2001 From: lambda7xx Date: Wed, 23 Aug 2023 09:57:06 +0000 Subject: [PATCH 2/6] update the parse_args in examples/cpp/DLRM/dlrm.cc --- examples/cpp/AlexNet/alexnet.cc | 9 --- examples/cpp/DLRM/dlrm.cc | 103 +++++++++++--------------------- 2 files changed, 36 insertions(+), 76 deletions(-) diff --git a/examples/cpp/AlexNet/alexnet.cc b/examples/cpp/AlexNet/alexnet.cc index 06df12f370..f39870d5fe 100644 --- a/examples/cpp/AlexNet/alexnet.cc +++ b/examples/cpp/AlexNet/alexnet.cc @@ -29,15 +29,6 @@ using FlexFlow::Tensor; LegionRuntime::Logger::Category log_app("AlexNet"); -// void parse_input_args(char **argv, int argc, AlexNetConfig &config) { -// for (int i = 1; i < argc; i++) { -// if (!strcmp(argv[i], "--dataset")) { -// std::strcpy(config.dataset_path, argv[++i]); -// continue; -// } -// } -// } - void FlexFlow::top_level_task(Task const *task, std::vector const ®ions, Context ctx, diff --git a/examples/cpp/DLRM/dlrm.cc b/examples/cpp/DLRM/dlrm.cc index 41bcd79093..02e46ce329 100644 --- a/examples/cpp/DLRM/dlrm.cc +++ b/examples/cpp/DLRM/dlrm.cc @@ -15,14 +15,13 @@ #include "dlrm.h" #include "hdf5.h" +#include "utils/parser.h" //Note(lambda): this headfile may be false, #include using namespace Legion; LegionRuntime::Logger::Category log_app("DLRM"); -void parse_input_args(char **argv, int argc, DLRMConfig &apConfig); - DLRMConfig::DLRMConfig(void) : sparse_feature_size(64), sigmoid_bot(-1), sigmoid_top(-1), embedding_bag_size(1), loss_threshold(0.0f), arch_interaction_op("cat"), @@ -41,6 +40,16 @@ DLRMConfig::DLRMConfig(void) mlp_top.push_back(2); } +std::vector parse_string(std::string & inputs) { + std::vector result; + std::stringstream ss(inputs); + std::string word; + while (std::getline(ss, word, '-')) { + result.push_back(std::stoi(word)); + } + return result; +} + Tensor create_mlp(FFModel *model, Tensor const &input, std::vector ln, @@ -122,7 +131,31 @@ void FlexFlow::top_level_task(Task const *task, InputArgs const &command_args = HighLevelRuntime::get_input_args(); char **argv = command_args.argv; int argc = command_args.argc; - parse_input_args(argv, argc, dlrmConfig); + ArgsParser args; //Note(lambda): this is a class in utils/parser.h + args.add_argument("--arch-sparse-feature-size", 0," sparse feature size"); + args.add_argument("--arch-embedding-size", "32-64-96-128", "embedding size"); + args.add_argument("--embedding-bag-size", 1, "embedding bag size"); + args.add_argument("--arch-mlp-bot", "13-512-256-64-16", "mlp bot"); + args.add_argument("--arch-mlp-top", "512-256-1", "mlp top"); + args.add_argument("--loss-threshold", 0.0f, "loss threshold"); + args.add_argument("--sigmoid-top", -1, "sigmoid top"); + args.add_argument("--sigmoid-bot", -1, "sigmoid bot"); + args.add_argument("--arch-interaction-op", "cat", "interaction op"); + args.add_argument("--dataset", "", "dataset path"); + args.add_argument("--data-size", -1, "data size"); + args.parse_args(argc, argv); + dlrmConfig.sparse_feature_size = + args.get("--arch-sparse-feature-size"); + dlrmConfig.embedding_size = parse_string(args.get("--arch-embedding-size")); + dlrmConfig.embedding_bag_size = args.get("--embedding-bag-size"); + dlrmConfig.mlp_bot = parse_string(args.get("--arch-mlp-bot")); + dlrmConfig.mlp_top = parse_string(args.get("--arch-mlp-top")); + dlrmConfig.loss_threshold = args.get("--loss-threshold"); + dlrmConfig.sigmoid_top = args.get("--sigmoid-top"); + dlrmConfig.sigmoid_bot = args.get("--sigmoid-bot"); + dlrmConfig.arch_interaction_op = args.get("--arch-interaction-op"); + dlrmConfig.dataset_path = args.get("--dataset"); + dlrmConfig.data_size = args.get("--data-size"); log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ffConfig.batchSize, ffConfig.workersPerNode, @@ -240,70 +273,6 @@ void FlexFlow::top_level_task(Task const *task, data_loader.num_samples * ffConfig.epochs / run_time); } -void parse_input_args(char **argv, int argc, DLRMConfig &config) { - for (int i = 1; i < argc; i++) { - if (!strcmp(argv[i], "--arch-sparse-feature-size")) { - config.sparse_feature_size = atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--arch-embedding-size")) { - std::stringstream ss(std::string(argv[++i])); - std::string word; - config.embedding_size.clear(); - while (std::getline(ss, word, '-')) { - config.embedding_size.push_back(std::stoi(word)); - } - continue; - } - if (!strcmp(argv[i], "--embedding-bag-size")) { - config.embedding_bag_size = atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--arch-mlp-bot")) { - std::stringstream ss(std::string(argv[++i])); - std::string word; - config.mlp_bot.clear(); - while (std::getline(ss, word, '-')) { - config.mlp_bot.push_back(std::stoi(word)); - } - continue; - } - if (!strcmp(argv[i], "--arch-mlp-top")) { - std::stringstream ss(std::string(argv[++i])); - std::string word; - config.mlp_top.clear(); - while (std::getline(ss, word, '-')) { - config.mlp_top.push_back(std::stoi(word)); - } - continue; - } - if (!strcmp(argv[i], "--loss-threshold")) { - config.loss_threshold = atof(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--sigmoid-top")) { - config.sigmoid_top = atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--sigmoid-bot")) { - config.sigmoid_bot = atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--arch-interaction-op")) { - config.arch_interaction_op = std::string(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--dataset")) { - config.dataset_path = std::string(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--data-size")) { - config.data_size = atoi(argv[++i]); - continue; - } - } -} - DataLoader::DataLoader(FFModel &ff, DLRMConfig const &dlrm, std::vector const &_sparse_inputs, From b7ee420bab9088c302e690ea44e11825ee7a91b8 Mon Sep 17 00:00:00 2001 From: lambda7xx Date: Wed, 23 Aug 2023 10:02:43 +0000 Subject: [PATCH 3/6] update the parse_args in examples/cpp/mixture_of_experts/moe.cc --- examples/cpp/mixture_of_experts/moe.cc | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/examples/cpp/mixture_of_experts/moe.cc b/examples/cpp/mixture_of_experts/moe.cc index 32b18e0987..4ead2eda5d 100644 --- a/examples/cpp/mixture_of_experts/moe.cc +++ b/examples/cpp/mixture_of_experts/moe.cc @@ -14,6 +14,7 @@ */ #include "moe.h" +#include "utils/parse.h" #include #include #include @@ -22,15 +23,6 @@ using namespace Legion; LegionRuntime::Logger::Category log_app("MoE"); -void parse_input_args(char **argv, int argc, MoeConfig &config) { - for (int i = 1; i < argc; i++) { - if (!strcmp(argv[i], "--dataset")) { - config.dataset_path = std::string(argv[++i]); - continue; - } - } -} - #ifdef DEADCODE // ============================================================================= // User-defined functions on using cached expert assignments @@ -139,7 +131,12 @@ void FlexFlow::top_level_task(Task const *task, InputArgs const &command_args = HighLevelRuntime::get_input_args(); char **argv = command_args.argv; int argc = command_args.argc; - parse_input_args(argv, argc, moeConfig); + ArgsParser args; + args.add_argument("--dataset", + std::string(""), + "Path to the dataset file"); + args.parse_args(argc, argv); + moeConfig.dataset_path = args.get("--dataset"); log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ffConfig.batchSize, ffConfig.workersPerNode, From dfa5c4af8c683961f9311cb79820874ef8855c3f Mon Sep 17 00:00:00 2001 From: lambda7xx Date: Wed, 23 Aug 2023 10:17:27 +0000 Subject: [PATCH 4/6] update the parse_args in examples/cpp --- examples/cpp/AlexNet/alexnet.cc | 1 - examples/cpp/DLRM/dlrm.cc | 2 +- examples/cpp/DLRM/strategies/dlrm_strategy.cc | 32 +++------ examples/cpp/ResNet/resnet.cc | 18 +++-- examples/cpp/Transformer/transformer.cc | 41 ++++------- examples/cpp/XDL/xdl.cc | 72 +++++++------------ examples/cpp/candle_uno/candle_uno.cc | 2 +- 7 files changed, 61 insertions(+), 107 deletions(-) diff --git a/examples/cpp/AlexNet/alexnet.cc b/examples/cpp/AlexNet/alexnet.cc index f39870d5fe..1fbc9cacae 100644 --- a/examples/cpp/AlexNet/alexnet.cc +++ b/examples/cpp/AlexNet/alexnet.cc @@ -46,7 +46,6 @@ void FlexFlow::top_level_task(Task const *task, args.parse_args(argc, argv); std::strcpy(alexnetConfig.dataset_path, args.get("--dataset").data()); - parse_input_args(argv, argc, alexnetConfig); log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ffConfig.batchSize, ffConfig.workersPerNode, diff --git a/examples/cpp/DLRM/dlrm.cc b/examples/cpp/DLRM/dlrm.cc index 02e46ce329..aef2ec6b43 100644 --- a/examples/cpp/DLRM/dlrm.cc +++ b/examples/cpp/DLRM/dlrm.cc @@ -15,7 +15,7 @@ #include "dlrm.h" #include "hdf5.h" -#include "utils/parser.h" //Note(lambda): this headfile may be false, +#include "utils/parse.h" //Note(lambda): this headfile may be false, #include using namespace Legion; diff --git a/examples/cpp/DLRM/strategies/dlrm_strategy.cc b/examples/cpp/DLRM/strategies/dlrm_strategy.cc index a7fab8c3a8..3a1796c063 100644 --- a/examples/cpp/DLRM/strategies/dlrm_strategy.cc +++ b/examples/cpp/DLRM/strategies/dlrm_strategy.cc @@ -5,6 +5,7 @@ --------------------------*/ #include "strategy.pb.h" +#include "utils/parse.h" #include #include @@ -218,31 +219,18 @@ void FFStrategy::export_file(std::string const &output) { strategy.SerializeToOstream(&outputFile); } -void parse_input_args(char **argv, - int argc, - int &gpus_per_node, - int &embs_per_node, - int &num_nodes) { - for (int i = 1; i < argc; i++) { - if (!strcmp(argv[i], "--gpu")) { - gpus_per_node = std::atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--node")) { - num_nodes = std::atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--emb")) { - embs_per_node = std::atoi(argv[++i]); - continue; - } - } -} - int main(int argc, char **argv) { GOOGLE_PROTOBUF_VERIFY_VERSION; int gpus_per_node = 0, embs_per_node = 0, num_nodes = 0; - parse_input_args(argv, argc, gpus_per_node, embs_per_node, num_nodes); + ArgParser args; + args.add_argument("--gpu", 4, "Number of GPUs Per Node"); + args.add_argument("--node", 1, "Number of Nodes"); + args.add_argument("--emb", 4, "Number of Embeddings Per Node"); + args.parse_args(argc, argv); + gpus_per_node = args.get("--gpu"); + embs_per_node = args.get("--emb"); + num_nodes = args.get("--node"); + printf("Number of GPUs Per Node = %d\n", gpus_per_node); printf("Number of Nodes = %d\n", num_nodes); printf("Number of Embeddings Per Node = %d\n", embs_per_node); diff --git a/examples/cpp/ResNet/resnet.cc b/examples/cpp/ResNet/resnet.cc index 19bef3bf97..51932beafd 100644 --- a/examples/cpp/ResNet/resnet.cc +++ b/examples/cpp/ResNet/resnet.cc @@ -14,6 +14,7 @@ */ #include "resnet.h" +#include "utils/parse.h" #include #include #include @@ -26,15 +27,6 @@ using FlexFlow::Tensor; LegionRuntime::Logger::Category log_app("ResNet"); -void parse_input_args(char **argv, int argc, ResNetConfig &config) { - for (int i = 1; i < argc; i++) { - if (!strcmp(argv[i], "--dataset")) { - config.dataset_path = std::string(argv[++i]); - continue; - } - } -} - Tensor BottleneckBlock(FFModel &ff, Tensor input, int out_channels, int stride) { Tensor t = ff.conv2d(input, out_channels, 1, 1, 1, 1, 0, 0, AC_MODE_NONE); @@ -68,7 +60,13 @@ void FlexFlow::top_level_task(Task const *task, InputArgs const &command_args = HighLevelRuntime::get_input_args(); char **argv = command_args.argv; int argc = command_args.argc; - parse_input_args(argv, argc, resnetConfig); + ArgsParser args; + args.add_argument("--dataset", + std::string(""), + "Path to the dataset file"); + args.parse_args(argc, argv); + resetConfig.dataset_path = args.get("--dataset"); + log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ffConfig.batchSize, ffConfig.workersPerNode, diff --git a/examples/cpp/Transformer/transformer.cc b/examples/cpp/Transformer/transformer.cc index 66cf9cc55f..f93c06aeff 100644 --- a/examples/cpp/Transformer/transformer.cc +++ b/examples/cpp/Transformer/transformer.cc @@ -16,8 +16,8 @@ #include "transformer.h" using namespace Legion; - LegionRuntime::Logger::Category log_app("Transformer"); +using namespace FlexFlow::ArgsParser; Tensor create_emb(FFModel *model, Tensor const &input, @@ -84,31 +84,6 @@ TransformerConfig::TransformerConfig(void) { sequence_length = 512; } -void parse_input_args(char **argv, int argc, TransformerConfig &config) { - for (int i = 1; i < argc; i++) { - if (!strcmp(argv[i], "--num-layers")) { - config.num_layers = atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--embedding-size")) { - config.embedding_size = atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--hidden-size")) { - config.hidden_size = atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--num-heads")) { - config.num_heads = atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--sequence-length")) { - config.sequence_length = atoi(argv[++i]); - continue; - } - } -} - void FlexFlow::top_level_task(Task const *task, std::vector const ®ions, Context ctx, @@ -119,7 +94,19 @@ void FlexFlow::top_level_task(Task const *task, InputArgs const &command_args = HighLevelRuntime::get_input_args(); char **argv = command_args.argv; int argc = command_args.argc; - parse_input_args(argv, argc, tfConfig); + ArgParser args; + args.add_argument("--num-layers",4, "number of layers"); + args.add_argument("--embedding-size", 4, "embedding size"); + args.add_argument("--hidden-size", 4, "hidden size"); + args.add_argument("--num-heads", 4, "number of heads"); + args.add_argument("--sequence-length", 4, "sequence length"); + args.parse_args(argc, argv) + tfConfig.num_layers = args.get("--num-layers"); + tfConfig.embedding_size = args.get("--embedding-size"); + tfConfig.hidden_size = args.get("--hidden-size"); + tfConfig.num_heads = args.get("--num-heads"); + tfConfig.sequence_length = args.get("--sequence-length"); + log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ffConfig.batchSize, ffConfig.workersPerNode, diff --git a/examples/cpp/XDL/xdl.cc b/examples/cpp/XDL/xdl.cc index de15870ab6..8ebb74e40b 100644 --- a/examples/cpp/XDL/xdl.cc +++ b/examples/cpp/XDL/xdl.cc @@ -20,7 +20,15 @@ using namespace Legion; LegionRuntime::Logger::Category log_app("XDL"); -void parse_input_args(char **argv, int argc, XDLConfig &apConfig); +std::vector parse_string(std::string & inputs) { + std::vector result; + std::stringstream ss(inputs); + std::string word; + while (std::getline(ss, word, '-')) { + result.push_back(std::stoi(word)); + } + return result; +} XDLConfig::XDLConfig(void) : sparse_feature_size(64), embedding_bag_size(1), dataset_path(""), @@ -105,7 +113,24 @@ void FlexFlow::top_level_task(Task const *task, InputArgs const &command_args = HighLevelRuntime::get_input_args(); char **argv = command_args.argv; int argc = command_args.argc; - parse_input_args(argv, argc, xdlConfig); + ArgParser args; + args.add_argument("--arch-sparse-feature-size", 0," sparse feature size"); + args.add_argument("--arch-embedding-size", "32-64-96-128", "embedding size"); + args.add_argument("--embedding-bag-size", 1, "embedding bag size"); + args.add_argument("--arch-mlp", "13-512-256-64-16", "mlp layer"); + args.add_argument("--loss-threshold", 0.0f, "loss threshold"); + args.add_argument("--dataset", "", "dataset path"); + args.add_argument("--data-size", -1, "data size"); + args.parse_args(argc, argv); + + xdlConfig.sparse_feature_size = args.get("--arch-sparse-feature-size"); + xdlConfig.embedding_size = parse_string(args.get("--arch-embedding-size")); + xdlConfig.embedding_bag_size = args.get("--embedding-bag-size"); + xdlConfig.mlp_top = parse_string(args.get("--arch-mlp")); + xdlConfig.loss_threshold = args.get("--loss-threshold"); + xdlConfig.dataset_path = args.get("--dataset"); + xdlConfig.data_size = args.get("--data-size"); + log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ffConfig.batchSize, ffConfig.workersPerNode, @@ -205,49 +230,6 @@ void FlexFlow::top_level_task(Task const *task, data_loader.num_samples * ffConfig.epochs / run_time); } -void parse_input_args(char **argv, int argc, XDLConfig &config) { - for (int i = 1; i < argc; i++) { - if (!strcmp(argv[i], "--arch-sparse-feature-size")) { - config.sparse_feature_size = atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--arch-embedding-size")) { - std::stringstream ss(std::string(argv[++i])); - std::string word; - config.embedding_size.clear(); - while (std::getline(ss, word, '-')) { - config.embedding_size.push_back(std::stoi(word)); - } - continue; - } - if (!strcmp(argv[i], "--embedding-bag-size")) { - config.embedding_bag_size = atoi(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--arch-mlp")) { - std::stringstream ss(std::string(argv[++i])); - std::string word; - config.mlp_top.clear(); - while (std::getline(ss, word, '-')) { - config.mlp_top.push_back(std::stoi(word)); - } - continue; - } - if (!strcmp(argv[i], "--loss-threshold")) { - config.loss_threshold = atof(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--dataset")) { - config.dataset_path = std::string(argv[++i]); - continue; - } - if (!strcmp(argv[i], "--data-size")) { - config.data_size = atoi(argv[++i]); - continue; - } - } -} - DataLoader::DataLoader(FFModel &ff, XDLConfig const &xdl, std::vector const &_sparse_inputs, diff --git a/examples/cpp/candle_uno/candle_uno.cc b/examples/cpp/candle_uno/candle_uno.cc index 1220d6be3b..5b0d59d026 100644 --- a/examples/cpp/candle_uno/candle_uno.cc +++ b/examples/cpp/candle_uno/candle_uno.cc @@ -14,7 +14,7 @@ */ #include "candle_uno.h" -#include "utils/parser.h" //Note(lambda): this headfile may be false, +#include "utils/parse.h" //Note(lambda): this headfile may be false, #include #include #include From 7bb14c916d4bf3203ce93b1755d95977089870d1 Mon Sep 17 00:00:00 2001 From: lambda7xx Date: Wed, 23 Aug 2023 10:17:55 +0000 Subject: [PATCH 5/6] update the parse_args in examples/cpp --- examples/cpp/AlexNet/alexnet.cc | 4 +--- examples/cpp/DLRM/dlrm.cc | 17 ++++++++++------- examples/cpp/DLRM/strategies/dlrm_strategy.cc | 2 +- examples/cpp/ResNet/resnet.cc | 6 ++---- examples/cpp/Transformer/transformer.cc | 8 ++++---- examples/cpp/XDL/xdl.cc | 10 ++++++---- examples/cpp/candle_uno/candle_uno.cc | 15 +++++++++------ examples/cpp/mixture_of_experts/moe.cc | 4 +--- 8 files changed, 34 insertions(+), 32 deletions(-) diff --git a/examples/cpp/AlexNet/alexnet.cc b/examples/cpp/AlexNet/alexnet.cc index 1fbc9cacae..d2fab594cc 100644 --- a/examples/cpp/AlexNet/alexnet.cc +++ b/examples/cpp/AlexNet/alexnet.cc @@ -40,9 +40,7 @@ void FlexFlow::top_level_task(Task const *task, char **argv = command_args.argv; int argc = command_args.argc; ArgsParser args; - args.add_argument("--dataset", - std::string(""), - "Path to the dataset file"); + args.add_argument("--dataset", std::string(""), "Path to the dataset file"); args.parse_args(argc, argv); std::strcpy(alexnetConfig.dataset_path, args.get("--dataset").data()); diff --git a/examples/cpp/DLRM/dlrm.cc b/examples/cpp/DLRM/dlrm.cc index aef2ec6b43..9b49a0e719 100644 --- a/examples/cpp/DLRM/dlrm.cc +++ b/examples/cpp/DLRM/dlrm.cc @@ -15,7 +15,7 @@ #include "dlrm.h" #include "hdf5.h" -#include "utils/parse.h" //Note(lambda): this headfile may be false, +#include "utils/parse.h" //Note(lambda): this headfile may be false, #include using namespace Legion; @@ -40,7 +40,7 @@ DLRMConfig::DLRMConfig(void) mlp_top.push_back(2); } -std::vector parse_string(std::string & inputs) { +std::vector parse_string(std::string &inputs) { std::vector result; std::stringstream ss(inputs); std::string word; @@ -131,9 +131,10 @@ void FlexFlow::top_level_task(Task const *task, InputArgs const &command_args = HighLevelRuntime::get_input_args(); char **argv = command_args.argv; int argc = command_args.argc; - ArgsParser args; //Note(lambda): this is a class in utils/parser.h - args.add_argument("--arch-sparse-feature-size", 0," sparse feature size"); - args.add_argument("--arch-embedding-size", "32-64-96-128", "embedding size"); + ArgsParser args; // Note(lambda): this is a class in utils/parser.h + args.add_argument("--arch-sparse-feature-size", 0, " sparse feature size"); + args.add_argument( + "--arch-embedding-size", "32-64-96-128", "embedding size"); args.add_argument("--embedding-bag-size", 1, "embedding bag size"); args.add_argument("--arch-mlp-bot", "13-512-256-64-16", "mlp bot"); args.add_argument("--arch-mlp-top", "512-256-1", "mlp top"); @@ -146,14 +147,16 @@ void FlexFlow::top_level_task(Task const *task, args.parse_args(argc, argv); dlrmConfig.sparse_feature_size = args.get("--arch-sparse-feature-size"); - dlrmConfig.embedding_size = parse_string(args.get("--arch-embedding-size")); + dlrmConfig.embedding_size = + parse_string(args.get("--arch-embedding-size")); dlrmConfig.embedding_bag_size = args.get("--embedding-bag-size"); dlrmConfig.mlp_bot = parse_string(args.get("--arch-mlp-bot")); dlrmConfig.mlp_top = parse_string(args.get("--arch-mlp-top")); dlrmConfig.loss_threshold = args.get("--loss-threshold"); dlrmConfig.sigmoid_top = args.get("--sigmoid-top"); dlrmConfig.sigmoid_bot = args.get("--sigmoid-bot"); - dlrmConfig.arch_interaction_op = args.get("--arch-interaction-op"); + dlrmConfig.arch_interaction_op = + args.get("--arch-interaction-op"); dlrmConfig.dataset_path = args.get("--dataset"); dlrmConfig.data_size = args.get("--data-size"); log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", diff --git a/examples/cpp/DLRM/strategies/dlrm_strategy.cc b/examples/cpp/DLRM/strategies/dlrm_strategy.cc index 3a1796c063..e7f0112fa7 100644 --- a/examples/cpp/DLRM/strategies/dlrm_strategy.cc +++ b/examples/cpp/DLRM/strategies/dlrm_strategy.cc @@ -230,7 +230,7 @@ int main(int argc, char **argv) { gpus_per_node = args.get("--gpu"); embs_per_node = args.get("--emb"); num_nodes = args.get("--node"); - + printf("Number of GPUs Per Node = %d\n", gpus_per_node); printf("Number of Nodes = %d\n", num_nodes); printf("Number of Embeddings Per Node = %d\n", embs_per_node); diff --git a/examples/cpp/ResNet/resnet.cc b/examples/cpp/ResNet/resnet.cc index 51932beafd..76f97e8c3b 100644 --- a/examples/cpp/ResNet/resnet.cc +++ b/examples/cpp/ResNet/resnet.cc @@ -61,12 +61,10 @@ void FlexFlow::top_level_task(Task const *task, char **argv = command_args.argv; int argc = command_args.argc; ArgsParser args; - args.add_argument("--dataset", - std::string(""), - "Path to the dataset file"); + args.add_argument("--dataset", std::string(""), "Path to the dataset file"); args.parse_args(argc, argv); resetConfig.dataset_path = args.get("--dataset"); - + log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ffConfig.batchSize, ffConfig.workersPerNode, diff --git a/examples/cpp/Transformer/transformer.cc b/examples/cpp/Transformer/transformer.cc index f93c06aeff..9818f598e9 100644 --- a/examples/cpp/Transformer/transformer.cc +++ b/examples/cpp/Transformer/transformer.cc @@ -95,18 +95,18 @@ void FlexFlow::top_level_task(Task const *task, char **argv = command_args.argv; int argc = command_args.argc; ArgParser args; - args.add_argument("--num-layers",4, "number of layers"); + args.add_argument("--num-layers", 4, "number of layers"); args.add_argument("--embedding-size", 4, "embedding size"); args.add_argument("--hidden-size", 4, "hidden size"); args.add_argument("--num-heads", 4, "number of heads"); args.add_argument("--sequence-length", 4, "sequence length"); - args.parse_args(argc, argv) - tfConfig.num_layers = args.get("--num-layers"); + args.parse_args(argc, argv) tfConfig.num_layers = + args.get("--num-layers"); tfConfig.embedding_size = args.get("--embedding-size"); tfConfig.hidden_size = args.get("--hidden-size"); tfConfig.num_heads = args.get("--num-heads"); tfConfig.sequence_length = args.get("--sequence-length"); - + log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ffConfig.batchSize, ffConfig.workersPerNode, diff --git a/examples/cpp/XDL/xdl.cc b/examples/cpp/XDL/xdl.cc index 8ebb74e40b..94404f9a7f 100644 --- a/examples/cpp/XDL/xdl.cc +++ b/examples/cpp/XDL/xdl.cc @@ -20,7 +20,7 @@ using namespace Legion; LegionRuntime::Logger::Category log_app("XDL"); -std::vector parse_string(std::string & inputs) { +std::vector parse_string(std::string &inputs) { std::vector result; std::stringstream ss(inputs); std::string word; @@ -114,8 +114,9 @@ void FlexFlow::top_level_task(Task const *task, char **argv = command_args.argv; int argc = command_args.argc; ArgParser args; - args.add_argument("--arch-sparse-feature-size", 0," sparse feature size"); - args.add_argument("--arch-embedding-size", "32-64-96-128", "embedding size"); + args.add_argument("--arch-sparse-feature-size", 0, " sparse feature size"); + args.add_argument( + "--arch-embedding-size", "32-64-96-128", "embedding size"); args.add_argument("--embedding-bag-size", 1, "embedding bag size"); args.add_argument("--arch-mlp", "13-512-256-64-16", "mlp layer"); args.add_argument("--loss-threshold", 0.0f, "loss threshold"); @@ -124,7 +125,8 @@ void FlexFlow::top_level_task(Task const *task, args.parse_args(argc, argv); xdlConfig.sparse_feature_size = args.get("--arch-sparse-feature-size"); - xdlConfig.embedding_size = parse_string(args.get("--arch-embedding-size")); + xdlConfig.embedding_size = + parse_string(args.get("--arch-embedding-size")); xdlConfig.embedding_bag_size = args.get("--embedding-bag-size"); xdlConfig.mlp_top = parse_string(args.get("--arch-mlp")); xdlConfig.loss_threshold = args.get("--loss-threshold"); diff --git a/examples/cpp/candle_uno/candle_uno.cc b/examples/cpp/candle_uno/candle_uno.cc index 5b0d59d026..59d5769902 100644 --- a/examples/cpp/candle_uno/candle_uno.cc +++ b/examples/cpp/candle_uno/candle_uno.cc @@ -14,7 +14,7 @@ */ #include "candle_uno.h" -#include "utils/parse.h" //Note(lambda): this headfile may be false, +#include "utils/parse.h" //Note(lambda): this headfile may be false, #include #include #include @@ -55,7 +55,7 @@ Tensor build_feature_model(FFModel *model, return t; } -std::vector parse_string(std::string & inputs) { +std::vector parse_string(std::string &inputs) { std::vector result; std::stringstream ss(inputs); std::string word; @@ -87,12 +87,15 @@ void FlexFlow::top_level_task(Task const *task, char **argv = command_args.argv; int argc = command_args.argc; ArgsParser args; - args.add_argument("--dense-layers", "64-32-16","Dense layers"); - args.add_argument("--dense-feature-layers", "64-32-16","Dense feature layers"); + args.add_argument("--dense-layers", "64-32-16", "Dense layers"); + args.add_argument( + "--dense-feature-layers", "64-32-16", "Dense feature layers"); args.add_argument("--dataset", "", "Dataset path"); args.parse_args(argc, argv); - candle_config.dense_layers = parse_string(args.get("dense-layers")); - candle_config.dense_feature_layers = parse_string(args.get("dense-feature-layers")); + candle_config.dense_layers = + parse_string(args.get("dense-layers")); + candle_config.dense_feature_layers = + parse_string(args.get("dense-feature-layers")); candle_config.dataset_path = args.get("dataset"); log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", ff_config.batchSize, diff --git a/examples/cpp/mixture_of_experts/moe.cc b/examples/cpp/mixture_of_experts/moe.cc index 4ead2eda5d..f34d979952 100644 --- a/examples/cpp/mixture_of_experts/moe.cc +++ b/examples/cpp/mixture_of_experts/moe.cc @@ -132,9 +132,7 @@ void FlexFlow::top_level_task(Task const *task, char **argv = command_args.argv; int argc = command_args.argc; ArgsParser args; - args.add_argument("--dataset", - std::string(""), - "Path to the dataset file"); + args.add_argument("--dataset", std::string(""), "Path to the dataset file"); args.parse_args(argc, argv); moeConfig.dataset_path = args.get("--dataset"); log_app.print("batchSize(%d) workersPerNodes(%d) numNodes(%d)", From c546968bbb49e76bbddea6649970bb10a7a5806c Mon Sep 17 00:00:00 2001 From: lambda7xx Date: Wed, 23 Aug 2023 10:22:39 +0000 Subject: [PATCH 6/6] remove the whitespace --- examples/cpp/AlexNet/alexnet.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/cpp/AlexNet/alexnet.cc b/examples/cpp/AlexNet/alexnet.cc index d2fab594cc..4f1603ee4f 100644 --- a/examples/cpp/AlexNet/alexnet.cc +++ b/examples/cpp/AlexNet/alexnet.cc @@ -14,7 +14,6 @@ */ #include "alexnet.h" - #include #include #include