Open jfowkes opened 11 months ago
Looking into these defines in more detail we have the following.
These defines are currently used by the SPRAL codebase and are required:
HAVE_HWLOC -- used to detect NUMA regions
SPRAL_HAVE_METIS_H -- used to define METIS5 32bit/64bit index types
SIZEOF_IDX_T -- used to define METIS5 32bit/64bit index types
HAVE_NVCC -- used to build CUDA kernels
HAVE_SCHED_GETCPU -- used to check if sched_getcpu() can be used
These defines are currently used in the SPRAL codebase for profiling/analysis:
ANALDBG -- enables debugging of SSIDS analyse phase
HAVE_GTG -- the GTG library used for profiling
PROFILE -- enables profiling using the GTG library
The remaining defines are automatically generated by autotools but not used by SPRAL.
@amontoison for meson we only really need the first five to be defined.
Also after testing the SPRAL_HAVE_METIS_H
set by spral_metis.m4
macro only detects metis.h
if --with-metis-inc-dir=/path/to/metis.h
is passed to configure
. In particular this means that 64bit integer support for METIS5 does not currently work unless this option is specified (SPRAL defaults to 32bit). See #136 for details.
The current autotools based build system generates a
config.h
with defines based on the dependencies and headers available on a user's system. The thing is, a lot of these are almost always present and it seems pointless to have defines that work around them.Here is an example generated
config.h
:Ideally we should be able to remove a lot of these from the codebase with no adverse effects.