diff --git a/src/info.cpp b/src/info.cpp index aa3bbb2bcc..2b87452d72 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -34,6 +34,7 @@ #include "group.h" #include "improper.h" #include "input.h" +#include "lmpfftsettings.h" #include "modify.h" #include "neighbor.h" #include "output.h" @@ -406,40 +407,9 @@ void Info::command(int narg, char **arg) if (flags & FFT) { fputs("\nFFT information:\n",out); -#if defined(FFT_HEFFTE) - fputs("FFT engine = HeFFTe\n",out); -#if defined(FFT_HEFFTE_MKL) - fputs("FFT library = MKL\n", out); -#elif defined(FFT_HEFFTE_FFTW) - fputs("FFT library = FFTW\n", out); -#else - fputs("FFT library = (builtin)\n", out); -#endif -#else - fputs("FFT engine = mpiFFT\n",out); -#if defined(FFT_MKL) - fputs("FFT library = MKL\n", out); -#elif defined(FFT_FFTW3) - fputs("FFT library = FFTW3\n", out); -#else - fputs("FFT library = KISS\n", out); -#endif -#endif -#if defined(LMP_KOKKOS) - fputs("KOKKOS FFT engine = mpiFFT\n",out); -#if defined(FFT_KOKKOS_CUFFT) - fputs("KOKKOS FFT library = cuFFT\n", out); -#elif defined(FFT_KOKKOS_HIPFFT) - fputs("KOKKOS FFT library = hipFFT\n", out); -#elif defined(FFT_FFTW3) - fputs("KOKKOS FFT library = FFTW3\n", out); -#elif defined(FFT_KOKKOS_MKL) - fputs("KOKKOS FFT library = MKL\n", out); -#else - fputs("KOKKOS FFT library = KISS\n", out); -#endif -#endif + fputs(get_fft_info().c_str(),out); } + if (flags & SYSTEM) { fputs("\nSystem information:\n",out); fmt::print(out,"Units = {}\n", update->unit_style); @@ -1308,6 +1278,68 @@ std::string Info::get_accelerator_info(const std::string &package) /* ---------------------------------------------------------------------- */ +std::string Info::get_fft_info() +{ + std::string fft_info; +#if defined(FFT_SINGLE) + fft_info = "FFT precision = single\n"; +#else + fft_info = "FFT precision = double\n"; +#endif +#if defined(FFT_HEFFTE) + fft_info += "FFT engine = HeFFTe\n"; +#if defined(FFT_HEFFTE_MKL) + fft_info += "FFT library = MKL\n"; +#elif defined(FFT_HEFFTE_FFTW) + fft_info += "FFT library = FFTW\n"; +#else + fft_info += "FFT library = (builtin)\n"; +#endif +#else + fft_info += "FFT engine = mpiFFT\n"; +#if defined(FFT_MKL) +#if defined(FFT_MKL_THREADS) + fft_info += "FFT library = MKL with threads\n"; +#else + fft_info += "FFT library = MKL\n"; +#endif +#elif defined(FFT_FFTW3) +#if defined(FFT_FFTW_THREADS) + fft_info += "FFT library = FFTW3 with threads\n"; +#else + fft_info += "FFT library = FFTW3\n"; +#endif +#else + fft_info += "FFT library = KISS\n"; +#endif +#endif +#if defined(LMP_KOKKOS) + fft_info += "KOKKOS FFT engine = mpiFFT\n"; +#if defined(FFT_KOKKOS_CUFFT) + fft_info += "KOKKOS FFT library = cuFFT\n"; +#elif defined(FFT_KOKKOS_HIPFFT) + fft_info += "KOKKOS FFT library = hipFFT\n"; +#elif defined(FFT_KOKKOS_FFTW3) +#if defined(FFT_KOKKOS_FFTW_THREADS) + fft_info += "KOKKOS FFT library = FFTW3 with threads\n"; +#else + fft_info += "KOKKOS FFT library = FFTW3\n"; +#endif +#elif defined(FFT_KOKKOS_MKL) +#if defined(FFT_KOKKOS_MKL_THREADS) + fft_info += "KOKKOS FFT library = MKL with threads\n"; +#else + fft_info += "KOKKOS FFT library = MKL\n"; +#endif +#else + fft_info += "KOKKOS FFT library = KISS\n"; +#endif +#endif + return fft_info; +} + +/* ---------------------------------------------------------------------- */ + void Info::get_memory_info(double *meminfo) { double bytes = 0; diff --git a/src/info.h b/src/info.h index c4230b063e..8fd725abf6 100644 --- a/src/info.h +++ b/src/info.h @@ -47,6 +47,7 @@ class Info : public Command { static bool has_package(const std::string &); static bool has_accelerator_feature(const std::string &, const std::string &, const std::string &); + static std::string get_fft_info(); static bool has_gpu_device(); static std::string get_gpu_device_info(); static std::string get_accelerator_info(const std::string &pkg = ""); diff --git a/src/lammps.cpp b/src/lammps.cpp index b3d2171152..2a71714dcc 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -66,6 +66,7 @@ #include "lmpinstalledpkgs.h" #include "lmpgitversion.h" +#include "lmpfftsettings.h" #if defined(LAMMPS_UPDATE) #define UPDATE_STRING " - " LAMMPS_UPDATE @@ -1446,7 +1447,10 @@ void LAMMPS::print_config(FILE *fp) fmt::print(fp,"Compatible GPU present: {}\n\n",Info::has_gpu_device() ? "yes" : "no"); #endif - fputs("Active compile time flags:\n\n",fp); + fputs("FFT information:\n\n",fp); + fputs(Info::get_fft_info().c_str(),fp); + + fputs("\nActive compile time flags:\n\n",fp); if (Info::has_gzip_support()) fputs("-DLAMMPS_GZIP\n",fp); if (Info::has_png_support()) fputs("-DLAMMPS_PNG\n",fp); if (Info::has_jpeg_support()) fputs("-DLAMMPS_JPEG\n",fp);