Module: GRX::CAPI
- Extended by:
- Fiddle::Importer
- Defined in:
- lib/grx/c_api.rb
Constant Summary collapse
- CANDIDATE_NAMES =
case RUBY_PLATFORM when /mingw|mswin|windows/i ["grx_core.dll", "libgrx_core.dll", "grx_core.so", "libgrx_core.so"] when /darwin/i ["libgrx_core.dylib", "grx_core.bundle", "libgrx_core.so", "grx_core.so"] else ["libgrx_core.so", "grx_core.so", "libgrx_core.dylib", "grx_core.dll"] end
- SEARCH_DIRS =
Search directories including standard Gem extension build paths
begin dirs = [ File.(__dir__), # lib/grx/ File.("..", __dir__), # lib/ File.("../../ext/grx", __dir__), # ext/grx/ File.("../../ext/unix", __dir__), # ext/unix/ File.("../../ext/windows", __dir__) # ext/windows/ ] # Gem extensions build directory (RubyGems standard) if defined?(Gem) && Gem.loaded_specs["grx-tensor"] ext_dir = Gem.loaded_specs["grx-tensor"].extension_dir dirs << ext_dir if ext_dir && File.directory?(ext_dir) dirs << File.join(ext_dir, "grx") if ext_dir && File.directory?(File.join(ext_dir, "grx")) end # Ruby sitearch / vendorarch directories sitearch = RbConfig::CONFIG["sitearchdir"] dirs << sitearch if sitearch && File.directory?(sitearch) dirs.uniq.freeze end
- LIB_PATHS =
SEARCH_DIRS.flat_map do |dir| CANDIDATE_NAMES.flat_map do |name| [ File.join(dir, name), File.join(dir, name).tr("/", "\\") ] end end.uniq.freeze
- LOADED_PATH =
LIB_PATHS.find { |p| File.file?(p) && File.exist?(p) }
- LOADED =
begin if LOADED_PATH dlload LOADED_PATH true else false end rescue Fiddle::DLError => e warn "[GRX] C extension load error: #{e.}\n" \ " -> Running in pure Ruby fallback mode." false end
Class Method Summary collapse
Class Method Details
.simd_mode ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/grx/c_api.rb', line 120 def self.simd_mode return :ruby unless LOADED case grx_simd_level when 2 then :avx2 when 1 then :sse else :scalar end rescue StandardError :scalar end |