print fft info also with -help flag, using single function to create string

This commit is contained in:
Axel Kohlmeyer
2024-02-05 17:32:45 -05:00
parent efbc0e0579
commit 11b2538cdb
3 changed files with 71 additions and 34 deletions

View File

@ -34,6 +34,7 @@
#include "group.h" #include "group.h"
#include "improper.h" #include "improper.h"
#include "input.h" #include "input.h"
#include "lmpfftsettings.h"
#include "modify.h" #include "modify.h"
#include "neighbor.h" #include "neighbor.h"
#include "output.h" #include "output.h"
@ -406,40 +407,9 @@ void Info::command(int narg, char **arg)
if (flags & FFT) { if (flags & FFT) {
fputs("\nFFT information:\n",out); fputs("\nFFT information:\n",out);
#if defined(FFT_HEFFTE) fputs(get_fft_info().c_str(),out);
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
} }
if (flags & SYSTEM) { if (flags & SYSTEM) {
fputs("\nSystem information:\n",out); fputs("\nSystem information:\n",out);
fmt::print(out,"Units = {}\n", update->unit_style); 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) void Info::get_memory_info(double *meminfo)
{ {
double bytes = 0; double bytes = 0;

View File

@ -47,6 +47,7 @@ class Info : public Command {
static bool has_package(const std::string &); static bool has_package(const std::string &);
static bool has_accelerator_feature(const std::string &, const std::string &, static bool has_accelerator_feature(const std::string &, const std::string &,
const std::string &); const std::string &);
static std::string get_fft_info();
static bool has_gpu_device(); static bool has_gpu_device();
static std::string get_gpu_device_info(); static std::string get_gpu_device_info();
static std::string get_accelerator_info(const std::string &pkg = ""); static std::string get_accelerator_info(const std::string &pkg = "");

View File

@ -66,6 +66,7 @@
#include "lmpinstalledpkgs.h" #include "lmpinstalledpkgs.h"
#include "lmpgitversion.h" #include "lmpgitversion.h"
#include "lmpfftsettings.h"
#if defined(LAMMPS_UPDATE) #if defined(LAMMPS_UPDATE)
#define UPDATE_STRING " - " 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"); fmt::print(fp,"Compatible GPU present: {}\n\n",Info::has_gpu_device() ? "yes" : "no");
#endif #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_gzip_support()) fputs("-DLAMMPS_GZIP\n",fp);
if (Info::has_png_support()) fputs("-DLAMMPS_PNG\n",fp); if (Info::has_png_support()) fputs("-DLAMMPS_PNG\n",fp);
if (Info::has_jpeg_support()) fputs("-DLAMMPS_JPEG\n",fp); if (Info::has_jpeg_support()) fputs("-DLAMMPS_JPEG\n",fp);