Module: Ignis::Random::CuRANDBindings

Extended by:
FFI::Library
Defined in:
lib/nvruby/random/curand_bindings.rb

Overview

cuRAND library FFI bindings

Constant Summary collapse

CURAND_RNG_PSEUDO_DEFAULT =

Generator types (curandRngType_t)

100
CURAND_RNG_PSEUDO_XORWOW =
101
CURAND_RNG_PSEUDO_MRG32K3A =
121
CURAND_RNG_PSEUDO_MTGP32 =
141
CURAND_RNG_PSEUDO_MT19937 =
142
CURAND_RNG_PSEUDO_PHILOX4_32_10 =
161
CURAND_RNG_QUASI_DEFAULT =
200
CURAND_RNG_QUASI_SOBOL32 =
201
CURAND_RNG_QUASI_SCRAMBLED_SOBOL32 =
202
CURAND_RNG_QUASI_SOBOL64 =
203
CURAND_RNG_QUASI_SCRAMBLED_SOBOL64 =
204
CURAND_ORDERING_PSEUDO_BEST =

Ordering types

100
CURAND_ORDERING_PSEUDO_DEFAULT =
101
CURAND_ORDERING_PSEUDO_SEEDED =
102
CURAND_ORDERING_PSEUDO_LEGACY =
103
CURAND_ORDERING_PSEUDO_DYNAMIC =
104
CURAND_ORDERING_QUASI_DEFAULT =
201
CURAND_DIRECTION_VECTORS_32_JOEKUO6 =

Direction vector types

101
CURAND_DIRECTION_VECTORS_64_JOEKUO6 =
102
CURAND_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO6 =
103
CURAND_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO6 =
104

Class Method Summary collapse

Class Method Details

.check_status!(status, context = "cuRAND operation") ⇒ void

This method returns an undefined value.

Check cuRAND status and raise error if not success

Parameters:

  • status (Integer)

    cuRAND status code

  • context (String) (defaults to: "cuRAND operation")

    Context for error message

Raises:

  • (CuRANDError)


108
109
110
111
112
# File 'lib/nvruby/random/curand_bindings.rb', line 108

def self.check_status!(status, context = "cuRAND operation")
  return if status.zero?

  raise CuRANDError, status
end

.ensure_loaded!void

This method returns an undefined value.

Ensure cuRAND is loaded



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/nvruby/random/curand_bindings.rb', line 43

def ensure_loaded!
  return if @loaded

  CUDA::LibraryLoader.load_library(:curand)

  cuda_bin = Ignis.configuration.cuda_bin_path
  if cuda_bin
    ffi_lib Dir.glob(File.join(cuda_bin, "curand64_*.dll")).max
  else
    ffi_lib "curand64_10"
  end

  attach_curand_functions!
  @loaded = true
end