//------------------------------------------------------------------------------ // GB_memory.h: memory allocation //------------------------------------------------------------------------------ // SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 //------------------------------------------------------------------------------ #ifndef GB_MEMORY_H #define GB_MEMORY_H //------------------------------------------------------------------------------ // memory management //------------------------------------------------------------------------------ void GB_memoryUsage // count # allocated blocks and their sizes ( int64_t *nallocs, // # of allocated memory blocks size_t *mem_deep, // # of bytes in blocks owned by this matrix size_t *mem_shallow, // # of bytes in blocks owned by another matrix const GrB_Matrix A, // matrix to query bool count_hyper_hash // if true, include A->Y ) ; // See GB_callbacks.h: // GB_CALLBACK_MALLOC_MEMORY_PROTO (GB_malloc_memory) ; // GB_CALLBACK_FREE_MEMORY_PROTO (GB_free_memory) ; // GB_CALLBACK_MEMSET_PROTO (GB_memset) ; void *GB_calloc_memory // pointer to allocated block of memory ( size_t nitems, // number of items to allocate size_t size_of_item, // sizeof each item // output size_t *size_allocated // # of bytes actually allocated ) ; void *GB_realloc_memory // pointer to reallocated block of memory, or // to original block if the realloc failed. ( size_t nitems_new, // new number of items in the object size_t size_of_item, // sizeof each item // input/output void *p, // old object to reallocate // output size_t *size_allocated, // # of bytes actually allocated bool *ok // true if successful, false otherwise ) ; void *GB_xalloc_memory // return the newly-allocated space ( // input bool use_calloc, // if true, use calloc bool iso, // if true, only allocate a single entry int64_t n, // # of entries to allocate if non iso size_t type_size, // size of each entry // output size_t *size // resulting size ) ; //------------------------------------------------------------------------------ // parallel memcpy and memset //------------------------------------------------------------------------------ void GB_memcpy // parallel memcpy ( void *dest, // destination const void *src, // source size_t n, // # of bytes to copy int nthreads // # of threads to use ) ; #endif