Skip to content

[AMD] 'libamdhip64.so' has too-recent versioned symbols for "manylinux_2014" and "manylinux_2_28" wheels builds #3620

Closed
@fkouteib

Description

@fkouteib

Nightly wheels (4/08/24) are broken in tip of main branch with error

auditwheel: error: cannot repair "/tmp/cibuildwheel/built_wheel/triton_nightly-3.0.0.post20240409022326-cp37-cp37m-linux_x86_64.whl" to "manylinux2014_x86_64" ABI because of the presence of too-recent versioned symbols. You'll need to compile the wheel on an older toolchain.

I ran into this issue as well as part of my PR to upgrade wheels to many_linux_2_28. While debugging the issue, I found auditwheel-symbols which was more helpful in pinpointing the exact issue.

Here are the incompatible/offending symbols per manylinux version.

manylinux_2014 (current POR on Triton)

$ auditwheel-symbols -m 2014 triton-3.0.0-cp310-cp310-linux_x86_64.whl
triton/_C/libtriton.so is not manylinux_2_17(aka manylinux2014) compliant because it links the following forbidden libraries:
libm.so.6 offending symbols: exp@GLIBC_2.29, log@GLIBC_2.29, powf@GLIBC_2.27, pow@GLIBC_2.29, expf@GLIBC_2.27, exp2@GLIBC_2.29, log2f@GLIBC_2.27, exp2f@GLIBC_2.27, log2@GLIBC_2.29, logf@GLIBC_2.27
libc.so.6 offending symbols: stat@GLIBC_2.33, pthread_sigmask@GLIBC_2.32, lstat@GLIBC_2.33, pthread_join@GLIBC_2.34, dlerror@GLIBC_2.34, __pthread_key_create@GLIBC_2.34, pthread_rwlock_rdlock@GLIBC_2.34, dlopen@GLIBC_2.34, dlclose@GLIBC_2.34, pthread_create@GLIBC_2.34, dlsym@GLIBC_2.34, pthread_once@GLIBC_2.34, pthread_detach@GLIBC_2.34, pthread_attr_setstacksize@GLIBC_2.34, pthread_getname_np@GLIBC_2.34, pthread_setname_np@GLIBC_2.34, pthread_rwlock_unlock@GLIBC_2.34, dladdr@GLIBC_2.34, pthread_rwlock_wrlock@GLIBC_2.34
libstdc++.so.6 offending symbols: _ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21, _ZNSt28__atomic_futex_unsigned_base19_M_futex_notify_allEPj@GLIBCXX_3.4.21, _ZSt24__throw_out_of_range_fmtPKcz@GLIBCXX_3.4.20, _ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info@GLIBCXX_3.4.26, ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4@GLIBCXX_3.4.21, _ZNKSt3_V214error_category10equivalentEiRKSt15error_condition@GLIBCXX_3.4.21, _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcmm@GLIBCXX_3.4.21, _ZNSt13runtime_errorC1EPKc@GLIBCXX_3.4.21, _ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21, _ZNSt6thread6_StateD2Ev@GLIBCXX_3.4.22, _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm@GLIBCXX_3.4.21, _ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21, _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc@GLIBCXX_3.4.21, _ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21, _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@GLIBCXX_3.4.21, _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm@GLIBCXX_3.4.21, _ZNSt3_V216generic_categoryEv@GLIBCXX_3.4.21, _ZNSt3_V215system_categoryEv@GLIBCXX_3.4.21, _ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@GLIBCXX_3.4.22, _ZNSt13runtime_errorC2EPKc@GLIBCXX_3.4.21, ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4@GLIBCXX_3.4.21, _ZNSt3_V214error_categoryD2Ev@GLIBCXX_3.4.21, _ZNKSt3_V214error_category10equivalentERKSt10error_codei@GLIBCXX_3.4.21, _ZNSt16invalid_argumentC1EPKc@GLIBCXX_3.4.21, _ZNKSt3_V214error_category23default_error_conditionEi@GLIBCXX_3.4.21, _ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4.21, _ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21, _ZSt28__throw_bad_array_new_lengthv@GLIBCXX_3.4.29, ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4@GLIBCXX_3.4.21, _ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.30, _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21, _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm@GLIBCXX_3.4.21, _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@GLIBCXX_3.4.21, _ZNKSt3_V214error_category10_M_messageB5cxx11Ei@GLIBCXX_3.4.21, _ZNSt28__atomic_futex_unsigned_base19_M_futex_wait_untilEPjjbNSt6chrono8durationIlSt5ratioILl1ELl1EEEENS2_IlS3_ILl1ELl1000000000EEEE@GLIBCXX_3.4.21, _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21, _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc@GLIBCXX_3.4.21, _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm@GLIBCXX_3.4.21, _ZNSt12domain_errorC1EPKc@GLIBCXX_3.4.21, _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm@GLIBCXX_3.4.21, _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm@GLIBCXX_3.4.21
libstdc++.so.6 offending symbols: _ZdaPvm@CXXABI_1.3.9, _ZdlPvm@CXXABI_1.3.9, _ZdlPvSt11align_val_t@CXXABI_1.3.11, _ZdlPvmSt11align_val_t@CXXABI_1.3.11, _ZnwmSt11align_val_t@CXXABI_1.3.11, _ZNSt15__exception_ptr13exception_ptr10_M_releaseEv@CXXABI_1.3.13, _ZNSt15__exception_ptr13exception_ptr9_M_addrefEv@CXXABI_1.3.13
triton/backends/amd/lib/libamdhip64.so is not manylinux_2_17(aka manylinux2014) compliant because it links the following forbidden libraries:
libnuma.so.1
libhsa-runtime64.so.1
libamd_comgr.so.2
libm.so.6 offending versions: GLIBC_2.29
libstdc++.so.6 offending versions: GLIBCXX_3.4.20, GLIBCXX_3.4.21, GLIBCXX_3.4.26
libstdc++.so.6 offending versions: CXXABI_1.3.8, CXXABI_1.3.9
triton/backends/nvidia/bin/cuobjdump is manylinux_2_17(aka manylinux2014) compliant.
triton/backends/nvidia/bin/nvdisasm is manylinux_2_17(aka manylinux2014) compliant.
triton/backends/nvidia/bin/ptxas is manylinux_2_17(aka manylinux2014) compliant.

many_linux_2_28 (latest and upgrade target for Triton):

$ auditwheel-symbols -m 2_28 triton-3.0.0-cp310-cp310-linux_x86_64.whl
triton/_C/libtriton.so is not manylinux_2_28 compliant because it links the following forbidden libraries:
libstdc++.so.6 offending symbols: _ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info@GLIBCXX_3.4.26, _ZSt28__throw_bad_array_new_lengthv@GLIBCXX_3.4.29, _ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.30
libstdc++.so.6 offending symbols: _ZNSt15__exception_ptr13exception_ptr10_M_releaseEv@CXXABI_1.3.13, _ZNSt15__exception_ptr13exception_ptr9_M_addrefEv@CXXABI_1.3.13
libc.so.6 offending symbols: stat@GLIBC_2.33, pthread_sigmask@GLIBC_2.32, lstat@GLIBC_2.33, pthread_join@GLIBC_2.34, dlerror@GLIBC_2.34, __pthread_key_create@GLIBC_2.34, pthread_rwlock_rdlock@GLIBC_2.34, dlopen@GLIBC_2.34, dlclose@GLIBC_2.34, pthread_create@GLIBC_2.34, dlsym@GLIBC_2.34, pthread_once@GLIBC_2.34, pthread_detach@GLIBC_2.34, pthread_attr_setstacksize@GLIBC_2.34, pthread_getname_np@GLIBC_2.34, pthread_setname_np@GLIBC_2.34, pthread_rwlock_unlock@GLIBC_2.34, dladdr@GLIBC_2.34, pthread_rwlock_wrlock@GLIBC_2.34
libm.so.6 offending symbols: exp@GLIBC_2.29, log@GLIBC_2.29, pow@GLIBC_2.29, exp2@GLIBC_2.29, log2@GLIBC_2.29
triton/backends/amd/lib/libamdhip64.so is not manylinux_2_28 compliant because it links the following forbidden libraries:
libm.so.6 offending versions: GLIBC_2.29
libamd_comgr.so.2
libhsa-runtime64.so.1
libstdc++.so.6 offending versions: GLIBCXX_3.4.26
libnuma.so.1
triton/backends/nvidia/bin/cuobjdump is manylinux_2_28 compliant.
triton/backends/nvidia/bin/nvdisasm is manylinux_2_28 compliant.
triton/backends/nvidia/bin/ptxas is manylinux_2_28 compliant.

manylinux_2_28 uses AlmaLinux 8 (RHEL 8 derivative). Its newest GLIBCXX is 3.4.25 and GLIC 2.28. By comparison, Ubuntu 22.04 supports GLIBCXX 3.4.30 and GLIBC 2.35. I assume this is why it's not blocking Triton devs' builds I don't know to fix this issue completely but it seems like 2_28 wheels upgrade would get closer to closing the gap.

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