30 #elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
32 #include <sys/resource.h>
34 #if defined(__APPLE__) && defined(__MACH__)
35 #include <mach/mach.h>
37 #elif (defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__)))
41 #elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__)
47 #error "Cannot define getPeakRSS( ) or getCurrentRSS( ) for an unknown OS."
61 PROCESS_MEMORY_COUNTERS info;
62 GetProcessMemoryInfo( GetCurrentProcess( ), &info,
sizeof(info) );
63 return (
size_t)info.PeakWorkingSetSize;
65 #elif (defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__)))
69 if ( (fd = open(
"/proc/self/psinfo", O_RDONLY )) == -1 )
71 if ( read( fd, &psinfo,
sizeof(psinfo) ) !=
sizeof(psinfo) )
77 return (
size_t)(psinfo.pr_rssize * 1024L);
79 #elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
82 getrusage( RUSAGE_SELF, &rusage );
83 #if defined(__APPLE__) && defined(__MACH__)
84 return (
size_t)rusage.ru_maxrss;
86 return (
size_t)(rusage.ru_maxrss * 1024L);
107 PROCESS_MEMORY_COUNTERS info;
108 GetProcessMemoryInfo( GetCurrentProcess( ), &info,
sizeof(info) );
109 return (
size_t)info.WorkingSetSize;
111 #elif defined(__APPLE__) && defined(__MACH__)
113 struct mach_task_basic_info info;
114 mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT;
115 if ( task_info( mach_task_self( ), MACH_TASK_BASIC_INFO,
116 (task_info_t)&info, &infoCount ) != KERN_SUCCESS )
118 return (
size_t)info.resident_size;
120 #elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__)
124 if ( (fp = fopen(
"/proc/self/statm",
"r" )) == NULL )
126 if ( fscanf( fp,
"%*s%ld", &rss ) != 1 )
132 return (
size_t)rss * (size_t)sysconf( _SC_PAGESIZE);
152 #elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
154 #include <sys/types.h>
155 #include <sys/param.h>
157 #include <sys/sysctl.h>
161 #error "Unable to define getMemorySize( ) for an unknown OS."
172 #if defined(_WIN32) && (defined(__CYGWIN__) || defined(__CYGWIN32__))
177 GlobalMemoryStatus( &
status );
178 return (
size_t)
status.dwTotalPhys;
180 #elif defined(_WIN32)
185 GlobalMemoryStatusEx( &
status );
186 return (
size_t)
status.ullTotalPhys;
188 #elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
192 #if defined(CTL_HW) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM64))
195 #if defined(HW_MEMSIZE)
197 #elif defined(HW_PHYSMEM64)
198 mib[1] = HW_PHYSMEM64;
201 size_t len =
sizeof( size );
202 if ( sysctl( mib, 2, &size, &len, NULL, 0 ) == 0 )
206 #elif defined(_SC_AIX_REALMEM)
208 return (
size_t)sysconf( _SC_AIX_REALMEM ) * (size_t)1024L;
210 #elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE)
212 return (
size_t)sysconf( _SC_PHYS_PAGES ) *
213 (size_t)sysconf( _SC_PAGESIZE );
215 #elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGE_SIZE)
217 return (
size_t)sysconf( _SC_PHYS_PAGES ) *
218 (size_t)sysconf( _SC_PAGE_SIZE );
220 #elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM))
224 #if defined(HW_REALMEM)
226 #elif defined(HW_PYSMEM)
229 unsigned int size = 0;
230 size_t len =
sizeof( size );
231 if ( sysctl( mib, 2, &size, &len, NULL, 0 ) == 0 )
242 #include "rheolef/communicator.h"
251 #ifndef _RHEOLEF_HAVE_MPI
257 if (! (mpi::environment::initialized() && !mpi::environment::finalized())) {
260 return rheolef::mpi::all_reduce (rheolef::communicator(), local_mem, std::plus<size_t>());
264 if (! (mpi::environment::initialized() && !mpi::environment::finalized())) {
267 return rheolef::mpi::all_reduce (rheolef::communicator(), local_mem, std::plus<size_t>());
This file is part of Rheolef.
size_t dis_memory_usage()
size_t dis_peak_memory_usage()
size_t seq_memory_usage()
size_t seq_peak_memory_usage()