一切都是标题。 我和我的团队正在开展一个项目,我们正在使用MPI。 在某个地方,我们正在执行MPI_send请求以获取具有超时的资源。 如果资源可用,则返回1;如果超时结束时没有资源,则返回0。 我们尝试使用类似SIGALRM的信号,但它不起作用,因为每个新请求都会通过设置新的警报来取消旧请求。 感谢您的回答!
没有标准的方法来完成这个任务。使用非阻塞调用(例如MPI_Isend、MPI_Irecv)实现发送/接收对,并使用MPI_Test和MPI_Cancel是一种可能的解决方案。根据资源的性质以及程序中需要使用此功能的次数,您还可以考虑将MPI_ISend实现为“持久请求”对象。有更多信息可在此处找到:持久通信。持久请求的优点是,如果资源实际上可用,则可以形成请求,然后仅在需要时执行...假设资源可以独立于实际的MPI_*调用进行检查。持久通信请求可以在整个程序中重复使用多次,而无需重新组织整个MPI_Send / MPI_Recv调用。
MPI_Test
检查通信是否完成,然后完成发送/接收操作或取消它。 - Edric