MPI-Ruby unterstützt fast alle MPI-Befehle. Weiterführende Tutorials und Artikel zum Thema MPI gibt es im Web [MPItut] oder in Büchern wie [Pach96].
# mpibsp.rb
# laufende Nummer des Rechners
myrank = MPI::Comm::WORLD.rank
# Anzahl der verbundenen Rechner
csize = MPI::Comm::WORLD.size
# 'gerade' Rechner schicken eine Botschaft ...
if myrank % 2 == 0 then
if myrank + 1 != csize then
hello = "Ich bin #{myrank}, " +
"du bist wohl #{myrank+1}"
MPI::Comm::WORLD.send(hello,
myrank + 1, 0)
end
# ... und 'ungerade' Rechner empfangen sie
else
msg, status =
MPI::Comm::WORLD.recv(myrank - 1, 0)
puts "Ich bin #{myrank} und " +
"#{status.source} sagt mit Tag " +
"#{status.tag}: '#{msg}'"
end
Aufruf und Ergebnis dieses Beispiels:
% mpirun -np 6 mpi_ruby example.rb Ich bin 1 und 0 sagt mit Tag 0: 'Ich bin 0, du bist wohl 1' Ich bin 3 und 2 sagt mit Tag 0: 'Ich bin 2, du bist wohl 3' Ich bin 5 und 4 sagt mit Tag 0: 'Ich bin 4, du bist wohl 5'