Class: Ignis::Collective::NetworkDirect::MemoryRegion

Inherits:
Object
  • Object
show all
Defined in:
lib/nvruby/collective/net/nd_adapter.rb

Overview

Memory Region for RDMA registration

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(adapter, buffer, size, flags) ⇒ MemoryRegion

Returns a new instance of MemoryRegion.



324
325
326
327
328
329
330
331
332
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 324

def initialize(adapter, buffer, size, flags)
  @adapter = adapter
  @buffer = buffer
  @size = size
  @flags = flags
  @handle = nil
  @token = nil
  @registered = false
end

Instance Attribute Details

#bufferFFI::Pointer (readonly)

Returns Buffer pointer.

Returns:

  • (FFI::Pointer)

    Buffer pointer



313
314
315
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 313

def buffer
  @buffer
end

#handleFFI::Pointer (readonly)

Returns Native MR handle.

Returns:

  • (FFI::Pointer)

    Native MR handle



322
323
324
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 322

def handle
  @handle
end

#sizeInteger (readonly)

Returns Buffer size.

Returns:

  • (Integer)

    Buffer size



316
317
318
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 316

def size
  @size
end

#tokenInteger (readonly)

Returns Memory region token (for remote access).

Returns:

  • (Integer)

    Memory region token (for remote access)



319
320
321
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 319

def token
  @token
end

Instance Method Details

#deregister!void

This method returns an undefined value.

Deregister the memory region



359
360
361
362
363
364
365
366
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 359

def deregister!
  return unless @registered

  # In real implementation: IND2MemoryRegion::Deregister + Release
  @handle = nil
  @token = nil
  @registered = false
end

#register!void

This method returns an undefined value.

Register the memory region



336
337
338
339
340
341
342
343
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 336

def register!
  return if @registered

  # In real implementation: IND2Adapter::CreateMemoryRegion + Register
  @handle = FFI::Pointer.new(:void, 0xABCDEF00)  # Placeholder
  @token = rand(0xFFFFFFFF)  # Would be from GetRemoteToken
  @registered = true
end

#remote_access_infoHash

Get remote access token for RDMA write/read

Returns:

  • (Hash)

    Remote access info

Raises:



347
348
349
350
351
352
353
354
355
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 347

def remote_access_info
  raise RDMAError, "Memory not registered" unless @registered

  {
    address: @buffer.address,
    token: @token,
    size: @size
  }
end