[Hpc-forum] fftw3.f
Tom Hornos
tom.hornos at gmail.com
2013. Feb. 22., P, 00:42:11 CET
On 2/21/13 6:56 PM, Halasz Gabor wrote:
> Kedves fórumtársak!
>
> Egy másoktól kapott programcsomagot próbálok életre kelteni a debreceni gépen.
> Hat darab, nem túl hosszú forrás fájlom van, f90 kiterjesztéssel. Az eredeti
> csomagban "f95"-öt használnak a fordításhoz, de mivel ez nem elérhető ezen a
> gépen, én átírtam a Makefile-ban a fordítót gfortran-ra.
>
> A csomag használja az FFTW3 csomag néhány függvényét. A megfelelő forrásokban
> szerepel egy 'include "/usr/include/fftw3.f"' sor, amivel nincs is gondja a
> fordítónak, mivel az adott helyen a gépen tényleg megtalálható a hivatkozott
> fájl. A csomaghoz telepítve vannak a gépen a man és az info oldalak is.
>
> Ami viszont nem működik, az a futtatható állomány szerkesztése. Ez az alábbi
> üzenettel áll le:
> /usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld:
> cannot find -lfftw3
> collect2: ld returned 1 exit status
>
> Úgy tűnik, mintha mégsem lenne teljes a csomag installációja a gépen.
> Vagy tévedek, és a '-lfftw3' opció használatán kívül még valami további
> "konfigurálásra" is szükség lenne a megfelelő szerkesztéshez?
>
> Segítségeteket előre is köszönöm, Gábor
>
Kedves Gábor!
A problémát az okozza, hogy a futás során az fftw könyvtár nem
található. Linkeld a programot statikusan!
Kérlek add hozzá a .profile fájlodhoz a következő sorokat:
module use /opt/nce/modulefiles
module load nce/global
module load niif/debrecen
module load nce/niif/intel
Lépj ki és újra be. Ezek után aktiválódik az új modul rendszer.
A forrás fájlban kérlek cseréld le az include sort erre:
include fftw3.f
Az fftw3.f fájlt a fordító az include elérési utakban fogja keresni. A
fordításhoz ifort fordítót kell használni a következő optimalizációs
beállításokkal. Ezeket a kapcsolókat a FFLAGS változóban kell
beállítani. A makefile-ban a következő opciók kellenek
FC=ifort
FFLAGS=-O2 -xSSE4.2 -I$(LIB_FFTW_HOME)/include
A linkelést statikusan érdemes végezni. Ehhez az LDFLAGS változót kell
beállítani. Az fftw könyvtárat így tudod statikusan linkelni:
LDFLAGS=$(LIB_FFTW_HOME)/lib/libfftw3.a
Üdv
--
Tamas Hornos, PhD
NIIF Intézet
További információk a(z) Hpc-forum levelezőlistáról