首页 > 解决方案 > DL4j 1.0.0-Beta6 Openblas 不使用多个线程

问题描述

在我的测试服务器上,带有 Openblas 的 DL4j 1.0.0-Beta6 仅使用一个线程。最初它报告线程,所以我导出了 OMP_NUM_THREADS=4,这使得 DL4j 在启动时记录正确的线程数:

[:19:30 CET 2020] org.nd4j.linalg.factory.Nd4jBackend      : Loaded [CpuBackend] backend
[:19:30 CET 2020] org.nd4j.nativeblas.NativeOpsHolder      : Number of threads used for linear algebra: 4
[:19:30 CET 2020] org.nd4j.nativeblas.Nd4jBlas             : Number of threads used for OpenMP BLAS: 4
[:19:30 CET 2020] o.n.l.a.o.e.DefaultOpExecutioner         : Backend used: [CPU]; OS: [Linux]
[:19:30 CET 2020] o.n.l.a.o.e.DefaultOpExecutioner         : Cores: [4]; Memory: [0.9GB];
[:19:30 CET 2020] o.n.l.a.o.e.DefaultOpExecutioner         : Blas vendor: [OPENBLAS]
[:19:30 CET 2020] o.d.nn.multilayer.MultiLayerNetwork      : Starting MultiLayerNetwork with WorkspaceModes set to [training: ENABLED; inference: ENABLED], cacheMode set to [DEVICE]

不幸的是,它仍然只使用 100% 的 CPU,而不是预期的 400%。使用 CUDA 在我的笔记本电脑上运行的相同应用程序运行良好,nvidia-smi 报告使用率为 7x%。所以它似乎与测试服务器上的 Openblas 设置有关。我记得前段时间在较旧的 beta 版本中,CPU 已被完全使用,默认情况下使用 MKL(我不能再使用了,因为服务器 CPU 没有 AVX2)。

上面的日志有什么问题或者我可以检查什么吗?

标签: deeplearning4jdl4j

解决方案


很高兴看到您的源代码。请提出问题:https ://github.com/deeplearning4j/deeplearning4j/issues


推荐阅读