Data Type

Integer

Default Value

IMMPCT, ITRPCT, ITMPCT=1, but you should set your own value in the License File.
CSAFE=99

Description

These parameters control how the work is divided between the CPU and GPU processors. The values are expressed as an integer percentage of the amount of work done by the CPUs, ranging from 0 to 100 as follows:

  • 0, Do not use the CPUs.
    Perform all work using the GPUs only.
  • 1-99, Use the CPUs for the specified percentage of work.
    The remaining work is performed by the GPUs.
  • 100, Perform all the work with the CPUs.
    The GPUs do not do any work.

The following FMS Parameters control the CPU / GPU work split during different parts of the computation.

FMS Parameters
Parameter Type of Computation
IMMPCT Matrix Multiply
ITMPCT Triangle Solve
ITRPCT Triangle Multiply
Symmetric Only

A nonzero value for a Parameter will cause the workload of the CPUs to automatically adjust so the time spent by the CPUs will be CSAFE percent of the time spent by the GPUs.

Since the GPUs are more powerful than the CPU's, excees work added to the CPUs may significantly degrade performance. The CSAFE Parameter provides for a safe margin so the CPU time will remain below the GPU time.

Even when the CPUs are not performing computation they play an important role in transferring data from main memory to and from the GPUs and disks. If the CPUs become oversubscribed, these transfers may be delayed, degrading overall performance. For large GPU systems the best values for immpct, itrpct and itmpct may be close to 0.

The FMS Parameter GPUPR contains an option (+8) to print how the workload is adjusted during processing. This split does not account for any loss in performance due to oversubscribing the CPUs.

While FMS will eventually achieve a balanced between CPU and GPU work for your machine and problem, improved performance may be achieved by changing the default of these Parameters to a value closer to your configuration and problem. After some testing you should set the correct default values in the License File. The Matrix Warrior Parameters WEB page will offer suggestions on how these values should be set.

Using Matrix Warrior

The Performance page in Matrix Warrior shows how these parameters are adjusted.

Component Performance (Gflops)
Routine All 8
CPUs
GPU 1
Matrix Multiply 446 283 198
CPU(57%)
Triangle Solve 440 273 190
CPU(53%)
Diagonal Factor 160 25 166
Triangle Multiply 369 249 155
CPU(54%)
GPU model = NVIDIA GeForce RTX 3060 Laptop GPU

Under Component Performance (Gflops), the current CPU percentage of immpct, itrpct and itmpct are listed. These values change as Matrix Warrior runs.

Time (Sec.)
Routine All CPUs GPU 1
Matrix Multiply 208 188 199
Triangle Solve 80 75 77
Diagonal Factor 29 0 29
Triangle Multiply 93 86 89
Total Compute 409 349 394
I/O wait 4
HTML 3
Other 8
Overall 425

The Time (Sec.) table shows the time spent by the CPUs and GPUs. A good value of these parameters will have the CPU time just less than the GPU time.

The value of these parameters will depend on the relative performance of the CPUs and GPUs. In this laptop example there is only 1 GPU and 8 CPUs. For powerful servers with 8 high-performance GPUs, the values may be 0.

The Parameters page contains a table of suggested values if they differ from what is in the license file:

Suggested Tuning Values
Parameter Current Value Suggested Value
IMMPCT 60 57
ITRPCT 60 53
ITMPCT 60 54