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

@fooSynaptic

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions