代码之家  ›  专栏  ›  技术社区  ›  Mahe

更改集群上的模块系统后出现“符号查找错误:未定义的符号”

  •  0
  • Mahe  · 技术社区  · 2 年前

    在我运行应用程序的集群的操作系统之后 PETSC (3.19版)已从CentOS 7更改为Rocky Linux 8,模块系统也更改为Lmod,我得到了几个 error: symbol lookup error: undefined symbol: 错误消息。

    使用启动应用程序时 make ,在按用户方向中止作业之前,不会发生任何事情。使用运行应用程序时 LD_DEBUGS=files ,我收到了几个与中的符号有关的错误消息 UCX ,例如:

    /cvmfs/software.hpc.rwth.de/Linux/RH8/x86_64/intel/skylake_avx512/software/UCX/1.12.1-GCCcore-11.3.0/lib/ucx/libuct_cma.so.0: error: symbol lookup error: undefined symbol: ucs_module_global_init (fatal)
    

    此外,当与一起运行时,会显示这两条错误消息 LD_DEBUGS=文件

    /rwthfs/rz/cluster/home/mh787286/petsc/arch-linux-c-debug/lib/libpetsc.so.3.19: error: symbol lookup error: undefined symbol: MPID_Abort (fatal)
    
    /rwthfs/rz/cluster/home/mh787286/petsc/arch-linux-c-debug/lib/libpetsc.so.3.19: error: symbol lookup error: undefined symbol: ps_tool_initialize (fatal)
    

    我有个习惯 Makefile ,看起来是这样的:

    ### VARIABLES
    
    ifndef PETSC_DIR
        PETSC_DIR=petsc/arch-linux-c-debug
    
        ifdef R_SLURM_ROLES
            module load GCC/11.3.0 OpenMPI/4.1.4
        endif
    
        UNAME_S := $(shell uname -s)
        ifeq ($(UNAME_S),Darwin)
            PETSC_DIR=/usr/local/Cellar/petsc/3.18.5
        endif
    endif
    
    
    
    include $(PETSC_DIR)/lib/petsc/conf/petscvariables
    CFLAGS=-Werror -ggdb -Wall -D_GNU_SOURCE -Wno-nullability-completeness
    INCLUDES=$(PETSC_CC_INCLUDES)
    
    LDFLAGS=-L$(LD_LIBRARY_PATH) -L$(PETSC_DIR)/lib -lm $(PETSC_LIB_BASIC)
    ifeq ($(UNAME_S),Darwin)
        LDFLAGS=-L$(PETSC_DIR)/lib -lm $(PETSC_LIB_BASIC)
    endif
    
    GMSH = gmsh
    
    export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):$(PETSC_DIR)/arch-linux-c-debug/lib
    
    ### RUNTIME OPTIONS
    MPIOPTS=-np 1 # currently no parallel support
    
    SRC := $(wildcard src/*.cpp) $(wildcard src/**/*.cpp) 
    OBJ := $(SRC:%.cpp=obj/%.o)
    
    
    # Meshes
    GEO := $(wildcard meshdata/*-1D.geo)
    MSH := $(GEO:%.geo=%.msh)
    
    
    # Systems
    SYS := $(wildcard sysdata/*.sys)
    DEF := $(SYS:%.sys=%.def)
    
    # PetSc Options
    TOL=-snes_atol 1e-8 -snes_rtol 1e-30 -snes_stol 1e-16 -ts_pseudo_fatol 1e-8 -ts_pseudo_frtol 1e-30
    MONITOR=-snes_converged_reason #-snes_monitor 
    OPTS=$(MONITOR) $(TOL) -snes_max_it 10 # -info
    
    .PHONY: clean all debug valgrind test sys
    all: memristor sys
    
    run: sys memristor
        @rm -rf outdata/memristor2
        @mv outdata/memristor outdata/memristor2 || true # cache last result
        @echo "[EX] >>> "$<
        $(LDPATH) $(MPIEXEC) -n 1 ./memristor $(OPTS) 
    
    run-parallel: sys memristor
        $(LDPATH) $(MPIEXEC) -n 2 ./memristor $(OPTS) 
    
    ### PATTERNS
    obj/%.o: %.cpp
        @echo "[CC] >>> "$<
        @mkdir -p $(dir $@)
        @$(CXX) $(CFLAGS) $(INCLUDES) -std=c++11 -c $< -o $@ 
    %1D.msh: %1D.geo
        @echo "[GM] >>> "$<
        $(GMSH) -1 -format msh22 $< -o $@ 
        ### Gmsh -1 -format msh22 input.geo -o output.msh
    
    %.def: %.sys
        @echo "[DG] >>> "$<
        @sysdata/defgen3.py $< > $@
    
    ### MESHES
    geo: $(MSH)
    ### SYSTEMS
    sys: $(DEF)
    
    ### APPLICATIONS
    
    bpm: $(OBJ) obj/bpm.o
        @echo "[LD] >>> "$@
        $(CXX) $(OBJ) obj/bpm.o -o $@  $(LDFLAGS)
    
    bpm-run: sys bpm
        @echo "[EX] >>> "$<
        $(LDPATH) $(MPIEXEC) -n 1 ./bpm $(POTENTIAL)  $(OPTS) 
    
    cathode: $(OBJ) obj/cathode.o
        @echo "[LD] >>> "$@
        $(CXX) $(OBJ) obj/cathode.o -o $@  $(LDFLAGS)
    
    cathode-run: sys cathode
        @echo "[EX] >>> "$<
        $(LDPATH) $(MPIEXEC) -n 1 ./cathode $(OPTS) 
    
    valgrind-cathode: cathode
        @echo "[VG] >>> "$<
        @$(LDPATH) valgrind --leak-check=full --track-origins=yes --show-leak-kinds=all --log-file=valgrind-out.txt ./cathode
    
    callgrind-cathode: cathode
        @echo "[VG] >>> "$<
        @$(LDPATH) valgrind --tool=callgrind ./cathode # --track-origins=yes
    
    
    
    clean:
        rm -rf obj/*
    

    我已经查找了需要链接才能运行的共享库 PETSC 他们似乎都在里面 LD_LIBRARY_PATH 。所以我很难确定是什么原因导致了这个问题。我还是个初学者 PETSC ,所以我们非常感谢您的帮助和建议。非常感谢。

    0 回复  |  直到 2 年前