VASP 6.3.0 fftw multiple reference during linking

Questions regarding the compilation of VASP on various platforms: hardware, compilers and libraries, etc.


Moderators: Global Moderator, Moderator

Post Reply
Message
Author
davidnormal
Newbie
Newbie
Posts: 4
Joined: Thu Nov 04, 2021 7:56 am

VASP 6.3.0 fftw multiple reference during linking

#1 Post by davidnormal » Wed Feb 23, 2022 1:06 pm

Hi,

I'm using ubuntu20.04 with nvhpc22.2. I am facing some strange issues with multiple reference and undefined reference during linking stage

error message:
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-f77api.o): in function dfftwitthreads:homedx/repofftw-3.3.10threadsf77funcs.h:37:μ<ipdefitionofdfftw_init_threads_'; fftlib.o:/home/dx/repo/vasp-6.3.0-nvhpc222/build/std/fftlib/src/fftlib.cpp:27: first defined here
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-f77api.o): in function dfftwcaνpthreads:homedx/repofftw-3.3.10threadsf77funcs.h:42:μ<ipdefitionofdfftw_cleanup_threads_'; fftlib.o:/home/dx/repo/vasp-6.3.0-nvhpc222/build/std/fftlib/src/fftlib.cpp:82: first defined here
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-api.o): in function fftwitthreads:homedx/repofftw-3.3.10threadsaπ.c:40:μ<ipdefitionoffftw_init_threads'; fftlib.o:/home/dx/repo/vasp-6.3.0-nvhpc222/build/std/fftlib/src/fftlib.cpp:12: first defined here
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-api.o): in function fftwcaνpthreads:homedx/repofftw-3.3.10threadsaπ.c:61:μ<ipdefitionoffftw_cleanup_threads'; fftlib.o:/home/dx/repo/vasp-6.3.0-nvhpc222/build/std/fftlib/src/fftlib.cpp:67: first defined here/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-api.o): in function fftwplanwithnthreads:homedx/repofftw-3.3.10threadsaπ.c:71:μ<ipdefitionoffftw_plan_with_nthreads'; fftlib.o:/home/dx/repo/vasp-6.3.0-nvhpc222/build/std/fftlib/src/fftlib.cpp:32: first defined here
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-api.o): in function fftwitthreads:homedx/repofftw-3.3.10threadsaπ.c:51:undefedreferencefftw_the_planner'
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-api.o): in function fftwplanwithnthreads:homedx/repofftw-3.3.10threadsaπ.c:79:undefedreferencefftw_the_planner'
/usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/api.c:80: undefined reference to fftwimaxfftw_planner_nthreads':
/home/dx/repo/fftw-3.3.10/threads/api.c:85: undefined reference to fftw_the_planner' /usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-api.o): in function threads_register_hooks':
/home/dx/repo/fftw-3.3.10/threads/api.c:28: undefined reference to fftw_mksolver_ct_hook' /usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/api.c:29: undefined reference to fftw_mksolver_hc2hc_hook'
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-api.o): in function threads_unregister_hooks': /home/dx/repo/fftw-3.3.10/threads/api.c:34: undefined reference to fftw_mksolver_ct_hook'
/usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/api.c:35: undefined reference to fftw_mksolver_hc2hc_hook' /usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-conf.o): in function fftw_threads_conf_standard':
/home/dx/repo/fftw-3.3.10/threads/conf.c:35: undefined reference to fftw_solvtab_exec' /usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-dft-vrank-geq1.o): in function awake':
/home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:77: undefined reference to fftw_plan_awake' /usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-dft-vrank-geq1.o): in function destroy':
/home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:85: undefined reference to fftw_plan_destroy_internal' /usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:86: undefined reference to fftw_ifree'
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-dft-vrank-geq1.o): in function mkplan': /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:164: undefined reference to fftw_malloc_plain'
/usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:167: undefined reference to fftw_tensor_copy' /usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:171: undefined reference to fftw_mkproblem_dft'
/usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:174: undefined reference to fftw_mkplan_d' /usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:177: undefined reference to fftw_tensor_destroy'
/usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:179: undefined reference to fftw_mkplan_dft' /usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:187: undefined reference to fftw_ops_zero'
/usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:190: undefined reference to fftw_ops_add2' /usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:199: undefined reference to fftw_plan_destroy_internal'
/usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:200: undefined reference to fftw_ifree' /usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:202: undefined reference to fftw_tensor_destroy'
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-dft-vrank-geq1.o): in function fftw_dft_thr_vrank_geq1_register': /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:223: undefined reference to fftw_solver_register'
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-dft-vrank-geq1.o): in function pickdim': /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:104: undefined reference to fftw_pickdim'
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-dft-vrank-geq1.o): in function mksolver': /home/dx/repo/fftw-3.3.10/threads/dft-vrank-geq1.c:209: undefined reference to fftw_mksolver'/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-dft-vrank-geq1.o):(.data+0x0): undefined reference to fftw_dft_solve' /usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-ct.o): in function awake':
/home/dx/repo/fftw-3.3.10/threads/ct.c:87: undefined reference to fftw_plan_awake' /usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/ct.c:89: undefined reference to fftw_plan_awake'
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-ct.o): in function destroy': /home/dx/repo/fftw-3.3.10/threads/ct.c:96: undefined reference to fftw_plan_destroy_internal'/usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/ct.c:98: undefined reference to fftw_plan_destroy_internal' /usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/ct.c:99: undefined reference to fftw_ifree'
/usr/bin/ld: /home/dx/app/fftw3310/lib/libfftw3_omp.a(libfftw3_omp_la-ct.o): in function mkplan': /home/dx/repo/fftw-3.3.10/threads/ct.c:131: undefined reference to fftw_ct_applicable'
/usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/ct.c:137: undefined reference to fftw_choose_radix' /usr/bin/ld: /home/dx/repo/fftw-3.3.10/threads/ct.c:140: undefined reference to fftw_tensor_tornk1'
...



makefile

# Default precompiler options
CPP_OPTIONS = -DHOST=\"LinuxNV\" \
-DMPI -DMPI_BLOCK=8000 -Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Dvasp6 \
-Duse_bse_te \
-Dtbdyn \
-Dqd_emulate \
-Dfock_dblbuf \
-D_OPENMP \
-D_OPENACC \
-DUSENCCL -DUSENCCLP2P

CPP = nvfortran -Mpreprocess -Mfree -Mextend -E $(CPP_OPTIONS) $*$(FUFFIX) > $*$(SUFFIX)

# N.B.: you might need to change the cuda-version here
# to one that comes with your NVIDIA-HPC SDK
FC = mpif90 -acc -gpu=cc70,cuda11.0 -mp
FCL = mpif90 -acc -gpu=cc70,cuda11.0 -mp -c++libs

FREE = -Mfree

FFLAGS = -Mbackslash -Mlarge_arrays

OFLAG = -fast

DEBUG = -Mfree -O0 -traceback

OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o

LLIBS = -cudalib=cublas,cusolver,cufft,nccl -cuda

# Redefine the standard list of O1 and O2 objects
SOURCE_O1 := pade_fit.o
SOURCE_O2 := pead.o

# For what used to be vasp.5.lib
CPP_LIB = $(CPP)
FC_LIB = nvfortran
CC_LIB = nvc -w
CFLAGS_LIB = -O
FFLAGS_LIB = -O1 -Mfixed
FREE_LIB = $(FREE)

OBJECTS_LIB = linpack_double.o

# For the parser library
CXX_PARS = nvc++ --no_warnings

##
## Customize as of this point! Of course you may change the preceding
## part of this file as well if you like, but it should rarely be
## necessary ...
##

# Specify your NV HPC-SDK installation (mandatory)
#... first try to set it automatically
NVROOT =$(shell which nvfortran | awk -F /compilers/bin/nvfortran '{ print $$1 }')

# If the above fails, then NVROOT needs to be set manually
#NVHPC ?= /opt/nvidia/hpc_sdk
#NVVERSION = 21.11
#NVROOT = $(NVHPC)/Linux_x86_64/$(NVVERSION)

# Software emulation of quadruple precsion (mandatory)
QD ?= $(NVROOT)/compilers/extras/qd
LLIBS += -L$(QD)/lib -lqdmod -lqd
INCS += -I$(QD)/include/qd

# BLAS (mandatory)
BLAS = -lblas

# LAPACK (mandatory)
LAPACK = -llapack

# scaLAPACK (mandatory)
SCALAPACK = -Mscalapack

LLIBS += $(SCALAPACK) $(LAPACK) $(BLAS)

# FFTW (mandatory)
FFTW_ROOT = /home/dx/app/fftw3310
LLIBS += -L$(FFTW_ROOT)/lib -lfftw3 -lfftw3_omp
INCS += -I$(FFTW_ROOT)/include

# HDF5-support (optional but strongly recommended)
#CPP_OPTIONS+= -DVASP_HDF5
#HDF5_ROOT ?= /path/to/your/hdf5/installation
#LLIBS += -L$(HDF5_ROOT)/lib -lhdf5_fortran
#INCS += -I$(HDF5_ROOT)/include

# For the VASP-2-Wannier90 interface (optional)
#CPP_OPTIONS += -DVASP2WANNIER90
#WANNIER90_ROOT ?= /path/to/your/wannier90/installation
#LLIBS += -L$(WANNIER90_ROOT)/lib -lwannier

# For the fftlib library (experimental)
CPP_OPTIONS+= -Dsysv
FCL += fftlib.o
CXX_FFTLIB = nvc++ -mp --no_warnings -std=c++11 -DFFTLIB_THREADSAFE
INCS_FFTLIB = -I./include -I$(FFTW_ROOT)/include
LIBS += fftlib
LLIBS += -ldl


This issue disappear when I disable the experimental fftlib library or linking with intel mkl and fftw

My fftw is configured with nvhpc by:

CC=nvc CXX=nvc++ FC=nvfortran ./configure --enable-openmp --enable-mpi

ferenc_karsai
Global Moderator
Global Moderator
Posts: 538
Joined: Mon Nov 04, 2019 12:44 pm

Re: VASP 6.3.0 fftw multiple reference during linking

#2 Post by ferenc_karsai » Mon Mar 14, 2022 1:58 pm

Thank you very much for reporting that problem.
That will shurely help other users that encounter the problem.

We haven't installed nvhcp 22.2 so we could not test the problem. At least in versions up to 21.2 I don't see a problem.

Post Reply