Not utilising AVX2 instructions after compilation from sources
还没有人认领这个 Issue。
- 主要语言
- Java
- 星标
- 928
- 派生
- 227
- PR 合并指标
- 30 天内没有已合并 PR
描述
System information
- OS Platform and Distribution: Linux Ubuntu 20.04
- TensorFlow installed from (source or binary): built via "mvn install"
- TensorFlow version: 2.3 (using 0.2.0-SNAPSHOT)
- Python version: 3.8.2
- Bazel version (if compiling from source): 3.4.1
- GCC/Compiler version (if compiling from source): 9.3.0
Problem:
I have been using TF 1.15 from original java TF repository
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow</artifactId>
<version>1.15.0</version>
</dependency>
which gave me this output:
I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2494460000 Hz
I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7f77250299d0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
so found out this repo, made environment to be able to build TF from sources, ran mvn install command which, I would assume, compiled TF on my specific platform. Using dependencies in my project:
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow-core-api</artifactId>
<version>0.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow-core-api</artifactId>
<version>0.2.0-SNAPSHOT</version>
<classifier>linux-x86_64</classifier>
</dependency>
getting output:
Warning: Could not load Loader: java.lang.UnsatisfiedLinkError: no jnijavacpp in java.library.path: [/usr/java/packages/lib, /usr/lib64, /lib64, /lib, /usr/lib]
Warning: Could not load Pointer: java.lang.UnsatisfiedLinkError: no jnijavacpp in java.library.path: [/usr/java/packages/lib, /usr/lib64, /lib64, /lib, /usr/lib]
Warning: Could not load BytePointer: java.lang.UnsatisfiedLinkError: no jnijavacpp in java.library.path: [/usr/java/packages/lib, /usr/lib64, /lib64, /lib, /usr/lib]
I external/org_tensorflow/tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the following CPU instructions in performance-critical operations: AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
Warning: Could not load PointerPointer: java.lang.UnsatisfiedLinkError: no jnijavacpp in java.library.path: [/usr/java/packages/lib, /usr/lib64, /lib64, /lib, /usr/lib]
Everything somehow runs, but throughput is about the same as generic 1.15 version and latency is about 2 times worse than the previous version using the same TF model with V1 behavior enabled. Not sure how to enable AVX2 FMA instructions when TF clearly founds them. I suppose it has something to do about missing jnijavacpp library. Could anyone help me, please?
Thanks
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
未指定源文件或测试。首先使用 mvn install 重现 Ubuntu 20.04 构建,然后检查本机库加载警告以及报告的 AVX2/FMA 消息。完成标准是确定已构建的 Java 包为何不符合预期性能,并通过可比较的吞吐量和延迟测量记录或验证修复结果。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java, tensorflow
- 领域
- build-system, machine-learning
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 20/100