next up previous contents index
Search Next: Pi und kein Ende Up: Message Passing Interface (MPI) Previous: Message Passing Interface (MPI)   Contents   Index

Grundlagen

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'



(C) 2002 by dpunkt.de, Armin Roehrl, Stefan Schmiedl, Clemens Wyss 2002-01-20