ENV хорошая штука, спасибо, но параметров командной строки я там не увидел. Т.е., если запуск был julia -t1 -p1, то хочется найти эту информацию ("-t1 -p1") из REPL.
Проблема частично решена, если перед запуском джулии выполнить export OMP_NUM_THREADS=1, то время выполнения в REPL +- такое же как в плуто. Но интересно, что плуто эту переменную среды не ставит, а в остальном ENV примерно одинаковый, значимых различий не нашел
Т.е. проблема, скорее всего, на стороне openBLAS, который забивает все доступные ядра и, в итоге, сам себе мешает. Непонятно только почему в окружении pluto.jl все нормально.
А так, Threads.nthreads() покажет количество потоков. Надо в доках поискать какая команда показывает количество процессов запущенных, там что-то похожее.
А, вот теперь до меня дошло, оказывается есть отдельный параметр для BLAS трэдов. Видимо, Pluto где-то делает что-то вроде BLAS.set_num_threads(1) или ENV["OPENBLAS_NUM_THREADS"]=1. По умолчанию используется количество логических ядер, что плохо. Есть еще вот этот issue https://github.com/JuliaLang/julia/issues/33409 открытый с 2019 года Всем спасибо!
Я, в итоге, подцепил intel mkl. Массовый расчет собственных разложений пошел гораздо веселее (раза в 1,5) чем openBlas, при самых правильных настройках
Да, спасибо. Я немножко общался с Холи на тему связанную с анализом стабильности, но подробно в Снуп не смотрел (блог пост видел), вероятно надо посмотреть. Мы пока ничего не оптимизируем просто, а пытаемся разобраться в том как на это надо смотреть с формальной точки зрения.
О! Это интересно. Я как-то раз работал с GitHub GraphQL API, но это было что-то очень кастомное. Довольно много рутины было, очень хорошо, что кто-то собрал пакет, который эту работу упрощает.