На моем тестовом сервере DL4j 1.0.0-Beta6 с Openblas использует только один поток. Первоначально он сообщал о потоке, поэтому я экспортировал 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% ЦП вместо ожидаемых 400%. То же приложение, работающее на моем ноутбуке с CUDA, работает нормально, а nvidia-smi сообщает об использовании 7x%. Похоже, это связано с настройкой Openblas на тестовом сервере. Я помню, как некоторое время назад со старыми бета-версиями полностью использовался ЦП, который по умолчанию использовал MKL (который я больше не могу использовать, потому что ЦП сервера не имеет AVX2).
Что-то не так с журналом выше или что-то, что я мог бы проверить?