staging.inyokaproject.org

Open MPI und Fortran

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

sbgr

Anmeldungsdatum:
6. Oktober 2022

Beiträge: Zähle...

Hallo liebe Community,

Im Rahmen meines Studiums führe ich die Entwicklung eines Programms weiter, welches auf Fortran basiert und mit Open MPI parallelisiert wird. Dazu verwende ich Ubuntu 22.04.1 auf einer virtuellen Maschine (VirtualBox 7.0.4).

Das hat bis vor kurzem auch alles reibungslos geklappt, jedoch bin ich dann durch ausführen des make Befehls auf folgende Fehlermeldung gestoßen.

mpifort -D_MPI_ -I/usr/lib/x86_64-linux-gnu/openmpi/lib/../../fortran/gfortran-mod-15/openmpi -I/usr/lib/x86_64-linux-gnu/openmpi/lib -I/usr/lib/x86_64-linux-gnu/openmpi/lib -L/usr/lib/x86_64-linux-gnu/openmpi/lib/fortran/gfortran -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi -lopen-rte -lopen-pal -lhwloc -levent_core -levent_pthreads -lm -lz -O3 -Wall -cpp -g -Wno-unused -Wno-uninitialized -Wno-conversion -Wno-ampersand -ffpe-trap=invalid,zero,overflow,underflow -fcheck=all -fbacktrace -c  Main.f90 -o Main.o
f951: Warning: Nonexistent include directory ‘/usr/lib/x86_64-linux-gnu/openmpi/lib/../../fortran/gfortran-mod-15/openmpi’ [-Wmissing-include-dirs]
f951: Warning: Nonexistent include directory ‘/usr/lib/x86_64-linux-gnu/openmpi/lib/../../fortran/gfortran-mod-15/openmpi’ [-Wmissing-include-dirs]
Main.f90:65:7:

   65 |   use MPI
      |       1
Fatal Error: Cannot open module file ‘mpi.mod’ for reading at (1): Datei oder Verzeichnis nicht gefunden
compilation terminated.
make: *** [makefile:18: Main.o] Fehler 1

Ich kann leider nicht mehr nachvollziehen, was ich zwischen dem letzten erfolgreichen Ausführen des Programms und dem erstmaligen Erscheinen der Fehlermeldung am System geändert habe. Es dürfte wahrscheinlich auch keine Rolle mehr spielen, da ich mittlerweile die virtuelle Maschine komplett neu aufgesetzt habe. Das Programm (auch frühere Versionen, die bereits funktionsfähig waren und nicht mehr verändert worden sind) lässt sich allerdings immer noch nicht ausführen.

Nach dem neuen Aufsetzen der Maschine habe ich gemäß einer zur Verfügung gestellten Einweisung folgende Sachen installiert:

sudo apt-get install gfortran

sudo apt-get install build-essential

sudo apt-get -y install openmpi-bin

Meiner Erinnerung nach hat das damals ausgereicht, um das Programm erfolgreich ausführen zu können. Dies ist jetzt allerdings nicht mehr der Fall. Aktuell ist dadurch Open MPI 4.1.2 und GNU Fortran 11.3.0 installiert.

Die Makefile sieht wie folgt aus:

SRC=Main.f90

EXE=calc.mpi
OBJ=$(SRC:.f90=.o)

FC         = mpifort

all:$(EXE)

$(EXE):$(OBJ) 
	$(FC) $(CPPFLAGS) $(FCFLAGS)  -o  $(EXE) $(OBJ)

%.o:%.f90 input_parameters.h
	$(FC) $(CPPFLAGS) $(MPICFLAGS) $(FCFLAGS) -c  $< -o $@

#$(OBJ):$(INCL)

clean:
	rm -rf $(EXE) *.o *.mod

FCFLAGS    =$(MPILNFLAGS) -O3 -Wall -cpp
FCFLAGS   +=-g
#DEBUG FLAGS
#FCFLAGS   +=-Wextra
FCFLAGS   +=-Wno-unused
FCFLAGS   +=-Wno-uninitialized
FCFLAGS   +=-Wno-conversion
FCFLAGS   +=-Wno-ampersand
FCFLAGS   +=-ffpe-trap=invalid,zero,overflow,underflow
FCFLAGS   +=-fcheck=all -fbacktrace
#FCFLAGS   +=-finit-real=nan
#FCFLAGS   +=-fdefault-real-8 -fdefault-double-8
#DFLAGS     =-D_MPI_
CPPFLAGS   =-D_MPI_

#MPI COMPILE FLAGS
MPICFLAGS  =$(shell mpifort --showme:compile)
#MPI LINK FLAGS
MPILNFLAGS =$(shell mpifort --showme:link)

Als vage Laien-Vermutung habe ich, dass sich durch irgendein Update die Verzeichnisstruktur von Open MPI verändert hat und die mpi.mod deswegen woanders lokalisiert ist. Die in der Fehlermeldung auftauchenden Verweise

-I/usr/lib/x86_64-linux-gnu/openmpi/lib/../../fortran/gfortran-mod-15/openmpi
-L/usr/lib/x86_64-linux-gnu/openmpi/lib/fortran/gfortran

sind in meiner Ordnerstruktur jedenfalls nicht vorhanden. Der Pfad existiert bei mir nur bis

/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi3/

wobei openmpi3 der einzige Ordner in lib ist.

Eine Suche nach mpi.mod ergibt, dass die Datei 4x vorhanden ist:

boot/grub/i386-pc
boot/grub/x86_64-efi
usr/lib/grub/i386-pc
usr/lib/grub/x86_64-efi

Jetzt weiß ich allerdings als Linux-Anfänger nicht, ob mir diese Erkenntnis was bringt oder wie ich eine Veränderung herbeiführen kann, dass eine der vier Dateien von meinem Programm gefunden wird.

Ich freue mich sehr über eure Hilfe, zumal ich eigentlich kurz vor dem Abschluss meiner Arbeit bin.

Viele Grüße, Sebastian

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17432

Ich hatte den Verdacht, es könne ein openmpi-dev-Paket geben (für development), aber Tabvervollständigung nach openmpi schlägt nur openmpi-common und openmpi-doc vor.

Ich würde das -common-Paket mal installieren.

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 3425

libopenmpi-dev gibts.

sbgr

(Themenstarter)

Anmeldungsdatum:
6. Oktober 2022

Beiträge: 8

Ich danke euch beiden!

Die Installation des common-Pakets hat zwar nicht geholfen, aber dadurch weiß ich jetzt, dass es die Tabvervollständigung gibt ☺

Dafür war es aber die Installation des Pakets libopenmpi-dev, welches dazu geführt hat, dass ich weitermachen kann.

Vielen Dank!

Antworten |