
Purpose
Extra steps and care must be taken to use CppAD in parallel execution mode. This section collects this information in one place.

The value CPPAD_MAX_NUM_THREADS is an absolute maximum for the number of threads that CppAD should support. If this preprocessor symbol is defined before including any CppAD header files, it must be an integer greater than or equal to one. Otherwise, cppad_max_num_threads is used to define this preprocessor symbol. Note that the minimum allowable value for cppad_max_num_threads is 4; i.e., you can only get smaller values for CPPAD_MAX_NUM_THREADS by defining it before including the CppAD header files.

parallel_setup
Using any of the following routines in a multi-threading environment requires that thread_alloc::parallel_setup has been completed: CppAD::vector , CheckSimpleVector , CheckNumericType , parallel_ad .

hold_memory
Memory allocation should be much faster after calling hold_memory with value equal to true. This may even be true if there is only one thread.

One must first call thread_alloc::parallel_setup and then call parallel_ad before using AD types in parallel execution mode.

Initialization
The following routines must be called at least once before being used in parallel mode: CheckSimpleVector , CheckNumericType , discrete functions , Rosen34 , Runge45 .