\(\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}} }\)
omp_efficient¶
View page sourceCheck 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.