Preferences — Performance
CPU/GPU performance strategy. GPU devices does not working totally separate from CPU. At least one CPU thread is active for each GPU core providing input data, GPU kernel synchronization and data post procession. Waiting for GPU kernel completion is not a very resource consuming task but it still counts. For super fast GPUs missing exact moment when GPU kernel finished its job by just several milliseconds can ends in tens of percents performance drops. So for this situation we'll want to pull GPU status as many times as possible even meaning that one CPU core will be unavailable to "computations" tasks. For slow GPUs, however, we may want to use all CPU cores to computations as well thus sharing "computations" core(s) with GPU kernel synchronization cores (as missing several milliseconds here won't affect performance that much).
Several strategies are available:
- Reserve at least one thread for each GPU. Default and recommended value. For data synchronizations and validations with GPU at least one CPU thread will be allocated.
- Don't use CPU threads when possible. Good value for system with fast GPU (or even several ones). All CPU resources will be allocated to support GPU(s).
- Use maximum number of CPU threads. GPU synchronization thread(s) will be sharing time with computational threads (which may leads to GPU thread(s) performance drop).
- Don't use GPU threads. Quickly disable all GPU(s). Made for test purposes and overwrites GPU Configuration tab, so you don't need to uncheck all GPUs there.
Application's priority. You are able to determine the number of system resources (mostly the processor time) used by the program during the operation:
- normal – the application will get the equal number of resources in relation to other applications, operating in the system;
- idle – the application will use all free resources of the system, with the variable value. The recommended mode;
- high – the application will use the most part of the resources of the system – the most efficient mode for the program. However, other programs, launched in the system, can operate with the significant delay in the performance.
Maximum number of CPU threads. The program automatically determines the number of processor cores and creates the corresponding number of threads. That can also be adjusted manually. This value defines only number of "computational" CPU threads not GPU synchronization ones.