使用自定义的oneDNN库实现构建Tensorflow的步骤是什么?

问题描述

我正在使用自定义的onednN库实现,我需要使用Tensorflow(v2.4.0)进行构建。 但是,我注意到在构建Tensorflow时,没有使用系统提供的OnednN库的构建选项。 我想知道支持使用系统提供的onednN库的Tensorflow构建的步骤。

一些细节...

  1. onednN库版本为1.6.4,并且已安装在系统(Linux)中。 此版本与Tensforflow使用“ --config = mkl_opensource_only” Bazel标志进行编译时使用的版本相对应。
  2. 我可以访问该库的源代码,但是最好使用编译后的库。
  3. 目标体系结构是RISC-V,而操作系统是Linux。

解决方法

告诉 bazel 链接自定义库没有简单的方法,但如果你有修改过的 oneDNN 源目录,你可以编辑 tensorflow/workspace.bzl 文件并用 new_local_repository 规则替换 mkl_dnn_v1 存储库定义指向您修改后的源目录。 IE。替换此块:

    tf_http_archive(
        name = "mkl_dnn_v1",build_file = clean_dep("//third_party/mkl_dnn:mkldnn_v1.BUILD"),sha256 = "5369f7b2f0b52b40890da50c0632c3a5d1082d98325d0f2bff125d19d0dcaa1d",strip_prefix = "oneDNN-1.6.4",urls = [
            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/oneapi-src/oneDNN/archive/v1.6.4.tar.gz","https://github.com/oneapi-src/oneDNN/archive/v1.6.4.tar.gz",],)

像这样:

    native.new_local_repository(
        name = "mkl_dnn_v1",path = "/path/to/your/modified/oneDNN/sources",)

如果您添加了任何新的源文件,您可能还想修改 third_party/mkl_dnn/mkldnn_v1.BUILD 文件。

附录:

--config=mkl_opensource_only 现在似乎坏了,您可能会更幸运地使用 --config=mkl