mirror of
https://github.com/CHN-beta/nixos.git
synced 2026-01-11 17:29:30 +08:00
packages.sbatch-tui: cleanup unused options
This commit is contained in:
@@ -5,18 +5,7 @@ namespace sbatch
|
||||
class Fdtd : public Program
|
||||
{
|
||||
public: struct StateType
|
||||
{
|
||||
int QueueSelected = 0;
|
||||
std::vector<std::string> QueueEntries;
|
||||
int CpuSchemeSelected = 0;
|
||||
std::vector<std::string> CpuSchemeEntries = { "Default", "Custom" };
|
||||
std::string Cpus = "1";
|
||||
bool Nomultithread = true;
|
||||
int MemorySchemeSelected = 0;
|
||||
std::vector<std::string> MemorySchemeEntries = { "Default", "Custom" };
|
||||
std::string Memory = "1";
|
||||
std::string InputFile = "input.fsp";
|
||||
};
|
||||
{ int QueueSelected = 0; std::vector<std::string> QueueEntries; std::string InputFile = "input.fsp"; };
|
||||
protected: StateType State_;
|
||||
protected: struct Recommended_ { int Cpus; std::optional<int> Memory; };
|
||||
protected: std::vector<Recommended_> Recommendeds_;
|
||||
@@ -35,13 +24,6 @@ namespace sbatch
|
||||
{
|
||||
auto saved_state = node.as<decltype(State_)>();
|
||||
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<std::string> 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,
|
||||
|
||||
@@ -12,10 +12,6 @@ namespace sbatch
|
||||
std::vector<std::string> GpuSchemeEntries = { "Any", "Custom" };
|
||||
std::vector<int> GpuSelected;
|
||||
std::vector<std::vector<std::string>> GpuEntries;
|
||||
bool Nomultithread = true;
|
||||
int MemorySchemeSelected = 0;
|
||||
std::vector<std::string> 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<std::string> 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,
|
||||
|
||||
@@ -10,17 +10,6 @@ namespace sbatch
|
||||
std::vector<std::string> VaspEntries = { "std", "gam", "ncl" };
|
||||
int QueueSelected = 0;
|
||||
std::vector<std::string> QueueEntries;
|
||||
int CpuSchemeSelected = 0;
|
||||
std::vector<std::string> CpuSchemeEntries = { "Default", "Custom" };
|
||||
std::string MpiThreads = "1";
|
||||
std::string OpenmpThreads = "1";
|
||||
bool Nomultithread = true;
|
||||
int MemorySchemeSelected = 0;
|
||||
std::vector<std::string> MemorySchemeEntries = { "Default", "Custom" };
|
||||
std::string Memory = "1";
|
||||
bool OptcellEnable = false;
|
||||
int OptcellSelected = 0;
|
||||
std::vector<std::string> OptcellEntries = { "fix ab", "fix c" };
|
||||
};
|
||||
protected: StateType State_;
|
||||
protected: struct Recommended_ { int Mpi, Openmp; std::optional<int> Memory, Cpus; };
|
||||
@@ -41,17 +30,6 @@ namespace sbatch
|
||||
auto saved_state = node.as<decltype(State_)>();
|
||||
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<std::string> 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,
|
||||
|
||||
@@ -14,16 +14,6 @@ namespace sbatch
|
||||
std::vector<std::string> GpuSchemeEntries = { "Any", "Custom" };
|
||||
std::vector<int> GpuSelected;
|
||||
std::vector<std::vector<std::string>> GpuEntries;
|
||||
int CpuSchemeSelected = 0;
|
||||
std::vector<std::string> CpuSchemeEntries = { "Default", "Custom" };
|
||||
std::string OpenmpThreads = "1";
|
||||
bool Nomultithread = true;
|
||||
int MemorySchemeSelected = 0;
|
||||
std::vector<std::string> MemorySchemeEntries = { "Default", "Custom" };
|
||||
std::string Memory = "1";
|
||||
bool OptcellEnable = false;
|
||||
int OptcellSelected = 0;
|
||||
std::vector<std::string> 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<std::string> 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,
|
||||
|
||||
Reference in New Issue
Block a user