README for the NVIDIA CUDA Debugger * SUMMARY * CUDA-GDB is a version of GDB (The GNU Debugger) extended to support debugging a CUDA program. The guiding principle behind CUDA-GDB is to present CUDA as an extension of the host processor and thus allowing a seamless debugging session. * GPU DEBUGGING (EXTENSIONS) * Commands specific to CUDA-GDB: thread - Display the current host and CUDA thread of focus. thread <<<(TX,TY,TZ)>>> - Switch to the CUDA thread at specified coordinates. thread <<<(BX,BY),(TX,TY,TZ)>>> - Switch to the CUDA block and thread at specified coordinates. info cuda threads - Display a summary of all CUDA threads that are currently resident on the GPU. info cuda threads all - Display a list of each CUDA thread that is currently resident on the GPU. info cuda state - Display information about the current CUDA state. * Semantics of the next and step commands * Execution is advanced at the warp-level; all threads in the same warp as the current CUDA thread will proceed. A special case is stepping the thread barrier call, __syncthreads(). In this case, an implicit breakpoint is set immediately after the barrier and all threads are continued to this point. * CUDA-GDB INIT FILE * CUDA-GDB supports an initialization file (~/.cuda-gdbinit) for automatic startup commands. * SUPPORTED PLATFORMS * OS: Red Hat Enterprise 5.X Linux, 32-bit GPUs: All CUDA-capable GPUs with the exception of GeForce 8800 GTS, GeForce 8800 GTX, GeForce 8800 Ultra, Quadro FX 4600, and Quadro FX 5600. * COMPILATION REQUIREMENTS * Only applications that are compiled with the "-g -G" option pair to nvcc are capable of being properly debugged in CUDA-GDB. * KNOWN ISSUES * * Scope shadowing is not supported. This means that if a variable is introduced in an inner scope that has the same name as a variable in an outer scope, only the outer scope's value can be seen. * 64-bit applications are not supported. * The debugger enforces blocking kernel launches. * Device memory (allocated via cudaMalloc()) is not visible outside of the kernel function. * Host memory allocated via cudaMallocHost() is not visible in CUDA-GDB. * Multi-gpu applications are not supported. * Not all illegal program behavior can be caught in the debugger, such as out-of-bounds memory accesses or divide-by-zero situations. * It is not currently possible to step over a subroutine. * Debugging using the device driver API is not supported. * CUDA-GDB SOURCES * * The GDB source files are controlled under terms of the GPL license. Released versions are located via anonymous ftp at download.nvidia.com in the CUDAOpen64 directory. * ADDITIONAL DOCUMENTATION * * For additional information regarding CUDA-GDB, please consult the CUDA-GDB User Manual available at the CUDA Zone download page. Notice ALL NVIDIA DESIGN SPECIFICATIONS, REFERENCE BOARDS, FILES, DRAWINGS, DIAGNOSTICS, LISTS, AND OTHER DOCUMENTS (TOGETHER AND SEPARATELY, "MATERIALS") ARE BEING PROVIDED "AS IS." NVIDIA MAKES NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. Information furnished is believed to be accurate and reliable. However, NVIDIA Corporation assumes no responsibility for the consequences of use of such information or for any infringement of patents or other rights of third parties that may result from its use. No license is granted by implication or otherwise under any patent or patent rights of NVIDIA Corporation. Specifications mentioned in this publication are subject to change without notice. This publication supersedes and replaces all information previously supplied. NVIDIA Corporation products are not authorized for use as critical components in life support devices or systems without express written approval of NVIDIA Corporation. Trademarks NVIDIA, the NVIDIA logo, GeForce, Tesla, and Quadro are trademarks or registered trademarks of NVIDIA Corporation. Other company and product names may be trademarks of the respective companies with which they are associated. Copyright © 2007-2008 NVIDIA Corporation. All rights reserved.