omp_efficient

View page source

Check If A Memory Allocation is Efficient for Another Use

Removed

This function has been removed because speed tests seem to indicate it is just as fast, or faster, to free and then reallocate the memory.

Syntax

# include <cppad/utility/omp_alloc.hpp>

flag = omp_alloc::efficient ( v_ptr , num_bytes )

Purpose

Check if memory that is currently in use is an efficient allocation for a specified number of bytes.

v_ptr

This argument has prototype

const void * v_ptr

. It must be a pointer to memory that is currently in use; i.e. obtained by a previous call to omp_get_memory and not yet returned.

num_bytes

This argument has prototype

size_t num_bytes

It specifies the number of bytes of the memory allocated by v_ptr that we want to use.

flag

The return value has prototype

bool flag

It is true, a call to get_memory with min_bytes equal to num_bytes would result in a value for cap_bytes that is the same as when v_ptr was returned by get_memory ; i.e., v_ptr is an efficient memory block for num_bytes bytes of information.

Thread

Either the current thread must be the same as during the corresponding call to omp_get_memory , or the current execution mode must be sequential (not parallel ).

NDEBUG

If NDEBUG is defined, v_ptr is not checked (this is faster). Otherwise, a list of in use pointers is searched to make sure that v_ptr is in the list.