NVIDIA® Nsight™ Development Platform, Visual Studio Edition 2.2 User Guide
Send Feedback
Display Driver
You must install the NVIDIA display driver that supports the NVIDIA Nsight tools. If you have an NVIDIA graphics card installed on your target machine, you likely already have an NVIDIA display driver; however, NVIDIA Nsight requires a specific version of the driver in order to function properly. From the NVIDIA web site, download and install the following display driver (or newer):
Driver Release 300, Release 301.42
See below for more release information about:
Graphics Inspector and Graphics Debugger
-G). assert, printf), the values of variables and registers in previous stack frames are now available. (13700) If multiple CUDA Info tool windows are open and one or more of them are hidden, the other tool window(s) will not refresh. Bringing the hidden windows to the foreground will workaround this issue. (17033)
__shared__ variables declared at function scope are showing in the Visual Studio Locals window. This can occur because the compiler may erroneously present all function-scoped __shared__ variables as global variables in the debug symbols. (15122)__global__ void kernel(void)
{__shared__ int ss;
if (threadIdx.x == 0)
ss = 0;
}
You must enable Memory Checker before launching a process, and cannot change the setting while debugging. (14463)
On Fermi GPUs, after an MMU fault, the CUDA Debugger will not resume normally. The application may still be terminated. (13808)
With CUDA 4.0 Toolkit, function pointers show as type void* in the locals, watch, and Warp Watch tool windows.
With CUDA 4.1 and 4.2 Toolkit, function pointers show as type __device__ func* in the locals, watch, and Warp Watch tool windows. The value contains the function address and mangled function name. (11786)
For example: 0x0001ba80 _Z11funcPtrTestiPcf __device__ func* __local__
If you experience hangs or TDRs while locally debugging CUDA on a single GPU (or using the Software Preemption debugging mode in general), try disabling Aero and WPF acceleration on the target machine.
x = cos() + sin()
Fixed some instances of not seeing the geometry preview and now properly declare which situations are not supported (like DrawAuto).
Better handling of out of memory situations when profiling or saving a capture to disk.
Performance improvements to the profiler, reducing the number of passes needed to calculate the bottleneck and utilization results.
NVIDIA Nsight now handles applications that spawn other applications (like an external compile). These processes are ignored and should not hang the main process. This also means that NVIDIA Nsight is not compatible with applications that use a launcher. Disable your launcher.exe and instead have NVIDIA Nsight launch engine.exe to work with this type of setup.
Improved support and stability when running on non-NVIDIA GPUs or in a mixed vendor system.
Fixed an issue where the geometry preview was not updated when changing the draw call from the top scrub bar. (12369)
The draw call page can be changed while it is loading with no impact on stability. (12383)
AnyCPU configuration. There are two DX shader compiler bugs that may cause incorrect stepping behavior.
NVIDIA Nsight does not support debugging managed applications built with the AnyCpu configuration. The target application must be built using either the Win32 or x64 configurations.
NVIDIA Nsight for Graphics uses a setting in the driver that enables instrumentation. If the application does not close cleanly, this setting can remain enabled, which can cause some additional CPU overhead. The Nsight Monitor has an option to disable this, in case you see any issues running your application outside of Nsight. (16936, 16962)
For drivers prior to R295, there is a performance bug in the pixel pipeline when running your application in NVIDIA Nsight. This will lead to higher values in the Frame Profiler for bottleneck and utilization, especially in the shader, texture, blending, and frame buffer units. This issue will be fixed in the R295 driver.
There are known issues in the R290 series of drivers that can cause the shader debugger to not hit a break point and/or cause corruption in the rendering when breakpoints are set. These have been fixed in the R295 driver and have not been seen in the R285 drivers. If you encounter these issues, please change drivers. (15602)
HLSL code cannot contain any non-ASCII characters. Any character with a character code >= 128 is not supported. (14760)
VS tracepoints, enabled by the "When Hit” breakpoint option, do not work as expected when the "Continue Execution" option is also set. Only the first hit will be reported and the target application will hang afterwards. You will need to select Debug > Stop Debugging to resume the debug target. (10904)
D3D10_CREATE_DEVICE_SWITCH_TO_REF constant is used in device creation.
Add support for DirectX 9 Trace.
Significantly improved performance for kernel profiling.
Ability to skip the first N kernels that will be executed and then profile the next X kernels.
Opening a new activity no longer fails when the default activity type is set to Profile. (16935)
On 64-bit systems, the stack trace in which only the stack frame pointers were reported has now been resolved. (16924)
Tracing sessions involving managed processes no longer shows error dialogs on the target system. (16964)
Manually started captures of CUDA API trace no longer fails to load properly. (16922)
Summary sections now display regardless of how much GPU data is captured. (16961)
Applications using CUDA-DX-interop no longer fail when traced with the DX provider enabled. (16842)
The activity page no longer misses the OpenGL sub-option for capturing GPU frames. (16977)
Analysis Activity Known Issues
Tracing the following APIs is not supported in managed processes:
NVTX
OpenCL
Direct3D
OpenGL
Cg
Launching a managed
.exefor tracing with any of the aforementioned APIs enabled will result in an "Access Denied" pop-up message, and the analysis session will not start.
In Trace Process Tree mode, instrumentation for tracing the aforementioned APIs can only propagate to native child processes. If a managed child process is launched, neither it nor any child process it launches (managed or native) can be instrumented by NVIDIA Nsight. The analysis session will continue unaffected, and the user will not be notified of the problem; the report will not contain data from managed processes and their children.
System and CUDA tracing is fully supported in managed processes, and in Trace Process Tree mode, tracing support propagates to all child processes (native or managed).
Managed processes are fully supported in the Profile CUDA modes.
- The stop collection timer is implemented in Visual Studio. The latency to communicate to the monitor and application can result in a longer duration than requested.
- CPU Thread Trace
If the Windows Kernel Event Provider is already in use when a new capture session is launched, the collected data may produce unexpected results. For best results ensure that no other kernel providers are running during an analysis session.- CUDA Trace
- CUDA trace does not trace graphics interop commands.
- CUDA Runtime Trace does not capture the <<< >>> kernel launch syntax. Instead, the corresponding CUDA Runtime API calls are reported. Some of the CUDA C Driver API calls that are executed as part of the CUDA Runtime calls may report errors, such as CUDA_ERROR_INVALID_CONTEXT, even though the usage of the CUDA Runtime API is valid. (6745)
- When collecting trace information about CUDA kernel and memory transfers, sometimes the report file will not contain information about the launches and memory copies. If an analysis report does not contain this information, it is likely that the collection time was not sufficient. This can happen because only certain events trigger the collection of information about CUDA launches and memory copies. the triggering events include:
Remedy: In your capture does not report any kernel launch or memory transfers, either increase the collection time to assure that the data is flushed while still capturing and make sure your application properly cleans up all CUDA resources, such as contexts, modules, etc. In the report still does not report any kernel or memcpy information try forcing an event flush by adding a call to
- an internal synchronize occurs,
- a call to
cuCtxSynchronize()/cudaThreadSynchronize(),- a call to
cuCtxDestroy()/cudaThreadExit(),- a call to
cuModuleLoad()/cuModuleDestroy().cuCtxSynchronize()to your code (we recommend removing that call for the release version of your build). (4812)- CUDA Profiler
- On Tesla GPUs, branch counters include __syncthreads().
- Profile Trigger increments by 1 per warp not by 1 per active thread.
- OpenCL
- The end timestamp can sometimes be recorded significantly after the completion of a command. If this occurs, adding a clFlush after specific command will fix the timestamp.
- The start/end range for memory read and write commands includes both host and device time. CUDA start/end range only includes device time.
- Viewing OpenCL Source or Binary code from the OpenCL Programming Builds or OpenCL Program Summary creates a temporary file in %TMP%. The temporary file is not deleted when the file is closed.
- OpenCL reports occasionally do not contain device commands. This can occur if the OpenCL context/queue is not released or less than 512 events occurred during a capture.
- DirectX/OpenGL Trace
- Graphics workload information, such as draw calls and dispatches, are output in groups of 16384 workload events. As a consequence, a report will not contain any graphics workload information if an insufficient number of draw calls occurred during a capture. Increasing the capture duration will help to work around this limitation.
- Some applications, such as Chrome, run in a sandbox environment. The effects on NVIDIA Nsight of such a sandbox are hard to predict, so if having trouble, a user should read the documentation for the target application, and disable any sandbox when possible. For Chrome, the applicable launch flag is
-no-sandbox. (16426)- When you are running analysis for DX apps on a multi-GPU system, you could see a hang. When running frame timings for DX apps on a multi-GPU system, you could see a timeout waiting for the results. One possible solution would be to switch the monitor from the GPU that is currently connected to the other GPU. Failing that, you should run analysis with only one GPU plugged into the system.
Analysis Report Known Issues
- If two different host computers use the same remote target machine, it is possible that the 2 machines could generate the same report directory. This would be confusing because reports from the 2 machines would be mixed together. Although unlikely, this can occur when 2 different machines analyze an application of the same name. The NVIDIA Nsight analysis tools on the host machine create the directory name based on the name of the application.
Timeline Known Issues
- There can be an error of approximately 1 microsecond between CPU events and GPU events.
- Percentages displayed in the row labels and tool tips are based upon the full capture time.
- The mouse forward and back buttons cannot be used to navigate the report page system.
- CTRL+- toggles to the previous document instead of Zooming Out.
- CTRL + SHIFT + 0 for resetting a row’s height to the default might not work on Vista systems. For more information, see http://support.microsoft.com/kb/967893.
- Double-clicking on a row containing a line/area graph that also has children will expand/collapse the row as opposed to increasing the height to 66% of the view.
- Using VNC (virtual network computing) software to remotely open a Timeline Report can cause Visual Studio to crash. (7157)
| NVIDIA® Nsight™ Development Platform, Visual Studio Edition User Guide Rev. 2.2.120522 ©2009-2012. NVIDIA Corporation. All Rights Reserved. | |