I am not sure if this is the right place the ask this question but here it goes.
Simplified abstract version of the question. I have 2 MPI processes and I want one to make an occasional signal to the other process. These signals will not happen at predictable times. I want the other process sitting in some kind of work loop to be able to make a very fast check to see if a signal has been sent to it. What is the best way to do this. Actual problem I am working on a realistic neural net simulator. The neurons are split into groups with one group to each processor to simulate them. Occasionally a neuron will spike and have to send that message to neurons on a different processor. This is a relatively rare event. The receiving neurons need to be able to make a very fast check to see if there is a message from neurons on another processor. The way I am doing it now is to use simple send and receive commands. The receiving cell does an iprobe check on every loop through the simulation for every cell that connects to it to see if there is a message(spike) from that cell. If the iprobe says there is a message is does a receive on that message. This seems convoluted though. I do not actually need to receive the message just know that a message is there. And it seems like depending on how Iprobe works there might be a faster method. Is Iprobe fast if there is no message to receive? Would persistent connections work better? Anyway any help would be greatly appreciated.