Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mpim-sw
cdo
Commits
44bce162
Commit
44bce162
authored
Nov 02, 2017
by
Uwe Schulzweida
Browse files
Added getMemorySize.c.
parent
60f140bb
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/Makefile.am
View file @
44bce162
...
...
@@ -70,6 +70,7 @@ libcdo_la_SOURCES = \
fieldmer.cc
\
fieldzon.cc
\
functs.h
\
getMemorySize.c
\
gradsdeslib.cc
\
gradsdeslib.h
\
grid.cc
\
...
...
src/Makefile.in
View file @
44bce162
...
...
@@ -129,18 +129,18 @@ am_libcdo_la_OBJECTS = libcdo_la-argument.lo libcdo_la-array.lo \
libcdo_la-expr_yacc.lo libcdo_la-features.lo \
libcdo_la-field.lo libcdo_la-field2.lo libcdo_la-fieldc.lo \
libcdo_la-fieldmem.lo libcdo_la-fieldmer.lo \
libcdo_la-fieldzon.lo libcdo_la-g
radsdeslib
.lo \
libcdo_la-gr
id
.lo libcdo_la-grid
_proj
.lo \
libcdo_la-grid_
area
.lo libcdo_la-grid_
define
.lo \
libcdo_la-grid_
gm
e.lo libcdo_la-grid_
rot
.lo \
libcdo_la-grid_
f
ro
m_name
.lo libcdo_la-grid_
read
.lo \
libcdo_la-grid_read
_pingo
.lo libcdo_la-grid_
print
.lo \
libcdo_la-grid
reference
.lo libcdo_la-grid
des
.lo \
libcdo_la-griddes
_h5
.lo libcdo_la-griddes_
nc
.lo \
libcdo_la-
hetaeta
.lo libcdo_la-
institution
.lo \
libcdo_la-in
terpol
.lo libcdo_la-
job.lo libcdo_la-juldate
.lo \
libcdo_la-
grid_search
.lo libcdo_la-
listarray
.lo \
libcdo_la-list.lo libcdo_la-listbuf.lo \
libcdo_la-fieldzon.lo libcdo_la-g
etMemorySize
.lo \
libcdo_la-gr
adsdeslib
.lo libcdo_la-grid.lo \
libcdo_la-grid_
proj
.lo libcdo_la-grid_
area
.lo \
libcdo_la-grid_
defin
e.lo libcdo_la-grid_
gme
.lo \
libcdo_la-grid_ro
t
.lo libcdo_la-grid_
from_name
.lo \
libcdo_la-grid_read.lo libcdo_la-grid_
read_pingo
.lo \
libcdo_la-grid
_print
.lo libcdo_la-grid
reference
.lo \
libcdo_la-griddes.lo libcdo_la-griddes_
h5
.lo \
libcdo_la-
griddes_nc
.lo libcdo_la-
hetaeta
.lo \
libcdo_la-in
stitution
.lo libcdo_la-
interpol
.lo \
libcdo_la-
job.lo libcdo_la-juldate
.lo libcdo_la-
grid_search
.lo \
libcdo_la-listarray.lo
libcdo_la-list.lo libcdo_la-listbuf.lo \
libcdo_la-merge_sort2.lo libcdo_la-modules.lo \
libcdo_la-namelist.lo libcdo_la-namelist_parser.lo \
libcdo_la-normal.lo libcdo_la-nth_element.lo \
...
...
@@ -612,10 +612,10 @@ libcdo_la_SOURCES = argument.h argument.cc array.h array.cc cdo_int.h \
ecautil.h error.h etopo.h temp.h mask.h exception.cc expr.cc \
expr.h expr_fun.cc expr_fun.h expr_lex.cc expr_yacc.cc \
expr_yacc.h features.cc field.cc field.h field2.cc fieldc.cc \
fieldmem.cc fieldmer.cc fieldzon.cc functs.h g
radsdeslib.c
c \
gradsdeslib.h grid.cc grid.h grid_proj.cc
grid_proj.h
\
grid_area.cc grid_define.cc grid_gme.cc
grid_rot.cc
\
grid_from_name.cc grid_read.cc grid_read_pingo.cc \
fieldmem.cc fieldmer.cc fieldzon.cc functs.h g
etMemorySize.
c \
gradsdeslib.cc
gradsdeslib.h grid.cc grid.h grid_proj.cc \
grid_proj.h
grid_area.cc grid_define.cc grid_gme.cc \
grid_rot.cc
grid_from_name.cc grid_read.cc grid_read_pingo.cc \
grid_print.cc gridreference.cc griddes.cc griddes.h \
griddes_h5.cc griddes_nc.cc hetaeta.cc hetaeta.h \
institution.cc interpol.cc interpol.h job.cc juldate.cc \
...
...
@@ -1144,6 +1144,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdo_la-fieldmem.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdo_la-fieldmer.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdo_la-fieldzon.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdo_la-getMemorySize.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdo_la-gradsdeslib.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdo_la-grid.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdo_la-grid_area.Plo@am__quote@
...
...
@@ -1246,6 +1247,13 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
libcdo_la-getMemorySize.lo: getMemorySize.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-getMemorySize.lo -MD -MP -MF $(DEPDIR)/libcdo_la-getMemorySize.Tpo -c -o libcdo_la-getMemorySize.lo `test -f 'getMemorySize.c' || echo '$(srcdir)/'`getMemorySize.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-getMemorySize.Tpo $(DEPDIR)/libcdo_la-getMemorySize.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getMemorySize.c' object='libcdo_la-getMemorySize.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-getMemorySize.lo `test -f 'getMemorySize.c' || echo '$(srcdir)/'`getMemorySize.c
json/libcdo_la-jsmn.lo: json/jsmn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT json/libcdo_la-jsmn.lo -MD -MP -MF json/$(DEPDIR)/libcdo_la-jsmn.Tpo -c -o json/libcdo_la-jsmn.lo `test -f 'json/jsmn.c' || echo '$(srcdir)/'`json/jsmn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) json/$(DEPDIR)/libcdo_la-jsmn.Tpo json/$(DEPDIR)/libcdo_la-jsmn.Plo
...
...
src/features.cc
View file @
44bce162
...
...
@@ -23,13 +23,9 @@
#endif
#if defined(HAVE_LIBCMOR)
#ifdef __cplusplus
extern
"C"
{
#endif
extern
"C"
{
#include
"cmor.h"
#ifdef __cplusplus
}
#endif
}
#endif
#include
<stdio.h>
...
...
@@ -37,9 +33,18 @@
#include
"cdo_int.h"
// HAVE_OPENMP4
extern
"C"
{
size_t
getMemorySize
(
void
);
}
void
printFeatures
(
void
)
{
fprintf
(
stderr
,
"Features:"
);
size_t
memory_size
=
getMemorySize
();
memory_size
/=
1024
;
memory_size
/=
1024
;
memory_size
/=
1024
;
if
(
memory_size
>
0
)
fprintf
(
stderr
,
" %zuGB"
,
memory_size
);
#if defined(HAVE_CF_INTERFACE)
fprintf
(
stderr
,
" Fortran"
);
#endif
...
...
src/getMemorySize.c
0 → 100644
View file @
44bce162
/*
* Author: David Robert Nadeau
* Site: http://NadeauSoftware.com/
* License: Creative Commons Attribution 3.0 Unported License
* http://creativecommons.org/licenses/by/3.0/deed.en_US
*/
#if defined(_WIN32)
#include
<Windows.h>
#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
#include
<unistd.h>
#include
<sys/types.h>
#include
<sys/param.h>
#if defined(BSD)
#include
<sys/sysctl.h>
#endif
#else
#error "Unable to define getMemorySize( ) for an unknown OS."
#endif
/**
* Returns the size of physical memory (RAM) in bytes.
*/
size_t
getMemorySize
(
void
)
{
#if defined(_WIN32) && (defined(__CYGWIN__) || defined(__CYGWIN32__))
/* Cygwin under Windows. ------------------------------------ */
/* New 64-bit MEMORYSTATUSEX isn't available. Use old 32.bit */
MEMORYSTATUS
status
;
status
.
dwLength
=
sizeof
(
status
);
GlobalMemoryStatus
(
&
status
);
return
(
size_t
)
status
.
dwTotalPhys
;
#elif defined(_WIN32)
/* Windows. ------------------------------------------------- */
/* Use new 64-bit MEMORYSTATUSEX, not old 32-bit MEMORYSTATUS */
MEMORYSTATUSEX
status
;
status
.
dwLength
=
sizeof
(
status
);
GlobalMemoryStatusEx
(
&
status
);
return
(
size_t
)
status
.
ullTotalPhys
;
#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
/* UNIX variants. ------------------------------------------- */
/* Prefer sysctl() over sysconf() except sysctl() HW_REALMEM and HW_PHYSMEM */
#if defined(CTL_HW) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM64))
int
mib
[
2
];
mib
[
0
]
=
CTL_HW
;
#if defined(HW_MEMSIZE)
mib
[
1
]
=
HW_MEMSIZE
;
/* OSX. --------------------- */
#elif defined(HW_PHYSMEM64)
mib
[
1
]
=
HW_PHYSMEM64
;
/* NetBSD, OpenBSD. --------- */
#endif
int64_t
size
=
0
;
/* 64-bit */
size_t
len
=
sizeof
(
size
);
if
(
sysctl
(
mib
,
2
,
&
size
,
&
len
,
NULL
,
0
)
==
0
)
return
(
size_t
)
size
;
return
0L
;
/* Failed? */
#elif defined(_SC_AIX_REALMEM)
/* AIX. ----------------------------------------------------- */
return
(
size_t
)
sysconf
(
_SC_AIX_REALMEM
)
*
(
size_t
)
1024L
;
#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE)
/* FreeBSD, Linux, OpenBSD, and Solaris. -------------------- */
return
(
size_t
)
sysconf
(
_SC_PHYS_PAGES
)
*
(
size_t
)
sysconf
(
_SC_PAGESIZE
);
#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGE_SIZE)
/* Legacy. -------------------------------------------------- */
return
(
size_t
)
sysconf
(
_SC_PHYS_PAGES
)
*
(
size_t
)
sysconf
(
_SC_PAGE_SIZE
);
#elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM))
/* DragonFly BSD, FreeBSD, NetBSD, OpenBSD, and OSX. -------- */
int
mib
[
2
];
mib
[
0
]
=
CTL_HW
;
#if defined(HW_REALMEM)
mib
[
1
]
=
HW_REALMEM
;
/* FreeBSD. ----------------- */
#elif defined(HW_PYSMEM)
mib
[
1
]
=
HW_PHYSMEM
;
/* Others. ------------------ */
#endif
unsigned
int
size
=
0
;
/* 32-bit */
size_t
len
=
sizeof
(
size
);
if
(
sysctl
(
mib
,
2
,
&
size
,
&
len
,
NULL
,
0
)
==
0
)
return
(
size_t
)
size
;
return
0L
;
/* Failed? */
#endif
/* sysctl and sysconf variants */
#else
return
0L
;
/* Unknown OS. */
#endif
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment