update nthreads text field when accelerator is selected
the text is reset to 1 and editing disabled for None and Opt
This commit is contained in:
@ -97,17 +97,18 @@ void Preferences::accept()
|
|||||||
QList<QRadioButton *> allButtons = tabWidget->findChildren<QRadioButton *>();
|
QList<QRadioButton *> allButtons = tabWidget->findChildren<QRadioButton *>();
|
||||||
for (auto &allButton : allButtons) {
|
for (auto &allButton : allButtons) {
|
||||||
if (allButton->isChecked()) {
|
if (allButton->isChecked()) {
|
||||||
if (allButton->objectName() == "none")
|
const auto &button = allButton->objectName();
|
||||||
|
if (button == "none")
|
||||||
settings->setValue("accelerator", QString::number(AcceleratorTab::None));
|
settings->setValue("accelerator", QString::number(AcceleratorTab::None));
|
||||||
if (allButton->objectName() == "opt")
|
else if (button == "opt")
|
||||||
settings->setValue("accelerator", QString::number(AcceleratorTab::Opt));
|
settings->setValue("accelerator", QString::number(AcceleratorTab::Opt));
|
||||||
if (allButton->objectName() == "openmp")
|
else if (button == "openmp")
|
||||||
settings->setValue("accelerator", QString::number(AcceleratorTab::OpenMP));
|
settings->setValue("accelerator", QString::number(AcceleratorTab::OpenMP));
|
||||||
if (allButton->objectName() == "intel")
|
else if (button == "intel")
|
||||||
settings->setValue("accelerator", QString::number(AcceleratorTab::Intel));
|
settings->setValue("accelerator", QString::number(AcceleratorTab::Intel));
|
||||||
if (allButton->objectName() == "kokkos")
|
else if (button == "kokkos")
|
||||||
settings->setValue("accelerator", QString::number(AcceleratorTab::Kokkos));
|
settings->setValue("accelerator", QString::number(AcceleratorTab::Kokkos));
|
||||||
if (allButton->objectName() == "gpu")
|
else if (button == "gpu")
|
||||||
settings->setValue("accelerator", QString::number(AcceleratorTab::Gpu));
|
settings->setValue("accelerator", QString::number(AcceleratorTab::Gpu));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -442,29 +443,6 @@ AcceleratorTab::AcceleratorTab(QSettings *_settings, LammpsWrapper *_lammps, QWi
|
|||||||
gpu->setEnabled(lammps->config_has_package("GPU") && lammps->has_gpu_device());
|
gpu->setEnabled(lammps->config_has_package("GPU") && lammps->has_gpu_device());
|
||||||
gpu->setObjectName("gpu");
|
gpu->setObjectName("gpu");
|
||||||
|
|
||||||
int choice = settings->value("accelerator", AcceleratorTab::None).toInt();
|
|
||||||
switch (choice) {
|
|
||||||
case AcceleratorTab::Opt:
|
|
||||||
if (opt->isEnabled()) opt->setChecked(true);
|
|
||||||
break;
|
|
||||||
case AcceleratorTab::OpenMP:
|
|
||||||
if (openmp->isEnabled()) openmp->setChecked(true);
|
|
||||||
break;
|
|
||||||
case AcceleratorTab::Intel:
|
|
||||||
if (intel->isEnabled()) intel->setChecked(true);
|
|
||||||
break;
|
|
||||||
case AcceleratorTab::Kokkos:
|
|
||||||
if (kokkos->isEnabled()) kokkos->setChecked(true);
|
|
||||||
break;
|
|
||||||
case AcceleratorTab::Gpu:
|
|
||||||
if (gpu->isEnabled()) gpu->setChecked(true);
|
|
||||||
break;
|
|
||||||
case AcceleratorTab::None: // fallthrough
|
|
||||||
default:
|
|
||||||
none->setChecked(true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto *choices = new QFrame;
|
auto *choices = new QFrame;
|
||||||
auto *choiceLayout = new QVBoxLayout;
|
auto *choiceLayout = new QVBoxLayout;
|
||||||
#if defined(_OPENMP)
|
#if defined(_OPENMP)
|
||||||
@ -485,6 +463,13 @@ AcceleratorTab::AcceleratorTab(QSettings *_settings, LammpsWrapper *_lammps, QWi
|
|||||||
#endif
|
#endif
|
||||||
ntchoice->setObjectName("nthreads");
|
ntchoice->setObjectName("nthreads");
|
||||||
|
|
||||||
|
connect(none, &QRadioButton::released, this, &AcceleratorTab::update_threads);
|
||||||
|
connect(opt, &QRadioButton::released, this, &AcceleratorTab::update_threads);
|
||||||
|
connect(openmp, &QRadioButton::released, this, &AcceleratorTab::update_threads);
|
||||||
|
connect(intel, &QRadioButton::released, this, &AcceleratorTab::update_threads);
|
||||||
|
connect(kokkos, &QRadioButton::released, this, &AcceleratorTab::update_threads);
|
||||||
|
connect(gpu, &QRadioButton::released, this, &AcceleratorTab::update_threads);
|
||||||
|
|
||||||
choiceLayout->addWidget(ntlabel);
|
choiceLayout->addWidget(ntlabel);
|
||||||
choiceLayout->addWidget(ntchoice);
|
choiceLayout->addWidget(ntchoice);
|
||||||
choices->setLayout(choiceLayout);
|
choices->setLayout(choiceLayout);
|
||||||
@ -492,6 +477,85 @@ AcceleratorTab::AcceleratorTab(QSettings *_settings, LammpsWrapper *_lammps, QWi
|
|||||||
|
|
||||||
mainLayout->addWidget(choices);
|
mainLayout->addWidget(choices);
|
||||||
setLayout(mainLayout);
|
setLayout(mainLayout);
|
||||||
|
|
||||||
|
// trigger update of nthreads line editor field depending on accelerator choice
|
||||||
|
// fall back on None, if configured accelerator package is no longer available
|
||||||
|
int choice = settings->value("accelerator", AcceleratorTab::None).toInt();
|
||||||
|
switch (choice) {
|
||||||
|
case AcceleratorTab::Opt:
|
||||||
|
if (opt->isEnabled())
|
||||||
|
opt->click();
|
||||||
|
else
|
||||||
|
none->click();
|
||||||
|
break;
|
||||||
|
case AcceleratorTab::OpenMP:
|
||||||
|
if (openmp->isEnabled())
|
||||||
|
openmp->click();
|
||||||
|
else
|
||||||
|
none->click();
|
||||||
|
break;
|
||||||
|
case AcceleratorTab::Intel:
|
||||||
|
if (intel->isEnabled())
|
||||||
|
intel->click();
|
||||||
|
else
|
||||||
|
none->click();
|
||||||
|
break;
|
||||||
|
case AcceleratorTab::Kokkos:
|
||||||
|
if (kokkos->isEnabled())
|
||||||
|
kokkos->click();
|
||||||
|
else
|
||||||
|
none->click();
|
||||||
|
break;
|
||||||
|
case AcceleratorTab::Gpu:
|
||||||
|
if (gpu->isEnabled())
|
||||||
|
gpu->click();
|
||||||
|
else
|
||||||
|
none->click();
|
||||||
|
break;
|
||||||
|
case AcceleratorTab::None: // fallthrough
|
||||||
|
default:
|
||||||
|
none->click();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AcceleratorTab::update_threads()
|
||||||
|
{
|
||||||
|
// store selected accelerator
|
||||||
|
int choice = AcceleratorTab::None;
|
||||||
|
|
||||||
|
QList<QRadioButton *> allButtons = findChildren<QRadioButton *>();
|
||||||
|
for (auto &allButton : allButtons) {
|
||||||
|
if (allButton->isChecked()) {
|
||||||
|
const auto &button = allButton->objectName();
|
||||||
|
if (button == "none")
|
||||||
|
choice = AcceleratorTab::None;
|
||||||
|
else if (button == "opt")
|
||||||
|
choice = AcceleratorTab::Opt;
|
||||||
|
else if (button == "openmp")
|
||||||
|
choice = AcceleratorTab::OpenMP;
|
||||||
|
else if (button == "intel")
|
||||||
|
choice = AcceleratorTab::Intel;
|
||||||
|
else if (button == "kokkos")
|
||||||
|
choice = AcceleratorTab::Kokkos;
|
||||||
|
else if (button == "gpu")
|
||||||
|
choice = AcceleratorTab::Gpu;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(_OPENMP)
|
||||||
|
// The number of threads field is disabled and the value set to 1 for "None" and "Opt" choice
|
||||||
|
auto *field = findChild<QLineEdit *>("nthreads");
|
||||||
|
if (field) {
|
||||||
|
if ((choice == AcceleratorTab::None) || (choice == AcceleratorTab::Opt)) {
|
||||||
|
field->setText("1");
|
||||||
|
field->setEnabled(false);
|
||||||
|
} else {
|
||||||
|
field->setText(settings->value("nthreads", 1).toString());
|
||||||
|
field->setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) :
|
SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) :
|
||||||
|
|||||||
@ -75,6 +75,9 @@ public:
|
|||||||
explicit AcceleratorTab(QSettings *settings, LammpsWrapper *lammps, QWidget *parent = nullptr);
|
explicit AcceleratorTab(QSettings *settings, LammpsWrapper *lammps, QWidget *parent = nullptr);
|
||||||
enum { None, Opt, OpenMP, Intel, Kokkos, Gpu };
|
enum { None, Opt, OpenMP, Intel, Kokkos, Gpu };
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void update_threads();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QSettings *settings;
|
QSettings *settings;
|
||||||
LammpsWrapper *lammps;
|
LammpsWrapper *lammps;
|
||||||
|
|||||||
Reference in New Issue
Block a user