我们正在移植Isis2(isis2.codeplex.com)以更好地利用Infiniband动词并运行我们的代码。但是,IB面向异步接收模型,在该模型中,您发布了一堆接收缓冲区,然后,当接收完成后,您将处理接收到的数据。
轮询很慢:如果我使用阻塞等待,比如2ms,我可能会在看到IB数据之前延迟2ms。所以这是一个解决方案,但却是一个糟糕的解决方案。我真正想要的是一种等待IB完成记录最终确定然后让我的线程立即唤醒的方法(在Windows上这很容易......在Linux上它并不那么自然)。有谁知道这是怎么做到的?使用Verbs时,没有任何IB文件描述符,所以显然我不能使用select()
答案 0 :(得分:1)
没关系;我们刚刚意识到他们为此提供了一种方法(ibv_reg_notify_cq)。我们试试看。不是世界上最好的API ...