diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 75affdff78..42790122f4 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -665,8 +665,14 @@ void LammpsGui::start_lammps() lammps_args.push_back(mystrdup("-pk")); lammps_args.push_back(mystrdup("gpu")); lammps_args.push_back(mystrdup("0")); + } else if (accel == AcceleratorTab::Kokkos) { + lammps_args.push_back(mystrdup("-kokkos")); + lammps_args.push_back(mystrdup("on")); + lammps_args.push_back(mystrdup("t")); + lammps_args.push_back(mystrdup(std::to_string(nthreads))); + lammps_args.push_back(mystrdup("-suffix")); + lammps_args.push_back(mystrdup("kk")); } - if (settings.value("echo", "0").toInt()) { lammps_args.push_back(mystrdup("-echo")); lammps_args.push_back(mystrdup("screen")); diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index d8a8b78568..af6d532e0d 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -160,6 +160,17 @@ bool LammpsWrapper::config_has_package(const char *package) const #endif } +bool LammpsWrapper::config_accelerator(const char *package, const char *category, + const char *setting) const +{ +#if defined(LAMMPS_GUI_USE_PLUGIN) + return ((liblammpsplugin_t *)plugin_handle)->config_accelerator(package, category, setting) != + 0; +#else + return lammps_config_accelerator(package, category, setting) != 0; +#endif +} + bool LammpsWrapper::has_gpu_device() const { #if defined(LAMMPS_GUI_USE_PLUGIN) diff --git a/tools/lammps-gui/lammpswrapper.h b/tools/lammps-gui/lammpswrapper.h index 5f33c1f6b6..db8a0ba3d6 100644 --- a/tools/lammps-gui/lammpswrapper.h +++ b/tools/lammps-gui/lammpswrapper.h @@ -34,6 +34,7 @@ public: bool is_running(); bool has_error() const; int get_last_error_message(char *errorbuf, int buflen); + bool config_accelerator(const char *package, const char *category, const char *setting) const; bool config_has_package(const char *pkg) const; bool has_gpu_device() const; diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 2784c57a80..bb1756c76d 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -159,7 +159,16 @@ AcceleratorTab::AcceleratorTab(QSettings *_settings, LammpsWrapper *_lammps, QWi openmp->setObjectName("openmp"); intel->setEnabled(lammps->config_has_package("INTEL")); intel->setObjectName("intel"); - kokkos->setEnabled(lammps->config_has_package("KOKKOS")); + // Kokkos support only works with OpenMP for now. + if (lammps->config_has_package("KOKKOS")) { + if (lammps->config_accelerator("KOKKOS", "api", "openmp") && + !(lammps->config_accelerator("KOKKOS", "api", "cuda") || + lammps->config_accelerator("KOKKOS", "api", "hip") || + lammps->config_accelerator("KOKKOS", "api", "sycl"))) + kokkos->setEnabled(true); + else + kokkos->setEnabled(false); + } kokkos->setObjectName("kokkos"); gpu->setEnabled(lammps->config_has_package("GPU") && lammps->has_gpu_device()); gpu->setObjectName("gpu");