Discussion:
undefined sent
(too old to reply)
mathieu
2011-06-16 08:10:34 UTC
Permalink
I would like to do some combinatorics computation using mpi and I have
a problem.
In mpi, when one uses MPI_SEND, MPI_RECV and friends, we have to know
exactly when
a transfer has to be done so as to be able to do it at all.

What I would like is to have a number N of computational nodes and 1
additional node
that checks for isomorphism. The problem is that such checks for
isomorphism could happen at any given time, it is almost impossible to
predict when such operations are done.

So, what I would like is some functions that do:
MPI_SEND_CALL(TheSpecialNode, MPI_COMM_WORLD)
for the sending side. I.e. the calling side would call the special
node and wait
for it to be available

and
MPI_RECV_CALL(TheCallingNode, MPI_COMM_WORLD)
for the receiving side. Where it would get to know who was calling
him.

Then I would do something like
WHILE(1)
mpi_recv_call(.... , ....)
.
.
normal mpi operations.
.
.
END DO
Is there any possibility of achieving such kind of operation in mpi?
If not what would you recommend as parallel paradigm? The target
language
is C/C++.

Thanks,

Mathieu
blmblm@myrealbox.com
2011-06-17 17:09:24 UTC
Permalink
Post by mathieu
I would like to do some combinatorics computation using mpi and I have
a problem.
In mpi, when one uses MPI_SEND, MPI_RECV and friends, we have to know
exactly when
a transfer has to be done so as to be able to do it at all.
What I would like is to have a number N of computational nodes and 1
additional node
that checks for isomorphism. The problem is that such checks for
isomorphism could happen at any given time, it is almost impossible to
predict when such operations are done.
MPI_SEND_CALL(TheSpecialNode, MPI_COMM_WORLD)
for the sending side. I.e. the calling side would call the special
node and wait
for it to be available
and
MPI_RECV_CALL(TheCallingNode, MPI_COMM_WORLD)
for the receiving side. Where it would get to know who was calling
him.
Then I would do something like
WHILE(1)
mpi_recv_call(.... , ....)
.
.
normal mpi operations.
.
.
END DO
Is there any possibility of achieving such kind of operation in mpi?
If not what would you recommend as parallel paradigm? The target
language
is C/C++.
Maybe there's something I'm not understanding here, but it seems
to me like your pseudocode above can easily be turned into real
C-plus-MPI; you just need for the "special" node to do its receives
with a source of MPI_ANY_SOURCE. Presumably you'll then want to
know the rank of the sending process, but you can get that from
the status variable (status_variable.MPI_SOURCE). On the other side,
the sending node can wait for the special node to be available by
doing a receive. ?
--
B. L. Massingill
ObDisclaimer: I don't speak for my employers; they return the favor.
blmblm@myrealbox.com
2011-06-20 19:12:50 UTC
Permalink
[ snip problem and reply ]

It would be nice to know whether my comments helped the OP, or in
fact whether he even read them. Just sayin'.
--
B. L. Massingill
ObDisclaimer: I don't speak for my employers; they return the favor.
Loading...