Module: NvidiaSmi

Defined in:
lib/nvidia-smi.rb

Constant Summary collapse

@@nvidia_keys =

All the values we want to extract from nvidia-smi

[
  'index',
  'pci.bus',
  'name',
  'uuid',
  'temperature.gpu',
  'fan.speed',
  'memory.used',
  'memory.total',
  'memory.free',
  'utilization.memory',
  'utilization.gpu',
  'power.draw',
  'power.limit',
  'pstate',
  'clocks.gr',
  'clocks.sm',
  'clocks.mem',
  'clocks.video',
  'vbios_version'
]

Class Method Summary collapse

Class Method Details

.driver_versionObject

Returns a String containing the driver’s version



47
48
49
# File 'lib/nvidia-smi.rb', line 47

def self.driver_version
  `nvidia-smi --query-gpu=driver_version --format=csv,noheader -i 0`.strip
end

.gpu_countObject

Returns an Integer representing the number of GPUs seen by nvidia-smi



41
42
43
# File 'lib/nvidia-smi.rb', line 41

def self.gpu_count
  `nvidia-smi --query-gpu=count --format=csv,noheader -i 0`.to_i
end

.gpusObject

Returns an Array of Struct::Gpu The members of the struct are the values we extracted from nvidia-smi, as Strings.



54
55
56
57
58
59
60
61
62
63
64
# File 'lib/nvidia-smi.rb', line 54

def self.gpus
  gpus = Array.new
  `nvidia-smi --query-gpu=#{@@nvidia_keys.join(',')} --format=csv,noheader`.each_line do |line|
    values = line.strip.split(',').each do |v|
      v.strip!
    end
    gpus << Struct::Gpu.new(*values)
  end

  gpus
end