PERFORMANCE Statement

PERFORMANCE <performance-options> ;

The PERFORMANCE statement is available in the OPTMODEL, OPTLP, OPTMILP, and OPTQP procedures. This statement can be used to control the parallel execution of multithreaded features such as the concurrent LP algorithm and the OPTMILP option tuner. For an example that demonstrates the use of the PERFORMANCE statement in the OPTMODEL procedure, see Example 9.5 in Chapter 9: The Nonlinear Programming Solver.

The PERFORMANCE statement is available in both multithreaded and distributed computing environments. This section focuses on the multithreaded computing environment. For information about the PERFORMANCE statement in a distributed computing environment, see Chapter 3: Shared Concepts and Topics in Base SAS 9.4 Procedures Guide: High-Performance Procedures, Second Edition.

Note: Distributed computing mode requires SAS High-Performance Optimization.

The PERFORMANCE statement enables you to control the number of threads used and the output of the ODS table that reports procedure timing. When you specify the PERFORMANCE statement, the PerformanceInfo ODS table is produced. This table lists performance characteristics such as execution mode and number of threads.

You can specify the following performance-options in the PERFORMANCE statement:

DETAILS

requests that the procedure produce the Timing ODS table. This table shows a breakdown of the time used in each step of the procedure.

NTHREADS=number | CPUCOUNT

specifies the number of threads that a procedure can use. It overrides the SAS system option THREADS | NOTHREADS. The value of number can be any integer between 1 and 256 inclusive. The default value is CPUCOUNT, which sets the thread count to the number that is determined by the SAS system option CPUCOUNT=.

Setting the NTHREADS= option to a number greater than the actual number of available cores might result in reduced performance. Specifying a high NTHREADS= value does not guarantee shorter solution time; the actual change in solution time depends on the computing hardware and the scalability of the underlying algorithms in the specified procedure. In some circumstances, a procedure might use fewer threads than the specified value of the NTHREADS= option because the procedure’s internal algorithms have determined that a smaller number is preferable.

PARALLELMODE=number | string

specifies the parallel processing mode. This mode determines the solution results that are obtained from running the same model with the same option values on the same platform multiple times.

The values of number and the corresponding values of string are listed in Table 4.1.

Table 4.1: Values for PARALLELMODE= Option

number

string

Description

0

DETERMINISTIC

Requires algorithms to produce the same results every time.

1

NONDETERMINISTIC

Permits algorithms to produce different solution results. This mode requires less synchronization and might attain better performance than DETERMINISTIC mode.


Some procedures support only one mode; the modes that a procedure supports are detailed in its documentation.