[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