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("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"));
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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");
|
||||
|
||||
Reference in New Issue
Block a user