Data Type
IntegerDefault 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.
| 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.
| 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.
| 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:
| Parameter | Current Value | Suggested Value |
|---|---|---|
| IMMPCT | 60 | 57 |
| ITRPCT | 60 | 53 |
| ITMPCT | 60 | 54 |