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 dfftw∈itthreads′:homedx/repofftw-3.3.10threadsf77funcs.h:37:μ<ip≤def∈itionofdfftw_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 dfftwc≤aνpthreads′:homedx/repofftw-3.3.10threadsf77funcs.h:42:μ<ip≤def∈itionofdfftw_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 fftw∈itthreads′:homedx/repofftw-3.3.10threadsaπ.c:40:μ<ip≤def∈itionoffftw_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 fftwc≤aνpthreads′:homedx/repofftw-3.3.10threadsaπ.c:61:μ<ip≤def∈itionoffftw_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:μ<ip≤def∈itionoffftw_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 fftw∈itthreads′:homedx/repofftw-3.3.10threadsaπ.c:51:undef∈edreference→fftw_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:undef∈edreference→fftw_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
VASP 6.3.0 fftw multiple reference during linking
Moderators: Global Moderator, Moderator
-
- Newbie
- Posts: 4
- Joined: Thu Nov 04, 2021 7:56 am
-
- Global Moderator
- Posts: 538
- Joined: Mon Nov 04, 2019 12:44 pm
Re: VASP 6.3.0 fftw multiple reference during linking
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.
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.