Skip to content

libstr_avx_op.so: undefined symbol OpKernelContext::CtxFailureWithWarning on TF 2.14 (prebuilt ops/2.12 copied to ops/2.14) #553

Description

@fooSynaptic

libstr_avx_op.so: undefined symbol OpKernelContext::CtxFailureWithWarning on TF 2.14 (prebuilt ops/2.12 copied to ops/2.14)

Error message:

load avx string_split op failed: .../easy_rec/python/ops/2.14/libstr_avx_op.so: undefined symbol: _ZN10tensorflow15OpKernelContext21CtxFailureWithWarningEPKciRKN3tsl6StatusE

Environment

  • OS: Linux x86_64
  • Python: 3.10
  • TensorFlow: 2.14.0 (Intel Extension for TensorFlow / tf-intel conda env)
  • EasyRec: 0.8.5 (from alibaba/EasyRec, easy_rec/python/ops layout)
  • Ops directory: easy_rec resolves get_ops_dir() to .../python/ops/2.14. We populated 2.14 by copying prebuilt artifacts from ops/2.12 in the same repo (there is no 2.14 folder upstream).

Steps to reproduce

  1. Install TF 2.14 (e.g. Intel build) and EasyRec from this repo.
  2. Ensure libstr_avx_op.so is present under easy_rec/python/ops/<tf_major_minor>/ (e.g. copy from ops/2.12 to ops/2.14 if needed).
  3. import easy_rec (or import path that loads gen_str_avx_op.py).
  4. Observe warning / failed load_op_library with the symbol above.

Expected behavior

Either:

  • Prebuilt libstr_avx_op.so matches the documented TF versions (e.g. explicit matrix: TF version ↔ ops tarball), or
  • Source code for libstr_avx_op (and build instructions / Bazel or g++ recipe) is published so users can rebuild against their exact TF (including Intel TF) ABI, or
  • Documentation states that libstr_avx_op is only supported for specific TF builds and unsupported combinations should remove the .so to avoid load errors.

Actual behavior

tf.load_op_library fails with undefined symbol; AVX string split op is not loaded.

Additional context

  • In the open-source tree, easy_rec/python/ops/src/ only contains load_kv_embed.cc / load_dense_embed.cc. There is no public C++ source for libstr_avx_op.so or libcustom_ops.so, so we cannot rebuild those ops locally against TF 2.14.
  • Similar ABI issues have been seen for other prebuilt .so files when TF or vendor build differs.

Request

  1. Please clarify whether libstr_avx_op.so sources can be open-sourced or if TF2.14 (and/or Intel TF)-compatible prebuilts will be provided.
  2. If prebuilts only target specific TF minors (e.g. 2.12), please document that explicitly and ideally ship a ops/2.14 (or versioned) directory that matches stock TF 2.14 and/or document Intel TF compatibility.
    Thank you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions