#!/usr/bin/perl -w use strict; use Config; use Cwd; my $file = "t/06_sendrecv_intarray.pl"; local(*OUTF); open(OUTF, ">$file") or die "Cannot open $file for writing: $!\n"; print OUTF $Config{startperl} . " -I" . Cwd::cwd . "/blib/arch" . " -I" . Cwd::cwd . "/blib/lib\n"; print "Writing $file\n"; while() { print OUTF $_ } close(OUTF); chmod(0755, $file); __END__ $|=1; use Parallel::MPI qw(:all); MPI_Init(); $my_rank = MPI_Comm_rank(MPI_COMM_WORLD); $p = MPI_Comm_size(MPI_COMM_WORLD); #print "pid = $$, rank = $my_rank\n"; $tag = 0; if ($my_rank != 0) { @message = (31337, 666); $dest = 0; MPI_Send(\@message, 5, MPI_INT, $dest, $tag, MPI_COMM_WORLD); } else { # my_rank == 0 $source = 1; @status = MPI_Recv(\@message, 5, MPI_INT, $source, $tag, MPI_COMM_WORLD); print("Recieved: \"@message\" from $source\n"); print("Status: (", (join ', ',@status), ")\n"); if($message[0] == 31337 && $message[1] == 666) { print "ok 1\n"; } else { print "MESSAGE: @message\nnot ok 1\n"; } # (count,MPI_SOURCE,MPI_TAG,MPI_ERROR) } MPI_Finalize();