Prev Next omp_efficient

@(@\newcommand{\W}[1]{ \; #1 \; } \newcommand{\R}[1]{ {\rm #1} } \newcommand{\B}[1]{ {\bf #1} } \newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} } \newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} } \newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} } \newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }@)@
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_ptrnum_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.
Input File: cppad/utility/omp_alloc.hpp