Parallel-MPI
view release on metacpan or search on metacpan
int source
int tag
MPI_Comm comm
PREINIT:
void* buf;
int ret;
MPI_Status status;
#ifdef SEND_DEBUG
int i;
#endif
PPCODE:
if (! SvROK(ref))
croak("MPI_Recv: First argument is not a reference!");
if (SvTYPE(SvRV(ref)) == SVt_PVHV) {
croak("MPI_Recv: Hashes are not supported yet.");
} else if (SvTYPE(SvRV(ref)) == SVt_PVAV) {
int len;
AV *stuff = (AV*) SvRV(ref);
switch(datatype) {
case MPI_STRING:
SV * recvref
int recvcount
MPI_Datatype recvtype
int source
int recvtag
MPI_Comm comm
PREINIT:
void* sendbuf, *recvbuf;
int ret;
MPI_Status status;
PPCODE:
if (! SvROK(sendref) || ! SvROK(recvref))
croak("MPI_Sendrecv: First and Fourth arguments must be references!");
if (SvTYPE(SvRV(sendref)) == SVt_PVAV &&
SvTYPE(SvRV(recvref)) == SVt_PVAV)
{
AV* array = (AV*) SvRV(recvref);
int len;
recvbuf = malloc(MPIpm_bufsize(recvtype, SvRV(recvref), recvcount));
len = MPIpm_packarray(&sendbuf, (AV*)SvRV(sendref), sendtype, sendcount);
( run in 2.006 seconds using v1.01-cache-2.11-cpan-5511b514fd6 )