Class: Ignis::Collective::NetworkDirect::QueuePair
- Inherits:
-
Object
- Object
- Ignis::Collective::NetworkDirect::QueuePair
- Defined in:
- lib/nvruby/collective/net/nd_adapter.rb
Overview
Queue Pair for RDMA send/receive operations
Constant Summary collapse
- STATE_INIT =
States
:init- STATE_READY =
:ready- STATE_CONNECTED =
:connected- STATE_ERROR =
:error
Instance Attribute Summary collapse
-
#adapter ⇒ Adapter
readonly
Parent adapter.
-
#handle ⇒ FFI::Pointer
readonly
Native QP handle.
-
#state ⇒ Symbol
readonly
Current state.
Instance Method Summary collapse
-
#close! ⇒ void
Close the queue pair.
-
#create! ⇒ void
Create the queue pair.
-
#initialize(adapter:, send_cq:, recv_cq:, send_depth:, recv_depth:, sge_count:) ⇒ QueuePair
constructor
A new instance of QueuePair.
-
#post_receive(sge_list:, context: nil) ⇒ void
Post a receive work request.
-
#post_send(sge_list:, context: nil, flags: 0) ⇒ void
Post a send work request.
-
#rdma_read(remote_address:, remote_token:, sge_list:, context: nil) ⇒ void
RDMA Read operation (one-sided).
-
#rdma_write(remote_address:, remote_token:, sge_list:, context: nil) ⇒ void
RDMA Write operation (one-sided).
-
#set_connected! ⇒ void
Transition to connected state.
Constructor Details
#initialize(adapter:, send_cq:, recv_cq:, send_depth:, recv_depth:, sge_count:) ⇒ QueuePair
Returns a new instance of QueuePair.
217 218 219 220 221 222 223 224 225 226 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 217 def initialize(adapter:, send_cq:, recv_cq:, send_depth:, recv_depth:, sge_count:) @adapter = adapter @send_cq = send_cq @recv_cq = recv_cq @send_depth = send_depth @recv_depth = recv_depth @sge_count = sge_count @handle = nil @state = STATE_INIT end |
Instance Attribute Details
#adapter ⇒ Adapter (readonly)
Returns Parent adapter.
209 210 211 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 209 def adapter @adapter end |
#handle ⇒ FFI::Pointer (readonly)
Returns Native QP handle.
215 216 217 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 215 def handle @handle end |
#state ⇒ Symbol (readonly)
Returns Current state.
212 213 214 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 212 def state @state end |
Instance Method Details
#close! ⇒ void
This method returns an undefined value.
Close the queue pair
303 304 305 306 307 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 303 def close! # In real implementation: IND2QueuePair::Release @handle = nil @state = STATE_ERROR end |
#create! ⇒ void
This method returns an undefined value.
Create the queue pair
230 231 232 233 234 235 236 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 230 def create! return if @state != STATE_INIT # In real implementation: IND2Adapter::CreateQueuePair @handle = FFI::Pointer.new(:void, 0x87654321) # Placeholder @state = STATE_READY end |
#post_receive(sge_list:, context: nil) ⇒ void
This method returns an undefined value.
Post a receive work request
264 265 266 267 268 269 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 264 def post_receive(sge_list:, context: nil) raise RDMAError, "QP not ready" unless @state == STATE_READY || @state == STATE_CONNECTED # Build SGE array (similar to post_send) # In real implementation: IND2QueuePair::Receive end |
#post_send(sge_list:, context: nil, flags: 0) ⇒ void
This method returns an undefined value.
Post a send work request
243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 243 def post_send(sge_list:, context: nil, flags: 0) raise RDMAError, "QP not ready" unless @state == STATE_CONNECTED # Build SGE array sge_count = sge_list.size sge_ptr = FFI::MemoryPointer.new(Bindings::ND2Sge, sge_count) sge_list.each_with_index do |sge, i| entry = Bindings::ND2Sge.new(sge_ptr + i * Bindings::ND2Sge.size) entry[:Buffer] = sge[:buffer] entry[:BufferLength] = sge[:length] entry[:MemoryRegionToken] = sge[:token] end # In real implementation: IND2QueuePair::Send end |
#rdma_read(remote_address:, remote_token:, sge_list:, context: nil) ⇒ void
This method returns an undefined value.
RDMA Read operation (one-sided)
289 290 291 292 293 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 289 def rdma_read(remote_address:, remote_token:, sge_list:, context: nil) raise RDMAError, "QP not connected" unless @state == STATE_CONNECTED # In real implementation: IND2QueuePair::Read end |
#rdma_write(remote_address:, remote_token:, sge_list:, context: nil) ⇒ void
This method returns an undefined value.
RDMA Write operation (one-sided)
277 278 279 280 281 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 277 def rdma_write(remote_address:, remote_token:, sge_list:, context: nil) raise RDMAError, "QP not connected" unless @state == STATE_CONNECTED # In real implementation: IND2QueuePair::Write end |
#set_connected! ⇒ void
This method returns an undefined value.
Transition to connected state
297 298 299 |
# File 'lib/nvruby/collective/net/nd_adapter.rb', line 297 def set_connected! @state = STATE_CONNECTED end |