毕昇编译器链接kspblas出现openmp bug
收藏回复举报
毕昇编译器链接kspblas出现openmp bug
t('forum.solved') 已解决
发表于2024-08-20 19:23:36
0 查看

我在使用kspblas的时候出现了openmp的bug,原本正常的代码在连接kspblas这个库以后就发生问题,gdb查看

Thread 49 "thundersvm-trai" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x4000fd010d30 (LWP 2900998)]
0x000040000052eb28 in ?? () from /workspace/public/software/compilers/bisheng/2.1.0/lib/libomp.so
(gdb) 
(gdb) bt
#0  0x000040000052eb28 in ?? () from /workspace/public/software/compilers/bisheng/2.1.0/lib/libomp.so
#1  0x000040000052b024 in ?? () from /workspace/public/software/compilers/bisheng/2.1.0/lib/libomp.so
#2  0x000040000052e0e8 in ?? () from /workspace/public/software/compilers/bisheng/2.1.0/lib/libomp.so
#3  0x0000400000508d44 in ?? () from /workspace/public/software/compilers/bisheng/2.1.0/lib/libomp.so
#4  0x00004000005506cc in ?? () from /workspace/public/software/compilers/bisheng/2.1.0/lib/libomp.so
#5  0x00004000005f87ac in start_thread (arg=0x400000037af0) at pthread_create.c:486
#6  0x00004000007060fc in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78

用ldd查看链接库,连接·kspblas之前

linux-vdso.so.1 (0x00004001f4fe0000)
        libthundersvm.so => /workspace/home/migration/qiujiaming01/shs/test/thundersvm-master/build/lib/libthundersvm.so (0x00004001f4ff0000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00004001f50c0000)
        libm.so.6 => /usr/lib64/libm.so.6 (0x00004001f52b0000)
        libomp.so => /workspace/public/software/compilers/bisheng/2.1.0/lib/libomp.so (0x00004001f5380000)
        libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00004001f5460000)
        libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00004001f54a0000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x00004001f54e0000)
        /lib/ld-linux-aarch64.so.1 (0x00004001f4f90000)
        librt.so.1 => /usr/lib64/librt.so.1 (0x00004001f5670000)
        libdl.so.2 => /usr/lib64/libdl.so.2 (0x00004001f56a0000)

之后

linux-vdso.so.1 (0x00004000b4f80000)
        libthundersvm.so => /workspace/home/migration/qiujiaming01/shs/thundersvm/build/lib/libthundersvm.so (0x00004000b4f90000)
        libkspblas.so.1.4.0 => /workspace/public/software/libs/kml/1.4.0/lib/kspblas/multi/libkspblas.so.1.4.0 (0x00004000b5030000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00004000b5140000)
        libm.so.6 => /usr/lib64/libm.so.6 (0x00004000b5330000)
        libomp.so => /workspace/public/software/compilers/bisheng/2.1.0/lib/libomp.so (0x00004000b5400000)
        libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00004000b54e0000)
        libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00004000b5520000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x00004000b5560000)
        libgomp.so.1 => /usr/lib64/libgomp.so.1 (0x00004000b56f0000)
        librt.so.1 => /usr/lib64/librt.so.1 (0x00004000b5740000)
        /lib/ld-linux-aarch64.so.1 (0x00004000b4f30000)
        libdl.so.2 => /usr/lib64/libdl.so.2 (0x00004000b5770000

我怀疑是这个libgomp.so的问题,但是不知道为什么会出现这种问题

我对cmake的修改就是添加了

link_directories(/workspace/public/software/libs/kml/1.4.0/lib/kspblas/multi )

并且修改

target_link_libraries(${PROJECT_LIB_NAME} OpenMP::OpenMP_CXX  )

target_link_libraries(${PROJECT_LIB_NAME} OpenMP::OpenMP_CXX kspblas )

我的系统是Kunpeng-920 使用的module为

module list 
Currently Loaded Modulefiles:
 1) bisheng/2.1.0/bisheng2.1.0

使用的kml版本为 1.4.0

我要发帖子