I am not sure if this is the right place the ask this question but here
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.
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.