DL4j 1.0.0-Beta6 Openblas не использует более одного потока

На моем тестовом сервере 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).

Что-то не так с журналом выше или что-то, что я мог бы проверить?


person Christian Spriegel    schedule 23.01.2020    source источник
comment
Если MKL работает нормально, я бы просто рекомендовал продолжать использовать его. Он не требует AVX2.   -  person Samuel Audet    schedule 24.01.2020
comment
У меня сложилось впечатление, что MKL нужен AVX2 из другого потока, но это не так. Поэтому я попробовал MKL, и он действительно использует все процессоры. Так что я был счастлив, пока не понял, что это не быстрее, чем однопоточный openblas. Что-то должно быть не так. Может быть, это я, потому что я вызываю fit() вручную и не использую никаких итераторов DL4js?   -  person Christian Spriegel    schedule 26.01.2020
comment
Вероятно, это потому, что размеры вашей партии недостаточно велики.   -  person Samuel Audet    schedule 26.01.2020
comment
Я ожидаю, что MKL не поднимется до 400% ЦП, если размер пакета слишком мал. Это предположение неверно? Я сделаю еще несколько тестов.   -  person Christian Spriegel    schedule 26.01.2020


Ответы (1)


Было бы неплохо увидеть ваш исходный код. Сообщите о проблеме: https://github.com/deeplearning4j/deeplearning4j/issues

person raver119    schedule 24.01.2020