multi_thread

View page source

Using CppAD in a Multi-Threading Environment

Purpose

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

CPPAD_MAX_NUM_THREADS

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.

Parallel AD

One must first call thread_alloc::parallel_setup and then call parallel_ad before using AD types in parallel execution mode. In addition, see Other Initialization .

Same Thread

Some operations must be preformed by the same thread: ADFun , Independent , Dependent .

Parallel Prohibited

The following routine cannot be called in parallel mode: ErrorHandler constructor .

Contents