Skip to content

Ubuntu, Linker error, CPU-only #276

@ptrajdos

Description

@ptrajdos

Hi.

Im getting an linker error while building thundersvm for working on CPU only.
Im doing

git clone https://github.com/Xtra-Computing/thundersvm.git
cd thundersvm
git submodule init eigen && git submodule update
git submodule update --init src/test/googletest
mkdir build && cd build && cmake -DUSE_CUDA=OFF .. && make -j

As a result Im getting:

[ 96%] Linking CXX executable ../../bin/thundersvm-predict
/usr/bin/ld: ../../lib/libthundersvm.so: undefined reference to `svm_kernel::sum_kernel_values_instant(SyncArray<double> const&, int, SyncArray<int> const&, SyncArray<int> const&, SyncArray<double> const&, SyncArray<float> const&, SyncArray<double>&, int, int, SyncArray<double>&)'
collect2: error: ld returned 1 exit status
make[2]: *** [src/thundersvm/CMakeFiles/thundersvm-predict.dir/build.make:100: bin/thundersvm-predict] Błąd 1
make[1]: *** [CMakeFiles/Makefile2:154: src/thundersvm/CMakeFiles/thundersvm-predict.dir/all] Błąd 2
make[1]: *** Oczekiwanie na niezakończone zadania....
[100%] Linking CXX executable ../../bin/thundersvm-train
/usr/bin/ld: ../../lib/libthundersvm.so: undefined reference to `svm_kernel::sum_kernel_values_instant(SyncArray<double> const&, int, SyncArray<int> const&, SyncArray<int> const&, SyncArray<double> const&, SyncArray<float> const&, SyncArray<double>&, int, int, SyncArray<double>&)'
collect2: error: ld returned 1 exit status
make[2]: *** [src/thundersvm/CMakeFiles/thundersvm-train.dir/build.make:100: bin/thundersvm-train] Błąd 1
make[1]: *** [CMakeFiles/Makefile2:128: src/thundersvm/CMakeFiles/thundersvm-train.dir/all] Błąd 2
make: *** [Makefile:136: all] Błąd 2

Indeed the shared object file do not contain this symbol. The following returns no lines:

nm --demangle --extern-only --defined-only ./lib/libthundersvm.so |grep sum_kernel_values_instant

Grepping the source to find this symbol indicates that the function is defined only in ./src/thundersvm/kernel/kernelmatrix_kernel.cu which is not included in building process for CPU-only version. (Am I right?)
Log of the following command is included.

grep -rni "sum_kernel_values_instant" ../ >./grep.log

grep.log

Host info:
OS: Ubuntu 22.04.4 LTS x86_64
Kernel: 5.15.0-101-generic
CPU: Intel i7-8665U (8) @ 4.800GHz
GPU: Intel WhiskeyLake-U GT2 [UHD Graphics 620]

Best Regards,
Pawel

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions