NVIDIA GPU Management Guide
NVIDIA GPU Management Guide
NAME
        nvidia−smi − NVIDIA System Management Interface program
SYNOPSIS
        nvidia-smi [OPTION1 [ARG1]] [OPTION2 [ARG2]] ...
DESCRIPTION
        nvidia-smi (also NVSMI) provides monitoring and management capabilities for each of NVIDIA's Tesla,
        Quadro, GRID and GeForce devices from Fermi and higher architecture families. GeForce Titan series
        devices are supported for most functions with very limited information provided for the remainder of the
        Geforce brand. NVSMI is a cross platform tool that supports all standard NVIDIA driver-supported Linux
        distros, as well as 64bit versions of Windows starting with Windows Server 2008 R2. Metrics can be con-
        sumed directly by users via stdout, or provided by file via CSV and XML formats for scripting purposes.
        Note that much of the functionality of NVSMI is provided by the underlying NVML C-based library. See
        the NVIDIA developer website link below for more information about NVML. NVML-based python bind-
        ings are also available.
        The output of NVSMI is not guaranteed to be backwards compatible. However, both NVML and the
        Python bindings are backwards compatible, and should be the first choice when writing any tools that must
        be maintained across NVIDIA driver releases.
        NVML SDK: http://developer.nvidia.com/nvidia-management-library-nvml/
        Python bindings: http://pypi.python.org/pypi/nvidia-ml-py/
OPTIONS
   GENERAL OPTIONS
   −h, −−help
        Print usage information and exit.
   SUMMARY OPTIONS
   −L, −−list−gpus
        List each of the NVIDIA GPUs in the system, along with their UUIDs.
   QUERY OPTIONS
   −q, −−query
        Display GPU or Unit info. Displayed info includes all data listed in the (GPU ATTRIBUTES) or (UNIT
        ATTRIBUTES) sections of this document. Some devices and/or environments don't support all possible
        information. Any unsupported data is indicated by a "N/A" in the output. By default information for all
        available GPUs or Units is displayed. Use the −i option to restrict the output to a single GPU or Unit.
   [plus optional]
   −u, −−unit
        Display Unit data instead of GPU data. Unit data is only available for NVIDIA S−class Tesla enclosures.
   −i, −−id=ID
        Display data for a single specified GPU or Unit. The specified id may be the GPU/Unit's 0−based index in
        the natural enumeration returned by the driver, the GPU's board serial number, the GPU's UUID, or the
        GPU's PCI bus ID (as domain:bus:device.function in hex). It is recommended that users desiring consis-
        tency use either UUID or PCI bus ID, since device enumeration ordering is not guaranteed to be consistent
        between reboots and board serial number might be shared between multiple GPUs on the same board.
   −f FILE, −−filename=FILE
        Redirect query output to the specified file in place of the default stdout. The specified file will be overwrit-
        ten.
   −x, −−xml−format
        Produce XML output in place of the default human−readable format. Both GPU and Unit query outputs
        conform to corresponding DTDs. These are available via the −−dtd flag.
   −−dtd
       Use with −x. Embed the DTD in the XML output.
   −−debug=FILE
       Produces an encrypted debug log for use in submission of bugs back to NVIDIA.
   −d TYPE, −−display=TYPE
       Display only selected information: MEMORY, UTILIZATION, ECC, TEMPERATURE, POWER,
       CLOCK, COMPUTE, PIDS, PERFORMANCE, SUPPORTED_CLOCKS, PAGE_RETIREMENT,
       ACCOUNTING Flags can be combined with comma e.g. "MEMORY,ECC". Sampling data with max,
       min and avg is also returned for POWER, UTILIZATION and CLOCK display types. Doesn't work with
       -u/--unit or -x/--xml-format flags.
   −l SEC, −−loop=SEC
        Continuously report query data at the specified interval, rather than the default of just once. The applica-
        tion will sleep in−between queries. Note that on Linux ECC error or XID error events will print out during
        the sleep period if the -x flag was not specified. Pressing Ctrl+C at any time will abort the loop, which will
        otherwise run indefinitely. If no argument is specified for the −l form a default interval of 5 seconds is
        used.
   [one of]
   −−query−gpu=
        Information about GPU. Pass comma separated list of properties you want to query.                           e.g.
        −−query−gpu=pci.bus_id,persistence_mode. Call −−help−query−gpu for more info.
   −−query−supported−clocks=
       List of supported clocks. Call −−help−query−supported−clocks for more info.
   −−query−compute−apps=
       List of currently active compute processes. Call −−help−query−compute−apps for more info.
   −−query−accounted−apps=
       List of accounted compute processes. Call −−help−query−accounted−apps for more info.
   −−query−retired−pages=
       List of GPU device memory pages that have been retired. Call −−help−query−retired−pages for more info.
   [mandatory]
   −−format=
       Comma separated list of format options:
        •        csv - comma separated values (MANDATORY)
        •        noheader - skip first line with column headers
        •        nounits - don’t print units for numerical values
   −f FILE, −−filename=FILE
        Redirect query output to the specified file in place of the default stdout. The specified file will be overwrit-
        ten.
   −l SEC, −−loop=SEC
        Continuously report query data at the specified interval, rather than the default of just once. The applica-
        tion will sleep in−between queries. Note that on Linux ECC error or XID error events will print out during
        the sleep period if the -x flag was not specified. Pressing Ctrl+C at any time will abort the loop, which will
        otherwise run indefinitely. If no argument is specified for the −l form a default interval of 5 seconds is
        used.
   −e, −−ecc−config=CONFIG
        Set the ECC mode for the target GPUs. See the (GPU ATTRIBUTES) section for a description of ECC
        mode. Requires root. Will impact all GPUs unless a single GPU is specified using the −i argument. This
        setting takes effect after the next reboot and is persistent.
   −p, −−reset−ecc−errors=TYPE
        Reset the ECC error counters for the target GPUs. See the (GPU ATTRIBUTES) section for a description
        of ECC error counter types. Available arguments are 0|VOLATILE or 1|AGGREGATE. Requires root.
        Will impact all GPUs unless a single GPU is specified using the −i argument. The effect of this operation
        is immediate.
   −c, −−compute−mode=MODE
        Set the compute mode for the target GPUs. See the (GPU ATTRIBUTES) section for a description of com-
        pute mode. Requires root. Will impact all GPUs unless a single GPU is specified using the −i argument.
        The effect of this operation is immediate. However, it does not persist across reboots. After each reboot
        compute mode will reset to "DEFAULT".
      −−gom=MODE
       Set GPU Operation Mode: 0/ALL_ON, 1/COMPUTE, 2/LOW_DP Supported on GK110 M-class and X-
       class Tesla products from the Kepler family. Not supported on Quadro and Tesla C-class products.
       LOW_DP and ALL_ON are the only modes supported on GeForce Titan devices. Requires administrator
       privileges. See GPU Operation Mode for more information about GOM. GOM changes take effect after
       reboot. The reboot requirement might be removed in the future. Compute only GOMs don’t support
       WDDM (Windows Display Driver Model)
   −r, −−gpu−reset
        Trigger a reset of one or more GPUs. Can be used to clear GPU HW and SW state in situations that would
        otherwise require a machine reboot. Typically useful if a double bit ECC error has occurred. Optional −i
        switch can be used to target one or more specific devices. Without this option, all GPUs are reset.
        Requires root. There can't be any applications using these devices (e.g. CUDA application, graphics appli-
        cation like X server, monitoring application like other instance of nvidia-smi). There also can't be any com-
        pute applications running on any other GPU in the system.
        When resetting GPUs that have active NVLink connections to other GPUs, all GPUs with active NVLink
        connections must be reset together, either by omitting the −i switch or using the −i switch to specify all
        GPUs with active NVLink connections.
        GPU reset is not guaranteed to work in all cases. It is not recommended for production environments at this
        time. In some situations there may be HW components on the board that fail to revert back to an initial
        state following the reset request. This is more likely to be seen on Fermi-generation products vs. Kepler,
        and more likely to be seen if the reset is being performed on a hung GPU.
        Following a reset, it is recommended that the health of each reset GPU be verified before further use. The
        nvidia-healthmon tool is a good choice for this test. If any GPU is not healthy a complete reset should be
        instigated by power cycling the node.
   −ac, −−applications−clocks=MEM_CLOCK,GRAPHICS_CLOCK
        Specifies maximum <memory,graphics> clocks as a pair (e.g. 2000,800) that defines GPU’s speed while
        running applications on a GPU. Supported on Maxwell-based GeForce and from the Kepler+ family in
        Tesla/Quadro/Titan devices. Requires root unless restrictions are relaxed with the −acp command..
   −rac, −−reset−applications−clocks
        Resets the applications clocks to the default value. Supported on Maxwell-based GeForce and from the
        Kepler+ family in Tesla/Quadro/Titan devices. Requires root unless restrictions are relaxed with the −acp
command.
   −acp, −−applications−clocks−permission=MODE
       Toggle whether applications clocks can be changed by all users or only by root. Available arguments are
       0|UNRESTRICTED, 1|RESTRICTED. Supported on Maxwell-based GeForce and from the Kepler+ fam-
       ily in Tesla/Quadro/Titan devices. Requires root.
   −pl, −−power−limit=POWER_LIMIT
        Specifies maximum power limit in watts. Accepts integer and floating point numbers. Only on supported
        devices from Kepler family. Requires administrator privileges. Value needs to be between Min and Max
        Power Limit as reported by nvidia-smi.
   −am, −−accounting−mode=MODE
       Enables or disables GPU Accounting. With GPU Accounting one can keep track of usage of resources
       throughout lifespan of a single process. Only on supported devices from Kepler family. Requires adminis-
       trator privileges. Available arguments are 0|DISABLED or 1|ENABLED.
   −caa, −−clear−accounted−apps
       Clears all processes accounted so far. Only on supported devices from Kepler family. Requires administra-
       tor privileges.
      −−auto−boost−default=MODE
       Set the default auto boost policy to 0/DISABLED or 1/ENABLED, enforcing the change only after the last
       boost client has exited. Only on certain Tesla devices from the Kepler+ family and Maxwell-based
       GeForce devices. Requires root.
      −−auto−boost−default−force=MODE
       Set the default auto boost policy to 0/DISABLED or 1/ENABLED, enforcing the change immediately.
       Only on certain Tesla devices from the Kepler+ family and Maxwell-based GeForce devices. Requires
       root.
      −−auto−boost−permission=MODE
       Allow non-admin/root control over auto boost mode. Available arguments are 0|UNRESTRICTED,
       1|RESTRICTED. Only on certain Tesla devices from the Kepler+ family and Maxwell-based GeForce
       devices. Requires root.
   [plus optional]
   −i, −−id=ID
        Modify a single specified GPU. The specified id may be the GPU/Unit's 0−based index in the natural enu-
        meration returned by the driver, the GPU's board serial number, the GPU's UUID, or the GPU's PCI bus ID
        (as domain:bus:device.function in hex). It is recommended that users desiring consistency use either UUID
        or PCI bus ID, since device enumeration ordering is not guaranteed to be consistent between reboots and
        board serial number might be shared between multiple GPUs on the same board.
   [plus optional]
   −i, −−id=ID
        Modify a single specified Unit. The specified id is the Unit's 0-based index in the natural enumeration
        returned by the driver.
   [plus optional]
   −f FILE, −−filename=FILE
        Redirect query output to the specified file in place of the default stdout. The specified file will be overwrit-
        ten.
   −u, −−unit
        Display Unit DTD instead of device DTD.
   stats
           Display statistics information about the GPU. Use "nvidia-smi stats -h" for more information. Linux only.
   topo
           Display topology information about the system. Use "nvidia-smi topo -h" for more information. Linux
           only. Shows all GPUs NVML is able to detect but CPU affinity information will only be shown for GPUs
           with Kepler or newer architectures. Note: GPU enumeration is the same as NVML.
   drain
        Display and modify the GPU drain states. Use "nvidia-smi drain -h" for more information. Linux only.
   nvlink
        Display nvlink information. Use "nvidia-smi nvlink -h" for more information.
   clocks
        Query and control clocking behavior. Currently, this only pertains to synchronized boost. Use "nvidia-smi
        clocks --help" for more information.
   vgpu
       Display information on GRID virtual GPUs. Use "nvidia-smi vgpu -h" for more information.
RETURN VALUE
           Return code reflects whether the operation succeeded or failed and what was the reason of failure.
           •        Return code 0 − Success
           •        Return code 2 − A supplied argument or flag is invalid
           •        Return code 3 − The requested operation is not available on target device
           •        Return code 4 − The current user does not have permission to access this device or perform this
                    operation
           •        Return code 6 − A query to find an object was unsuccessful
Please note that power readings are not applicable for Pascal and higher GPUs with BA sensor boards.
        Power State       Power State is deprecated and has been renamed to Performance State in 2.285. To
                          maintain XML compatibility, in XML format Performance State is listed in both places.
        Power Management
                      A flag that indicates whether power management is enabled. Either "Supported" or
                      "N/A". Requires Inforom PWR object version 3.0 or higher or Kepler device.
        Power Draw        The last measured power draw for the entire board, in watts. Only available if power
                          management is supported. This reading is accurate to within +/- 5 watts. Requires
                          Inforom PWR object version 3.0 or higher or Kepler device. Please note that for boards
                          without INA sensors, this refers to the power draw for the GPU and not for the entire
                          board.
        Power Limit       The software power limit, in watts. Set by software such as nvidia-smi. Only available
                          if power management is supported. Requires Inforom PWR object version 3.0 or higher
                          or Kepler device. On Kepler devices Power Limit can be adjusted using
                          −pl,−−power−limit= switches.
   Clocks
       Current frequency at which parts of the GPU are running. All readings are in MHz.
   Applications Clocks
       User specified frequency at which applications will be running at. Can be changed with [−ac | −−applica-
       tions−clocks] switches.
   Max Clocks
       Maximum frequency at which parts of the GPU are design to run. All readings are in MHz.
        On GPUs from Fermi family current P0 clocks (reported in Clocks section) can differ from max clocks by
        few MHz.
   Clock Policy
       User-specified settings for automated clocking changes such as auto boost.
        Auto Boost        Indicates whether auto boost mode is currently enabled for this GPU (On) or disabled for
                          this GPU (Off). Shows (N/A) if boost is not supported. Auto boost allows dynamic GPU
                          clocking based on power, thermal and utilization. When auto boost is disabled the GPU
                          will attempt to maintain clocks at precisely the Current Application Clocks settings
                          (whenever a CUDA context is active). With auto boost enabled the GPU will still attempt
                          to maintain this floor, but will opportunistically boost to higher clocks when power, ther-
                          mal and utilization headroom allow. This setting persists for the life of the CUDA con-
                          text for which it was requested. Apps can request a particular mode either via an NVML
                          call (see NVML SDK) or by setting the CUDA environment variable
                          CUDA_AUTO_BOOST.
   Supported clocks
       List of possible memory and graphics clocks combinations that the GPU can operate on (not taking into
       account HW brake reduced clocks). These are the only clock combinations that can be passed to −−appli-
       cations−clocks flag. Supported Clocks are listed only when −q −d SUPPORTED_CLOCKS switches are
       provided or in XML format.
   Processes
       List of processes having Compute or Graphics Context on the device. Compute processes are reported on
       all the fully supported products. Reporting for Graphics processes is limited to the supported products start-
       ing with Kepler architecture.
Each Entry is of format "<GPU Index> <PID> <Type> <Process Name> <GPU Memory Usage>"
        Type               Displayed as "C" for Compute Process, "G" for Graphics Process, and "C+G" for the
                           process having both Compute and Graphics contexts.
Process Name Represents process name for the Compute or Graphics process.
   Stats (EXPERIMENTAL)
        List GPU statistics such as power samples, utilization samples, xid events, clock change events and viola-
        tion counters.
        Supported on Tesla, GRID and Quadro based products under Linux.
        Limited to Kepler or newer GPUs.
        Notes:
        Any statistic preceded by "#" is a comment.
        Non supported device is displayed as "#<device Index>, Device not supported".
        Non supported metric is displayed as "<device index>, <metric name>, N/A, N/A".
        Violation due to Thermal/Power supported only for Tesla based products. Thermal Violations are limited to
        Tesla K20 and higher.
   Device Monitoring
       The "nvidia-smi dmon" command-line is used to monitor one or more GPUs (up to 4 devices) plugged into
       the system. This tool allows the user to see one line of monitoring data per monitoring cycle. The output is
       in concise format and easy to interpret in interactive mode. The output data per line is limited by the termi-
       nal size. It is supported on Tesla, GRID, Quadro and limited GeForce products for Kepler or newer GPUs
       under bare metal 64 bits Linux. By default, the monitoring data includes Power Usage, Temperature, SM
       clocks, Memory clocks and Utilization values for SM, Memory, Encoder and Decoder. It can also be con-
       figured to report other metrics such as frame buffer memory usage, bar1 memory usage, power/thermal vio-
       lations and aggregate single/double bit ecc errors. If any of the metric is not supported on the device or any
       other error in fetching the metric is reported as "-" in the output data. The user can also configure monitor-
       ing frequency and the number of monitoring iterations for each run. There is also an option to include date
       and time at each line. All the supported options are exclusive and can be used together in any order.
        Usage:
        1) Default with no arguments
        nvidia-smi dmon
        Monitors default metrics for up to 4 supported devices under natural enumeration (starting with GPU index
        0) at a frequency of 1 sec. Runs until terminated with ˆC.
        6) Display date
        nvidia-smi dmon -o D
        Prepends monitoring data with date in YYYYMMDD format.
        7) Display time
        nvidia-smi dmon -o T
        Prepends monitoring data with time in HH:MM:SS format.
        8) Help Information
        nvidia-smi dmon -h
        Displays help information for using the command line.
   Daemon (EXPERIMENTAL)
       The "nvidia-smi daemon" starts a background process to monitor one or more GPUs plugged in to the sys-
       tem. It monitors the requested GPUs every monitoring cycle and logs the file in compressed format at the
       user provided path or the default location at /var/log/nvstats/. The log file is created with system’s date
       appended to it and of the format nvstats-YYYYMMDD. The flush operation to the log file is done every
       alternate monitoring cycle. Daemon also logs it’s own PID at /var/run/nvsmi.pid. By default, the monitoring
       data to persist includes Power Usage, Temperature, SM clocks, Memory clocks and Utilization values for
       SM, Memory, Encoder and Decoder. The daemon tools can also be configured to record other metrics such
       as frame buffer memory usage, bar1 memory usage, power/thermal violations and aggregate single/double
       bit ecc errors.The default monitoring cycle is set to 10 secs and can be configured via command-line. It is
       supported on Tesla, GRID, Quadro and GeForce products for Kepler or newer GPUs under bare metal 64
       bits Linux. The daemon requires root privileges to run, and only supports running a single instance on the
       system. All of the supported options are exclusive and can be used together in any order.
        Usage:
        1) Default with no arguments
        nvidia-smi daemon
        Runs in the background to monitor default metrics for up to 4 supported devices under natural enumeration
        (starting with GPU index 0) at a frequency of 10 sec. The date stamped log file is created at /var/log/nvs-
        tats/.
        8) Help Information
        nvidia-smi daemon -h
        Displays help information for using the command line.
        Usage:
        1) Specify log file to be replayed
        nvidia-smi replay -f <log file name>
        Fetches monitoring data from the compressed log file and allows the user to see one line of monitoring data
        (default metrics with time-stamp) for each monitoring iteration stored in the log file. A new line of monitor-
        ing data is replayed every other second irrespective of the actual monitoring frequency maintained at the
        time of collection. It is displayed till the end of file or until terminated by ˆC.
        6) Help Information
        nvidia-smi replay -h
        Displays help information for using the command line.
   Process Monitoring
       The "nvidia-smi pmon" command-line is used to monitor compute and graphics processes running on one
       or more GPUs (up to 4 de