Skip to content

Compile bug: s390x/zDNN linking errors #15772

Description

@owainkenwayucl

Git commit

[uccaoke@vind2 llama.cpp]$ git rev-parse HEAD
f44f793

Operating systems

Linux

GGML backends

zDNN

Problem description & steps to reproduce

I'm trying to compile llama.cpp on an IBM LinuxONE system running AlmaLinux 9.x with zDNN installed (from DNF). I've successfully compiled + linked other software with zDNN but when I try to build Llama.cpp I get the following link errors when trying to link libggml-zdnn.so into executables:

[ 28%] Linking CXX executable ../bin/test-tokenizer-0
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_get_nnpa_max_dim_idx_size()'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_init_pre_transformed_desc(zdnn_data_layouts, zdnn_data_types, zdnn_tensor_desc*, ...)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_is_nnpa_installed()'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_matmul_transpose_op(zdnn_ztensor const*, zdnn_ztensor const*, zdnn_ztensor const*, bool, bool, zdnn_matmul_ops, zdnn_ztensor*)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_generate_transformed_desc(zdnn_tensor_desc const*, zdnn_tensor_desc*)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_free_ztensor_buffer(zdnn_ztensor const*)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_init_ztensor_with_malloc(zdnn_tensor_desc*, zdnn_tensor_desc*, zdnn_ztensor*)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_transform_ztensor(zdnn_ztensor*, ...)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_transform_origtensor(zdnn_ztensor const*, void*)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_is_nnpa_parmblk_fmt_installed(int, ...)'
collect2: error: ld returned 1 exit status
gmake[2]: *** [tests/CMakeFiles/test-tokenizer-0.dir/build.make:104: bin/test-tokenizer-0] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:1917: tests/CMakeFiles/test-tokenizer-0.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2

The cmake configure line I'm using is:

cmake -S . -B build_zdnn -DCMAKE_BUILD_TYPE=Release -DGGML_ZDNN=ON

zDNN is in /usr/lib64/libzdnn.so (and .a etc), the -devel packages for it are installed.

[uccaoke@vind2 llama.cpp]$ rpm -qa | grep zdnn
libzdnn-1.1.1-1.el9.s390x
libzdnn-devel-1.1.1-1.el9.s390x
libzdnn-static-1.1.1-1.el9.s390x

I suspect I need to modify some of the cmake stuff so that it explicitly links the libzdnn.so into executables but I'm not a cmake expert so not sure where to start? Any pointers would be appreciated!

First Bad Commit

No response

Compile command

cmake -S . -B build_zdnn -DCMAKE_BUILD_TYPE=Release -DGGML_ZDNN=ON
cmake --build build_zdnn --config Release

Relevant log output

[ 28%] Linking CXX executable ../bin/test-tokenizer-0
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_get_nnpa_max_dim_idx_size()'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_init_pre_transformed_desc(zdnn_data_layouts, zdnn_data_types, zdnn_tensor_desc*, ...)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_is_nnpa_installed()'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_matmul_transpose_op(zdnn_ztensor const*, zdnn_ztensor const*, zdnn_ztensor const*, bool, bool, zdnn_matmul_ops, zdnn_ztensor*)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_generate_transformed_desc(zdnn_tensor_desc const*, zdnn_tensor_desc*)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_free_ztensor_buffer(zdnn_ztensor const*)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_init_ztensor_with_malloc(zdnn_tensor_desc*, zdnn_tensor_desc*, zdnn_ztensor*)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_transform_ztensor(zdnn_ztensor*, ...)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_transform_origtensor(zdnn_ztensor const*, void*)'
/usr/bin/ld: ../bin/libggml-zdnn.so: undefined reference to `zdnn_is_nnpa_parmblk_fmt_installed(int, ...)'
collect2: error: ld returned 1 exit status
gmake[2]: *** [tests/CMakeFiles/test-tokenizer-0.dir/build.make:104: bin/test-tokenizer-0] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:1917: tests/CMakeFiles/test-tokenizer-0.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2

Metadata

Metadata

Assignees

Labels

IBM zDNNissues specific to IBM zDNN AcceleratorbugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions