Method: ComputeUnit::AmdGpu#set_mem_clock_and_vddc

Defined in:
lib/compute_unit/gpus/amd_gpu.rb

#set_mem_clock_and_vddc(mem_clock, mem_volt) ⇒ Object

Raises:

  • (ArgumentError)


434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
# File 'lib/compute_unit/gpus/amd_gpu.rb', line 434

def set_mem_clock_and_vddc(mem_clock, mem_volt)
  return unless experimental_on?

  mem_clock = mem_clock.to_i
  mem_volt = mem_volt.to_i
  # TODO: find max and min values and limit input
  dpm_force_performance_setting('manual')
  raise ArgumentError.new("MemClock value #{mem_clock} must be between #{min_mem_clock}-#{max_mem_clock}") unless mem_clock.between?(min_mem_clock, max_mem_clock)
  raise ArgumentError.new("MemVolt value #{mem_volt} must be between #{min_mem_volt}-#{max_mem_volt}") unless mem_volt.between?(min_mem_volt, max_mem_volt)

  write_kernel_setting('pp_od_clk_voltage', "r\n") # unlocks in order to write
  # set row in table (m = manual), 3 = row,
  write_kernel_setting('pp_od_clk_voltage', "m 3 #{mem_clock} #{mem_volt}\n")
  write_kernel_setting('pp_od_clk_voltage', "c\n") # locks file
  write_kernel_setting('pp_mclk_od', "3\n")
  logger.info("Successfully applied overclock #{mem_clock} #{mem_volt} to #{name} at #{pci_loc}")
end