Defaults to 1, which prints frame count e.g. when reading trajectory
files. Set to 0 for quiet operation.
+``GMX_ENABLE_GPU_TIMING``
+ Enables GPU timings in the log file for CUDA. Note that CUDA timings
+ are incorrect with multiple streams, as happens with domain
+ decomposition or with both non-bondeds and PME on the GPU (this is
+ also the main reason why they are not turned on by default).
+
+``GMX_DISABLE_GPU_TIMING``
+ Disables GPU timings in the log file for OpenCL.
+
Debugging
---------
``GMX_PRINT_DEBUG_LINES``
Forces the use of twin-range cutoff kernel. Equivalent of
CUDA environment variable ``GMX_CUDA_NB_EWALD_TWINCUT``
-``GMX_DISABLE_OCL_TIMING``
- Disables timing for OpenCL operations
-
``GMX_OCL_FILE_PATH``
Use this parameter to force |Gromacs| to load the OpenCL
kernels from a custom location. Use it only if you want to
* TODO: PME could also try to pick up nice grid sizes (with factors of 2, 3, 5, 7).
*/
- pmeGPU->archSpecific->useTiming = (getenv("GMX_DISABLE_CUDA_TIMING") == nullptr) &&
- (getenv("GMX_DISABLE_GPU_TIMING") == nullptr);
- /* TODO: multiple CUDA streams on same GPU cause nonsense cudaEvent_t timings.
- * This should probably also check for gpuId exclusivity?
+ /* WARNING: CUDA timings are incorrect with multiple streams.
+ * This is the main reason why they are disabled by default.
*/
+ // TODO: Consider turning on by default when we can detect nr of streams.
+ pmeGPU->archSpecific->useTiming = (getenv("GMX_ENABLE_GPU_TIMING") != nullptr);
/* Creating a PME CUDA stream */
cudaError_t stat;
stat = cudaEventCreateWithFlags(&nb->misc_ops_and_local_H2D_done, cudaEventDisableTiming);
CU_RET_ERR(stat, "cudaEventCreate on misc_ops_and_local_H2D_done failed");
- /* CUDA timing disabled as event timers don't work:
- - with multiple streams = domain-decomposition;
- - when turned off by GMX_DISABLE_CUDA_TIMING/GMX_DISABLE_GPU_TIMING.
+ /* WARNING: CUDA timings are incorrect with multiple streams.
+ * This is the main reason why they are disabled by default.
*/
- nb->bDoTime = (!nb->bUseTwoStreams &&
- (getenv("GMX_DISABLE_CUDA_TIMING") == NULL) &&
- (getenv("GMX_DISABLE_GPU_TIMING") == NULL));
+ // TODO: Consider turning on by default when we can detect nr of streams.
+ nb->bDoTime = (getenv("GMX_ENABLE_GPU_TIMING") != NULL);
if (nb->bDoTime)
{
init_plist(nb->plist[eintLocal]);
- /* OpenCL timing disabled if GMX_DISABLE_OCL_TIMING is defined. */
- /* TODO deprecate the first env var in the 2017 release. */
- nb->bDoTime = (getenv("GMX_DISABLE_OCL_TIMING") == NULL &&
- getenv("GMX_DISABLE_GPU_TIMING") == NULL);
+ /* OpenCL timing disabled if GMX_DISABLE_GPU_TIMING is defined. */
+ nb->bDoTime = (getenv("GMX_DISABLE_GPU_TIMING") == NULL);
/* Create queues only after bDoTime has been initialized */
if (nb->bDoTime)