#! /bin/sh
#
# This is a simple heterogeneous test which exploits the mpicc command and
# mpirun.  This is an example of how heterogeneous programs may be built and
# run
#
#
set -x
#
# Parameters for all programs and systems
device=ch_p4
mpihome=../..
rshcmd=rsh
#programs="sendchar sendshort sendvector sendstruct"
programs="sendchar"
mypwd=`pwd`
# Fixup for brain-dead automounters
mypwd=`echo $mypwd | sed s%/tmp_mnt%%g`
#
# arch1 is local, arch2 is remote
arch1=sun4
arch2=freebsd
name2=dogbert
#
# Build local versions
for pgm in $programs ; do
    $mpihome/lib/$arch1/$device/mpicc -o $pgm.$arch1 $pgm.c
done
#
# Build remote versions
for pgm in $programs ; do 
    $rshcmd -n $name2 "(cd $mypwd ; $mpihome/lib/$arch2/$device/mpicc \
	-o $pgm.$arch2 $pgm.c)"
done
#
# Run the programs
for pgm in $programs ; do
    $mpihome/lib/$arch1/$device/mpirun -echo \
		-arch $arch1 -np 2 -arch $arch2 -np 2 $pgm.%a
done
#
# Fortran versions
programs="sendlogc"
#
# Build local versions
for pgm in $programs ; do
    $mpihome/lib/$arch1/$device/mpif77 -o $pgm.$arch1 $pgm.f
done
#
# Build remote versions
for pgm in $programs ; do 
    $rshcmd -n $name2 "(cd $mypwd ; $mpihome/lib/$arch2/$device/mpif77 \
	-o $pgm.$arch2 $pgm.f)"
done
#
# Run the programs
for pgm in $programs ; do
    $mpihome/lib/$arch1/$device/mpirun -echo \
		-arch $arch1 -np 2 -arch $arch2 -np 2 $pgm.%a
done
