diff --git a/packages/sbatch-tui/src/fdtd.cpp b/packages/sbatch-tui/src/fdtd.cpp index 7abea006..0b935421 100644 --- a/packages/sbatch-tui/src/fdtd.cpp +++ b/packages/sbatch-tui/src/fdtd.cpp @@ -5,18 +5,7 @@ namespace sbatch class Fdtd : public Program { public: struct StateType - { - int QueueSelected = 0; - std::vector QueueEntries; - int CpuSchemeSelected = 0; - std::vector CpuSchemeEntries = { "Default", "Custom" }; - std::string Cpus = "1"; - bool Nomultithread = true; - int MemorySchemeSelected = 0; - std::vector MemorySchemeEntries = { "Default", "Custom" }; - std::string Memory = "1"; - std::string InputFile = "input.fsp"; - }; + { int QueueSelected = 0; std::vector QueueEntries; std::string InputFile = "input.fsp"; }; protected: StateType State_; protected: struct Recommended_ { int Cpus; std::optional Memory; }; protected: std::vector Recommendeds_; @@ -35,13 +24,6 @@ namespace sbatch { auto saved_state = node.as(); if (saved_state.QueueSelected < State_.QueueEntries.size()) State_.QueueSelected = saved_state.QueueSelected; - if (saved_state.CpuSchemeSelected < State_.CpuSchemeEntries.size()) - State_.CpuSchemeSelected = saved_state.CpuSchemeSelected; - State_.Cpus = saved_state.Cpus; - State_.Nomultithread = saved_state.Nomultithread; - if (saved_state.MemorySchemeSelected < State_.MemorySchemeEntries.size()) - State_.MemorySchemeSelected = saved_state.MemorySchemeSelected; - State_.Memory = saved_state.Memory; State_.InputFile = saved_state.InputFile; } catch (...) {} @@ -54,52 +36,17 @@ namespace sbatch // 第一行 ftxui::Container::Horizontal ({ - // 队列 - ftxui::Menu(&State_.QueueEntries, &State_.QueueSelected) - | with_title("Queue:", ftxui::Color::GrayDark), - // CPU 设置 - ftxui::Container::Horizontal - ({ - ftxui::Menu(&State_.CpuSchemeEntries, &State_.CpuSchemeSelected), - ftxui::Container::Vertical - ({ - input(&State_.Cpus, "CPU: "), - checkbox("Disable multithread", &State_.Nomultithread) - }) - | with_list_padding | with_separator - | ftxui::Maybe([&]{ return State_.CpuSchemeSelected == 1; }) - }) | with_title("CPU:", ftxui::Color::GrayDark) | with_separator, - // 内存 - ftxui::Container::Horizontal - ({ - ftxui::Menu(&State_.MemorySchemeEntries, &State_.MemorySchemeSelected), - input(&State_.Memory, "Memory (GB): ") - | with_list_padding | with_separator - | ftxui::Maybe([&]{ return State_.MemorySchemeSelected == 1; }) - }) | with_title("Memory:", ftxui::Color::GrayDark) | with_separator + ftxui::Menu(&State_.QueueEntries, &State_.QueueSelected) | with_title("Queue:", ftxui::Color::GrayDark) }) | with_title("Resource allocation:") | with_bottom, // 第三行:输入文件 - ftxui::Container::Vertical({input(&State_.InputFile, "Input file: ")}) - | with_title("Misc:") + ftxui::Container::Vertical({input(&State_.InputFile, "Input file: ")}) | with_title("Misc:") }); } public: virtual std::vector get_submit_command(std::string extra_sbatch_parameter) const override { auto recommended = Recommendeds_[State_.QueueSelected]; - auto cpu_string = [&] - { - if (State_.CpuSchemeSelected == 0) - return "--ntasks={} --cpus-per-task=1 --hint=nomultithread"_f(recommended.Cpus); - else if (State_.CpuSchemeSelected == 1) return "--ntasks={} --cpus-per-task=1{}"_f - (State_.Cpus, State_.Nomultithread ? " --hint=nomultithread" : ""); - else std::unreachable(); - }(); - auto mem_string = [&] - { - if (State_.MemorySchemeSelected == 0) return recommended.Memory ? "--mem={}G"_f(*recommended.Memory) : ""; - else if (State_.MemorySchemeSelected == 1) return "--mem={}G"_f(State_.Memory); - else std::unreachable(); - }(); + auto cpu_string = "--ntasks={} --cpus-per-task=1 --hint=nomultithread"_f(recommended.Cpus); + auto mem_string = recommended.Memory ? "--mem={}G"_f(*recommended.Memory) : ""; return { "sbatch"s, diff --git a/packages/sbatch-tui/src/mumax3.cpp b/packages/sbatch-tui/src/mumax3.cpp index d2d06394..ff6d87b5 100644 --- a/packages/sbatch-tui/src/mumax3.cpp +++ b/packages/sbatch-tui/src/mumax3.cpp @@ -12,10 +12,6 @@ namespace sbatch std::vector GpuSchemeEntries = { "Any", "Custom" }; std::vector GpuSelected; std::vector> GpuEntries; - bool Nomultithread = true; - int MemorySchemeSelected = 0; - std::vector MemorySchemeEntries = { "Default", "Custom" }; - std::string Memory = "1"; std::string InputFile = "input.txt"; }; protected: StateType State_; @@ -41,10 +37,6 @@ namespace sbatch for (size_t i = 0; i < State_.GpuSelected.size(); i++) if (saved_state.GpuSelected[i] < State_.GpuEntries[i].size()) State_.GpuSelected[i] = saved_state.GpuSelected[i]; - State_.Nomultithread = saved_state.Nomultithread; - if (saved_state.MemorySchemeSelected < State_.MemorySchemeEntries.size()) - State_.MemorySchemeSelected = saved_state.MemorySchemeSelected; - State_.Memory = saved_state.Memory; State_.InputFile = saved_state.InputFile; } catch (...) {} @@ -74,17 +66,6 @@ namespace sbatch ) | with_list_padding | with_separator | ftxui::Maybe([&]{ return State_.GpuSchemeSelected == 1; }) }) | with_title("GPU:", ftxui::Color::GrayDark) | with_separator, - // CPU 设置 - checkbox("Disable multithread", &State_.Nomultithread) - | with_title("CPU:", ftxui::Color::GrayDark) | with_separator, - // 内存 - ftxui::Container::Horizontal - ({ - ftxui::Menu(&State_.MemorySchemeEntries, &State_.MemorySchemeSelected), - input(&State_.Memory, "Memory (GB): ") - | with_list_padding | with_separator - | ftxui::Maybe([&]{ return State_.MemorySchemeSelected == 1; }) - }) | with_title("Memory:", ftxui::Color::GrayDark) | with_separator }) | with_title("Resource allocation:") | with_bottom, // 第三行:任务名和输入输出文件 ftxui::Container::Vertical({input(&State_.InputFile, "Input file: ")}) @@ -93,8 +74,7 @@ namespace sbatch } public: virtual std::vector get_submit_command(std::string extra_sbatch_parameter) const override { - auto cpu_string = [&] - { return State_.Nomultithread ? "--hint=nomultithread" : ""; }(); + auto cpu_string = "--hint=nomultithread"; auto gpu_string = [&] { if (State_.GpuSchemeSelected == 0) return "--gpus=1"s; @@ -102,12 +82,7 @@ namespace sbatch (State_.GpuEntries[State_.QueueSelected][State_.GpuSelected[State_.QueueSelected]]); else std::unreachable(); }(); - auto mem_string = [&] - { - if (State_.MemorySchemeSelected == 0) return "--mem=32G"s; - else if (State_.MemorySchemeSelected == 1) return "--mem={}G"_f(State_.Memory); - else std::unreachable(); - }(); + auto mem_string = "--mem=32G"s; return { "sbatch"s, diff --git a/packages/sbatch-tui/src/vasp_cpu.cpp b/packages/sbatch-tui/src/vasp_cpu.cpp index 575b098f..6cba6e41 100644 --- a/packages/sbatch-tui/src/vasp_cpu.cpp +++ b/packages/sbatch-tui/src/vasp_cpu.cpp @@ -10,17 +10,6 @@ namespace sbatch std::vector VaspEntries = { "std", "gam", "ncl" }; int QueueSelected = 0; std::vector QueueEntries; - int CpuSchemeSelected = 0; - std::vector CpuSchemeEntries = { "Default", "Custom" }; - std::string MpiThreads = "1"; - std::string OpenmpThreads = "1"; - bool Nomultithread = true; - int MemorySchemeSelected = 0; - std::vector MemorySchemeEntries = { "Default", "Custom" }; - std::string Memory = "1"; - bool OptcellEnable = false; - int OptcellSelected = 0; - std::vector OptcellEntries = { "fix ab", "fix c" }; }; protected: StateType State_; protected: struct Recommended_ { int Mpi, Openmp; std::optional Memory, Cpus; }; @@ -41,17 +30,6 @@ namespace sbatch auto saved_state = node.as(); if (saved_state.VaspSelected < State_.VaspEntries.size()) State_.VaspSelected = saved_state.VaspSelected; if (saved_state.QueueSelected < State_.QueueEntries.size()) State_.QueueSelected = saved_state.QueueSelected; - if (saved_state.CpuSchemeSelected < State_.CpuSchemeEntries.size()) - State_.CpuSchemeSelected = saved_state.CpuSchemeSelected; - State_.OpenmpThreads = saved_state.OpenmpThreads; - State_.MpiThreads = saved_state.MpiThreads; - State_.Nomultithread = saved_state.Nomultithread; - if (saved_state.MemorySchemeSelected < State_.MemorySchemeEntries.size()) - State_.MemorySchemeSelected = saved_state.MemorySchemeSelected; - State_.Memory = saved_state.Memory; - State_.OptcellEnable = saved_state.OptcellEnable; - if (saved_state.OptcellSelected < State_.OptcellEntries.size()) - State_.OptcellSelected = saved_state.OptcellSelected; } catch (...) {} } @@ -69,76 +47,19 @@ namespace sbatch // 队列 ftxui::Menu(&State_.QueueEntries, &State_.QueueSelected) | with_title("Queue:", ftxui::Color::GrayDark), - // CPU 设置 - ftxui::Container::Horizontal - ({ - ftxui::Menu(&State_.CpuSchemeEntries, &State_.CpuSchemeSelected), - ftxui::Container::Vertical - ({ - input(&State_.MpiThreads, "MPI: "), - input(&State_.OpenmpThreads, "OpenMP: "), - checkbox("Disable multithread", &State_.Nomultithread) - }) - | with_list_padding | with_separator - | ftxui::Maybe([&]{ return State_.CpuSchemeSelected == 1; }) - }) | with_title("CPU:", ftxui::Color::GrayDark) | with_separator, - // 内存 - ftxui::Container::Horizontal - ({ - ftxui::Menu(&State_.MemorySchemeEntries, &State_.MemorySchemeSelected), - input(&State_.Memory, "Memory (GB): ") - | with_list_padding | with_separator - | ftxui::Maybe([&]{ return State_.MemorySchemeSelected == 1; }) - }) | with_title("Memory:", ftxui::Color::GrayDark) | with_separator - }) | with_title("Resource allocation:") | with_bottom, - // 第三行:任务名和输出文件 - ftxui::Container::Vertical - ({ - - ftxui::Container::Horizontal - ({ - checkbox("Generate OPTCELL", &State_.OptcellEnable), - ftxui::Menu(&State_.OptcellEntries, &State_.OptcellSelected) - | with_separator | ftxui::Maybe([&]{ return State_.OptcellEnable; }) - }) - }) | with_title("Misc:") + }) | with_title("Resource allocation:") | with_bottom }); } public: virtual std::vector get_submit_command(std::string extra_sbatch_parameter) const override { - auto optcell_string = [&] - { - if (State_.OptcellEnable) - if (State_.OptcellSelected == 0) return "echo -e '000\\n000\\n001' > OPTCELL &&"s; - else if (State_.OptcellSelected == 1) return "echo -e '110\\n110\\n000' > OPTCELL &&"s; - else std::unreachable(); - else return ""s; - }(); auto recommended = Recommendeds_[State_.QueueSelected]; - auto cpu_string = [&] - { - if (State_.CpuSchemeSelected == 0) - if (recommended.Cpus) return "--ntasks={} --cpus-per-task=1 --hint=nomultithread"_f(*recommended.Cpus); - else return "--ntasks={} --cpus-per-task={} --hint=nomultithread"_f(recommended.Mpi, recommended.Openmp); - else if (State_.CpuSchemeSelected == 1) return "--ntasks={} --cpus-per-task={}{}"_f - (State_.MpiThreads, State_.OpenmpThreads, State_.Nomultithread ? " --hint=nomultithread" : ""); - else std::unreachable(); - }(); - auto mem_string = [&] - { - if (State_.MemorySchemeSelected == 0) return recommended.Memory ? "--mem={}G"_f(*recommended.Memory) : ""; - else if (State_.MemorySchemeSelected == 1) return "--mem={}G"_f(State_.Memory); - else std::unreachable(); - }(); - auto srun_string = [&] - { - if (State_.CpuSchemeSelected == 0 && recommended.Cpus) - return " --ntasks={} --cpus-per-task={}"_f(recommended.Mpi, recommended.Openmp); - else return ""s; - }(); + auto cpu_string = recommended.Cpus ? "--ntasks={} --cpus-per-task=1 --hint=nomultithread"_f(*recommended.Cpus) + : "--ntasks={} --cpus-per-task={} --hint=nomultithread"_f(recommended.Mpi, recommended.Openmp); + auto mem_string = recommended.Memory ? "--mem={}G"_f(*recommended.Memory) : ""; + auto srun_string = + recommended.Cpus ? " --ntasks={} --cpus-per-task={}"_f(recommended.Mpi, recommended.Openmp) : ""s; return { - optcell_string, "sbatch"s, "--partition={} --nodes=1-1"_f(State_.QueueEntries[State_.QueueSelected]), cpu_string, mem_string, diff --git a/packages/sbatch-tui/src/vasp_gpu.cpp b/packages/sbatch-tui/src/vasp_gpu.cpp index dd7711ef..b91cbd76 100644 --- a/packages/sbatch-tui/src/vasp_gpu.cpp +++ b/packages/sbatch-tui/src/vasp_gpu.cpp @@ -14,16 +14,6 @@ namespace sbatch std::vector GpuSchemeEntries = { "Any", "Custom" }; std::vector GpuSelected; std::vector> GpuEntries; - int CpuSchemeSelected = 0; - std::vector CpuSchemeEntries = { "Default", "Custom" }; - std::string OpenmpThreads = "1"; - bool Nomultithread = true; - int MemorySchemeSelected = 0; - std::vector MemorySchemeEntries = { "Default", "Custom" }; - std::string Memory = "1"; - bool OptcellEnable = false; - int OptcellSelected = 0; - std::vector OptcellEntries = { "fix ab", "fix c" }; }; protected: StateType State_; public: virtual std::string get_name() const override { return "VASP(GPU)"; } @@ -49,16 +39,6 @@ namespace sbatch for (size_t i = 0; i < State_.GpuSelected.size(); i++) if (saved_state.GpuSelected[i] < State_.GpuEntries[i].size()) State_.GpuSelected[i] = saved_state.GpuSelected[i]; - if (saved_state.CpuSchemeSelected < State_.CpuSchemeEntries.size()) - State_.CpuSchemeSelected = saved_state.CpuSchemeSelected; - State_.OpenmpThreads = saved_state.OpenmpThreads; - State_.Nomultithread = saved_state.Nomultithread; - if (saved_state.MemorySchemeSelected < State_.MemorySchemeEntries.size()) - State_.MemorySchemeSelected = saved_state.MemorySchemeSelected; - State_.Memory = saved_state.Memory; - State_.OptcellEnable = saved_state.OptcellEnable; - if (saved_state.OptcellSelected < State_.OptcellEntries.size()) - State_.OptcellSelected = saved_state.OptcellSelected; } catch (...) {} } @@ -89,57 +69,13 @@ namespace sbatch &State_.QueueSelected ) | with_list_padding | with_separator | ftxui::Maybe([&]{ return State_.GpuSchemeSelected == 1; }) - }) | with_title("GPU:", ftxui::Color::GrayDark) | with_separator, - // CPU 设置 - ftxui::Container::Horizontal - ({ - ftxui::Menu(&State_.CpuSchemeEntries, &State_.CpuSchemeSelected), - ftxui::Container::Vertical - ({ - input(&State_.OpenmpThreads, "OpenMP: "), - checkbox("Disable multithread", &State_.Nomultithread) - }) - | with_list_padding | with_separator - | ftxui::Maybe([&]{ return State_.CpuSchemeSelected == 1; }) - }) | with_title("CPU:", ftxui::Color::GrayDark) | with_separator, - // 内存 - ftxui::Container::Horizontal - ({ - ftxui::Menu(&State_.MemorySchemeEntries, &State_.MemorySchemeSelected), - input(&State_.Memory, "Memory (GB): ") - | with_list_padding | with_separator - | ftxui::Maybe([&]{ return State_.MemorySchemeSelected == 1; }) - }) | with_title("Memory:", ftxui::Color::GrayDark) | with_separator - }) | with_title("Resource allocation:") | with_bottom, - // 第三行:任务名和输出文件 - ftxui::Container::Vertical - ({ - ftxui::Container::Horizontal - ({ - checkbox("Generate OPTCELL", &State_.OptcellEnable), - ftxui::Menu(&State_.OptcellEntries, &State_.OptcellSelected) - | with_separator | ftxui::Maybe([&]{ return State_.OptcellEnable; }) - }) - }) | with_title("Misc:") + }) | with_title("GPU:", ftxui::Color::GrayDark) | with_separator + }) | with_title("Resource allocation:") | with_bottom }); } public: virtual std::vector get_submit_command(std::string extra_sbatch_parameter) const override { - auto optcell_string = [&] - { - if (State_.OptcellEnable) - if (State_.OptcellSelected == 0) return "echo -e '000\\n000\\n001' > OPTCELL && "s; - else if (State_.OptcellSelected == 1) return "echo -e '110\\n110\\n000' > OPTCELL && "s; - else std::unreachable(); - else return ""s; - }(); - auto cpu_string = [&] - { - if (State_.CpuSchemeSelected == 0) return "--ntasks=1 --cpus-per-task=1 --hint=nomultithread"s; - else if (State_.CpuSchemeSelected == 1) return "--ntasks=1 --cpus-per-task={}{}"_f - (State_.OpenmpThreads, State_.Nomultithread ? " --hint=nomultithread" : ""); - else std::unreachable(); - }(); + auto cpu_string = "--ntasks=1 --cpus-per-task=1 --hint=nomultithread"s; auto gpu_string = [&] { if (State_.GpuSchemeSelected == 0) return "--gpus=1"s; @@ -147,15 +83,9 @@ namespace sbatch (State_.GpuEntries[State_.QueueSelected][State_.GpuSelected[State_.QueueSelected]]); else std::unreachable(); }(); - auto mem_string = [&] - { - if (State_.MemorySchemeSelected == 0) return "--mem=32G"s; - else if (State_.MemorySchemeSelected == 1) return "--mem={}G"_f(State_.Memory); - else std::unreachable(); - }(); + auto mem_string = "--mem=32G"s; return { - optcell_string, "sbatch"s, "--partition={} --nodes=1-1"_f(State_.QueueEntries[State_.QueueSelected]), gpu_string, cpu_string, mem_string,