CUDA error: profiler not initialized (cudaErrorProfilerNotInitialized)
ID: cuda/profiler-not-initialized
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 12 | active | — | — | — |
Root Cause
The CUDA profiler was not properly initialized before profiling API calls were made. This occurs when calling cudaProfilerStop without a prior cudaProfilerStart, when CUPTI (CUDA Profiling Tools Interface) fails to initialize due to missing libraries or insufficient permissions, or when Nsight Systems/Compute cannot attach to the process. On newer Linux kernels, the perf_event_paranoid setting may block profiling.
genericWorkarounds
-
90% success Set perf_event_paranoid and ensure CUPTI libraries are accessible
On Linux, set: echo 2 | sudo tee /proc/sys/kernel/perf_event_paranoid (or 1 for more access). For rootless profiling in containers, add --cap-add SYS_ADMIN or --privileged. Ensure libcupti.so is in LD_LIBRARY_PATH: export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH. Verify: ldconfig -p | grep cupti.
-
92% success Launch the application through the profiler tool instead of using the programmatic API
Use: nsys profile --trace=cuda,nvtx ./your_app for Nsight Systems, or: ncu --set full ./your_app for Nsight Compute. These tools handle profiler initialization automatically. For programmatic control, wrap profiling regions with nvtxRangePush/Pop instead of cudaProfilerStart/Stop, and use nsys's --capture-range=nvtx flag.
Dead Ends
Common approaches that don't work:
-
Calling cudaProfilerStart/Stop without launching the application through a profiler
85% fail
cudaProfilerStart/Stop are designed to delimit profiling regions when the application is launched under a profiler (nsys, ncu). Without an attached profiler, these calls may return cudaErrorProfilerNotInitialized. They do not themselves enable profiling — they only control when an already-attached profiler collects data.
-
Using an old version of Nsight Systems/Compute with a newer CUDA version
80% fail
The profiler must support the CUDA version installed. Nsight tools and CUPTI have strict version coupling. Using Nsight Systems 2022.x with CUDA 12.x will fail to initialize the profiler due to CUPTI API version mismatch.