Module: Candle::BuildInfo

Defined in:
lib/candle/build_info.rb

Class Method Summary collapse

Class Method Details

.accelerate_available?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/candle/build_info.rb', line 38

def self.accelerate_available?
  Candle.build_info["accelerate_available"]
end

.cuda_available?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/candle/build_info.rb', line 26

def self.cuda_available?
  Candle.build_info["cuda_available"]
end

.cudnn_available?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/candle/build_info.rb', line 42

def self.cudnn_available?
  Candle.build_info["cudnn_available"]
end

.display_cuda_infoObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/candle/build_info.rb', line 3

def self.display_cuda_info
  info = Candle.build_info
  
  # Only display CUDA info if running in development or if CANDLE_VERBOSE is set
  return unless ENV['CANDLE_VERBOSE'] || ENV['CANDLE_DEBUG'] || $DEBUG
  
  if info["cuda_available"] == false
    # :nocov:
    # Check if CUDA could be available on the system
    cuda_potentially_available = ENV['CUDA_ROOT'] || ENV['CUDA_PATH'] || 
                               File.exist?('/usr/local/cuda') || File.exist?('/opt/cuda')
    
    if cuda_potentially_available
      warn "=" * 80
      warn "Red Candle: CUDA detected on system but not enabled in build."
      warn "This may be due to CANDLE_DISABLE_CUDA being set during installation."
      warn "To enable CUDA support, reinstall without CANDLE_DISABLE_CUDA set."
      warn "=" * 80
    end
    # :nocov:
  end
end

.metal_available?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/candle/build_info.rb', line 30

def self.metal_available?
  Candle.build_info["metal_available"]
end

.mkl_available?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/candle/build_info.rb', line 34

def self.mkl_available?
  Candle.build_info["mkl_available"]
end

.summaryObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/candle/build_info.rb', line 46

def self.summary
  info = Candle.build_info
  
  available_backends = []
  available_backends << "Metal" if info["metal_available"]
  available_backends << "CUDA" if info["cuda_available"]
  available_backends << "CPU"
  
  {
    default_device: info["default_device"],
    available_backends: available_backends,
    cuda_available: info["cuda_available"],
    metal_available: info["metal_available"],
    mkl_available: info["mkl_available"],
    accelerate_available: info["accelerate_available"],
    cudnn_available: info["cudnn_available"]
  }
end