The OPTMODEL procedure can take advantage of the multiple CPUs that are available in many computers. PROC OPTMODEL automatically uses multithreaded execution to divide problem generation among the multiple CPUs of the computer that is running the procedure. Hessian and Jacobian matrix evaluation is automatically parallelized across threads of execution on multiple CPUs. The COFOR statement enables solvers to concurrently execute in background threads on multiple CPUs, overlapping with PROC OPTMODEL statement processing. Parallel execution can decrease the amount of clock time required to perform a task, although the total CPU time required might increase.
If you use the PERFORMANCE statement and specify an NTHREADS= option, and the statement does not request distributed computing, then threading in the OPTMODEL procedure is controlled by the statement’s NTHREADS= option. Otherwise, threading in the OPTMODEL procedure is controlled by the following SAS system options:
Good performance is usually obtained with the default option settings (THREADS and CPUCOUNT=ACTUAL). See the option descriptions in SAS System Options: Reference for more details.
The PERFORMANCE statement and the SAS system options set the maximum number of threads. The number of threads that PROC OPTMODEL actually uses depends on the characteristics of the problem that is being solved. In particular, threading is not used when the problem is simple enough that threading offers no advantage.
The COFOR statement and certain solver features can use distributed computing when the PERFORMANCE statement specifies a distributed computing environment. Distributed computing provides the most benefit when a computational process can be structured so that it includes a large number of nontrivial subprocesses that can be executed independently.
Note: Distributed computing mode requires SAS High-Performance Optimization.