#define LG_FREE_ALL ;
#include "LG_internal.h"
static bool LG_LAGr_Init_has_been_called = false ;
LAGRAPH_PUBLIC void LG_set_LAGr_Init_has_been_called (bool setting) ;
LAGRAPH_PUBLIC bool LG_get_LAGr_Init_has_been_called (void) ;
LAGRAPH_PUBLIC
void LG_set_LAGr_Init_has_been_called (bool setting)
{
LG_LAGr_Init_has_been_called = setting ;
}
LAGRAPH_PUBLIC
bool LG_get_LAGr_Init_has_been_called (void)
{
return (LG_LAGr_Init_has_been_called) ;
}
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_first_int8 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_first_int16 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_first_int32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_first_int64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_first_uint8 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_first_uint16 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_first_uint32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_first_uint64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_first_fp32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_first_fp64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_second_int8 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_second_int16 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_second_int32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_second_int64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_second_uint8 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_second_uint16 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_second_uint32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_second_uint64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_second_fp32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_second_fp64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_one_int8 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_one_int16 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_one_int32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_one_int64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_one_uint8 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_one_uint16 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_one_uint32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_one_uint64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_one_fp32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_plus_one_fp64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_bool = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_int8 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_int16 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_int32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_int64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_uint8 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_uint16 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_uint32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_uint64 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_fp32 = NULL ;
LAGRAPH_PUBLIC GrB_Semiring LAGraph_any_one_fp64 = NULL ;
LAGRAPH_PUBLIC
int LAGr_Init
(
GrB_Mode mode, void * (* user_malloc_function ) (size_t),
void * (* user_calloc_function ) (size_t, size_t),
void * (* user_realloc_function ) (void *, size_t),
void (* user_free_function ) (void *),
char *msg
)
{
LG_CLEAR_MSG ;
#if LAGRAPH_SUITESPARSE
if (!(mode == GxB_NONBLOCKING_GPU || mode == GxB_BLOCKING_GPU))
#endif
{
LG_ASSERT (user_malloc_function != NULL, GrB_NULL_POINTER) ;
LG_ASSERT (user_free_function != NULL, GrB_NULL_POINTER) ;
}
GrB_Info info ;
LG_ASSERT_MSG (!LG_get_LAGr_Init_has_been_called ( ), GrB_INVALID_VALUE,
"LAGr*_Init can only be called once") ;
#if LAGRAPH_SUITESPARSE
info = GxB_init (mode,
user_malloc_function,
user_calloc_function,
user_realloc_function,
user_free_function) ;
#else
info = GrB_init (mode) ;
#endif
LG_ASSERT_MSG (info == GrB_SUCCESS || info == GrB_INVALID_VALUE, info,
"failed to initialize GraphBLAS") ;
#undef LG_FREE_ALL
#define LG_FREE_ALL \
{ \
LAGraph_Finalize (msg) ; \
}
#if LAGRAPH_SUITESPARSE
GRB_TRY (GrB_Global_get_VOID (GrB_GLOBAL,
(void *) (&LAGraph_Malloc_function),
GxB_MALLOC_FUNCTION)) ;
GRB_TRY (GrB_Global_get_VOID (GrB_GLOBAL,
(void *) (&LAGraph_Calloc_function),
GxB_CALLOC_FUNCTION)) ;
GRB_TRY (GrB_Global_get_VOID (GrB_GLOBAL,
(void *) (&LAGraph_Realloc_function),
GxB_REALLOC_FUNCTION)) ;
GRB_TRY (GrB_Global_get_VOID (GrB_GLOBAL,
(void *) (&LAGraph_Free_function),
GxB_FREE_FUNCTION)) ;
#else
LAGraph_Malloc_function = user_malloc_function ;
LAGraph_Calloc_function = user_calloc_function ;
LAGraph_Realloc_function = user_realloc_function ;
LAGraph_Free_function = user_free_function ;
#endif
LG_nthreads_outer = 1 ; #ifdef _OPENMP
LG_nthreads_inner = omp_get_max_threads ( ) ; #else
LG_nthreads_inner = 1 ;
#endif
GRB_TRY (LG_SET_NTHREADS (LG_nthreads_inner)) ;
LG_Random_Init (msg) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_first_int8,
GrB_PLUS_MONOID_INT8 , GrB_FIRST_INT8 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_first_int16,
GrB_PLUS_MONOID_INT16 , GrB_FIRST_INT16 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_first_int32,
GrB_PLUS_MONOID_INT32 , GrB_FIRST_INT32 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_first_int64,
GrB_PLUS_MONOID_INT64 , GrB_FIRST_INT64 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_first_uint8,
GrB_PLUS_MONOID_UINT8 , GrB_FIRST_UINT8 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_first_uint16,
GrB_PLUS_MONOID_UINT16, GrB_FIRST_UINT16)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_first_uint32,
GrB_PLUS_MONOID_UINT32, GrB_FIRST_UINT32)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_first_uint64,
GrB_PLUS_MONOID_UINT64, GrB_FIRST_UINT64)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_first_fp32,
GrB_PLUS_MONOID_FP32 , GrB_FIRST_FP32 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_first_fp64,
GrB_PLUS_MONOID_FP64 , GrB_FIRST_FP64 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_second_int8,
GrB_PLUS_MONOID_INT8 , GrB_SECOND_INT8 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_second_int16,
GrB_PLUS_MONOID_INT16 , GrB_SECOND_INT16 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_second_int32,
GrB_PLUS_MONOID_INT32 , GrB_SECOND_INT32 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_second_int64,
GrB_PLUS_MONOID_INT64 , GrB_SECOND_INT64 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_second_uint8,
GrB_PLUS_MONOID_UINT8 , GrB_SECOND_UINT8 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_second_uint16,
GrB_PLUS_MONOID_UINT16, GrB_SECOND_UINT16)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_second_uint32,
GrB_PLUS_MONOID_UINT32, GrB_SECOND_UINT32)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_second_uint64,
GrB_PLUS_MONOID_UINT64, GrB_SECOND_UINT64)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_second_fp32,
GrB_PLUS_MONOID_FP32 , GrB_SECOND_FP32 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_second_fp64,
GrB_PLUS_MONOID_FP64 , GrB_SECOND_FP64 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_one_int8,
GrB_PLUS_MONOID_INT8 , GrB_ONEB_INT8 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_one_int16,
GrB_PLUS_MONOID_INT16 , GrB_ONEB_INT16 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_one_int32,
GrB_PLUS_MONOID_INT32 , GrB_ONEB_INT32 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_one_int64,
GrB_PLUS_MONOID_INT64 , GrB_ONEB_INT64 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_one_uint8,
GrB_PLUS_MONOID_UINT8 , GrB_ONEB_UINT8 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_one_uint16,
GrB_PLUS_MONOID_UINT16, GrB_ONEB_UINT16)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_one_uint32,
GrB_PLUS_MONOID_UINT32, GrB_ONEB_UINT32)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_one_uint64,
GrB_PLUS_MONOID_UINT64, GrB_ONEB_UINT64)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_one_fp32,
GrB_PLUS_MONOID_FP32 , GrB_ONEB_FP32 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_plus_one_fp64,
GrB_PLUS_MONOID_FP64 , GrB_ONEB_FP64 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_bool,
GrB_LOR_MONOID_BOOL , GrB_ONEB_BOOL )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_int8,
GrB_MIN_MONOID_INT8 , GrB_ONEB_INT8 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_int16,
GrB_MIN_MONOID_INT16 , GrB_ONEB_INT16 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_int32,
GrB_MIN_MONOID_INT32 , GrB_ONEB_INT32 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_int64,
GrB_MIN_MONOID_INT64 , GrB_ONEB_INT64 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_uint8,
GrB_MIN_MONOID_UINT8 , GrB_ONEB_UINT8 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_uint16,
GrB_MIN_MONOID_UINT16 , GrB_ONEB_UINT16)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_uint32,
GrB_MIN_MONOID_UINT32 , GrB_ONEB_UINT32)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_uint64,
GrB_MIN_MONOID_UINT64 , GrB_ONEB_UINT64)) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_fp32,
GrB_MIN_MONOID_FP32 , GrB_ONEB_FP32 )) ;
GRB_TRY (GrB_Semiring_new (&LAGraph_any_one_fp64,
GrB_MIN_MONOID_FP64 , GrB_ONEB_FP64 )) ;
LG_set_LAGr_Init_has_been_called (true) ;
return (GrB_SUCCESS) ;
}