support running with Kokkos + OpenMP
This commit is contained in:
@ -665,8 +665,14 @@ void LammpsGui::start_lammps()
|
|||||||
lammps_args.push_back(mystrdup("-pk"));
|
lammps_args.push_back(mystrdup("-pk"));
|
||||||
lammps_args.push_back(mystrdup("gpu"));
|
lammps_args.push_back(mystrdup("gpu"));
|
||||||
lammps_args.push_back(mystrdup("0"));
|
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()) {
|
if (settings.value("echo", "0").toInt()) {
|
||||||
lammps_args.push_back(mystrdup("-echo"));
|
lammps_args.push_back(mystrdup("-echo"));
|
||||||
lammps_args.push_back(mystrdup("screen"));
|
lammps_args.push_back(mystrdup("screen"));
|
||||||
|
|||||||
@ -160,6 +160,17 @@ bool LammpsWrapper::config_has_package(const char *package) const
|
|||||||
#endif
|
#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
|
bool LammpsWrapper::has_gpu_device() const
|
||||||
{
|
{
|
||||||
#if defined(LAMMPS_GUI_USE_PLUGIN)
|
#if defined(LAMMPS_GUI_USE_PLUGIN)
|
||||||
|
|||||||
@ -34,6 +34,7 @@ public:
|
|||||||
bool is_running();
|
bool is_running();
|
||||||
bool has_error() const;
|
bool has_error() const;
|
||||||
int get_last_error_message(char *errorbuf, int buflen);
|
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 config_has_package(const char *pkg) const;
|
||||||
bool has_gpu_device() const;
|
bool has_gpu_device() const;
|
||||||
|
|
||||||
|
|||||||
@ -159,7 +159,16 @@ AcceleratorTab::AcceleratorTab(QSettings *_settings, LammpsWrapper *_lammps, QWi
|
|||||||
openmp->setObjectName("openmp");
|
openmp->setObjectName("openmp");
|
||||||
intel->setEnabled(lammps->config_has_package("INTEL"));
|
intel->setEnabled(lammps->config_has_package("INTEL"));
|
||||||
intel->setObjectName("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");
|
kokkos->setObjectName("kokkos");
|
||||||
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");
|
||||||
|
|||||||
Reference in New Issue
Block a user