code: def nvmlShutdown():
      r
      #
      # Leave the library loaded, but shutdown the interface
      #
      fn = _nvmlGetFunctionPointer("nvmlShutdown")
      ret = fn()
      _nvmlCheckReturn(ret)
  
      # Atomically update refcount
      global _nvmlLib_refcount
      libLoadLock.acquire()
      if (0 < _nvmlLib_refcount):
          _nvmlLib_refcount -= 1
      libLoadLock.release()
      return None
docs: r"""
      /**
       * Shut down NVML by releasing all GPU resources previously allocated with \ref nvmlInit().
       *
       * For all products.
       *
       * This method should be called after NVML work is done, once for each call to \ref nvmlInit()
       * A reference count of the number of initializations is maintained.  Shutdown only occurs
       * when the reference count reaches zero.  For backwards compatibility, no error is reported if
       * nvmlShutdown() is called more times than nvmlInit().
       *
       * @return
       *         - \ref NVML_SUCCESS                 if NVML has been properly shut down
       *         - \ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized
       *         - \ref NVML_ERROR_UNKNOWN           on any unexpected error
       */
      nvmlReturn_t DECLDIR nvmlShutdown