diff --git a/src/library.cpp b/src/library.cpp index 0e0c4070ea..e1e505e462 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -532,6 +532,38 @@ int lammps_version(void *handle) return atoi(lmp->universe->num_ver); } +/* ---------------------------------------------------------------------- */ + +/** Get memory usage information + * +\verbatim embed:rst + +This function will retrieve memory usage information for the current +LAMMPS instance or process. The *meminfo* buffer will be filled with +3 different numbers (if supported by the operating system). The first +is the tally (in MBytes) of all large memory allocations made by LAMMPS. +This is a lower boundary of how much memory is requested and does not +account for memory allocated on the stack or allocations via ``new``. +The second number is the current memory allocation of the process as +returned by the memory allocator in the C-library. The third number +is the maximum amount of RAM (not swap) used by the process so far. +If any of the two latter parameters is not supported by the operating +system, the number value is 0. + +.. versionadded:: 15Sep2020 + +\endverbatim + * + * \param handle pointer to a previously created LAMMPS instance + * \param meminfo buffer with space for at least 3 double to store + * data in. */ + +void lammps_memory_usage(void *handle, double *meminfo) +{ + LAMMPS *lmp = (LAMMPS *) handle; + Info info(lmp); + info.get_memory_info(meminfo); +} /* ---------------------------------------------------------------------- */ diff --git a/src/library.h b/src/library.h index f5a02502e7..9b9d89ca39 100644 --- a/src/library.h +++ b/src/library.h @@ -98,7 +98,8 @@ void lammps_commands_string(void *handle, const char *str); * ----------------------------------------------------------------------- */ int lammps_version(void *handle); -int lammps_get_mpi_comm(void* handle); +void lammps_memory_usage(void *handle, double *meminfo); +int lammps_get_mpi_comm(void *handle); double lammps_get_natoms(void *handle); double lammps_get_thermo(void *handle, char *keyword);