Exemple #1
0
 def test_get(self):
     for I in rdma.get_devices():
         with rdma.get_verbs(I) as X:
             print X
         for Q in I.end_ports:
             with rdma.get_verbs(Q) as X:
                 print X
Exemple #2
0
    def __init__(self, parent, path, depth=16):
        """*path* is used to set the PKey and QKey for all MADs sent through
        this interface."""
        rdma.madtransactor.MADTransactor.__init__(self)
        self._tid = int(os.urandom(8).encode("hex"), 16)

        if isinstance(parent, rdma.devices.EndPort):
            self._ctx = rdma.get_verbs(parent)
            self._allocated_ctx = True
        elif isinstance(parent, ibv.Context):
            self._ctx = parent
        self.end_port = path.end_port
        if path.end_port.parent != self._ctx.node:
            raise rdma.RDMAError("Cannot connect path %r to verbs %r" %
                                 (self._ctx, path))

        self._cc = self._ctx.comp_channel()
        self._cq = self._ctx.cq(2 * depth, self._cc)
        self._poller = rdma.vtools.CQPoller(self._cq)

        self._pd = self._ctx.pd()
        self._pool = rdma.vtools.BufferPool(self._pd, 2 * depth, 256 + 40)
        self._qp = self._pd.qp(ibv.IBV_QPT_UD, depth, self._cq, depth,
                               self._cq)
        self._pool.post_recvs(self._qp, min(self._qp.max_recv_wr, depth))
        self._recvs = collections.deque()

        # Adjust the number of buffers so that we can't exceed the send q depth
        while len(self._pool._buffers) > self._qp.max_send_wr:
            self._pool._buffers.pop()

        path = path.copy(sqpn=self._qp.qp_num, sqpsn=self._tid & 0xFFFFFF)
        self._qp.establish(path)
        self.qkey = path.qkey
        self.pkey = path.pkey
Exemple #3
0
    def __init__(self,parent,path,depth=16):
        """*path* is used to set the PKey and QKey for all MADs sent through
        this interface."""
        rdma.madtransactor.MADTransactor.__init__(self);
        self._tid = int(os.urandom(8).encode("hex"),16);

        if isinstance(parent,rdma.devices.EndPort):
            self._ctx = rdma.get_verbs(parent);
            self._allocated_ctx = True;
        elif isinstance(parent,ibv.Context):
            self._ctx = parent;
        self.end_port = path.end_port;
        if path.end_port.parent != self._ctx.node:
            raise rdma.RDMAError("Cannot connect path %r to verbs %r"%(self._ctx,path))

        self._cc = self._ctx.comp_channel();
        self._cq = self._ctx.cq(2*depth,self._cc);
        self._poller = rdma.vtools.CQPoller(self._cq);

        self._pd = self._ctx.pd();
        self._pool = rdma.vtools.BufferPool(self._pd,2*depth,256+40);
        self._qp = self._pd.qp(ibv.IBV_QPT_UD,depth,self._cq,
                               depth,self._cq);
        self._pool.post_recvs(self._qp,min(self._qp.max_recv_wr,depth));
        self._recvs = collections.deque();

        # Adjust the number of buffers so that we can't exceed the send q depth
        while len(self._pool._buffers) > self._qp.max_send_wr:
            self._pool._buffers.pop();

        path = path.copy(sqpn=self._qp.qp_num,sqpsn=self._tid&0xFFFFFF);
        self._qp.establish(path);
        self.qkey = path.qkey;
        self.pkey = path.pkey;
Exemple #4
0
 def setUp(self):
     self.end_port = rdma.get_end_port();
     self.ctx = rdma.get_verbs(self.end_port);
Exemple #5
0
 def setUp(self):
     self.end_port = rdma.get_end_port();
     self.ctx = rdma.get_verbs(self.end_port);