mrgloom 242 Жалоба Опубликовано November 23, 2015 (изменено) Как можно менять BLAS билиотеки для Caffe на Ubuntu 14.04? Например OpenBlas на MKL?Надо ли перекомилировать каждый раз caffe заново? или можно настроить какие то среды типа как virtualenv в python или перед запуском как то менять переменные среды? Нужно ли использовать какие то специальные форки caffe для использования всех CPU или достаточно распараллеливания внутри BLAS? related info:http://courses.cs.tau.ac.il/Caffe_workshop/Bootcamp/pdf_lectures/Lecture 8 CPU performance.pdf related threads:https://github.com/BVLC/caffe/pull/80 Изменено November 27, 2015 пользователем mrgloom Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано November 23, 2015 1. Думаю, что надо запускать CMake, в котором указывать новую имплементацию BLAS, перекомпилировать. И больше никак.Но! Это теоретически можно ускорить с помощью веток в git - просто переключаться между ними. Хотя сама необходимость в такой смене ставит меня в тупик. 2. Если верить этой статье (репозиторий проекта), то Caffe не лучшим способом использует параллелизм на CPU. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BeS 53 Жалоба Опубликовано November 23, 2015 Но! Это теоретически можно ускорить с помощью веток в git - просто переключаться между ними. Хотя сама необходимость в такой смене ставит меня в тупик.Эмм...а зачем бранчеваться для этого? В caffe вроде бы все параметры через командную строку конфигурируются...если религия запрещает доверять истории командной строки, то можно заскриптовать этот процесс каким-нибудь питоном) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано November 23, 2015 Чтобы не перекомпилировать. Мне казалось, что конкретный blas задаётся ещё до компиляции, во время конфигурирования CMake. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано November 23, 2015 Я так понимаю CMake там не официально поддерживается, официально в репозитории Makefilehttps://github.com/BVLC/caffe/blob/master/Makefile.config.examplehttps://github.com/BVLC/caffe/blob/master/Makefile даже если делать отдельные билды caffe, то как потом это зоопарк содержать? просто в отдельный папках, не прописывая глобально путь к caffe бинарнику? Тут есть сравнение по скорости, но думаю много зависит от модели сети+железа.https://github.com/soumith/convnet-benchmarks Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано November 23, 2015 Я так понимаю CMake там не официально поддерживается, официально в репозитории Makefilehttps://github.com/BVLC/caffe/blob/master/Makefile.config.examplehttps://github.com/BVLC/caffe/blob/master/Makefileдаже если делать отдельные билды caffe, то как потом это зоопарк содержать? просто в отдельный папках, не прописывая глобально путь к caffe бинарнику?Странное заявление, что у них там и CMakeLists.txt в репозитории вполне оициально лежит. В мастере!И поддерживать не билды, а ветки. Но, повторюсь, не вижу особого смысла в онлайн переключении между библиотеками BLAS. Зачем? Тут есть сравнение по скорости, но думаю много зависит от модели сети+железа.https://github.com/soumith/convnet-benchmarksВ ZNN исследовалось исключительно масштабирование на несколько ядер. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано November 23, 2015 Странное заявление, что у них там и CMakeLists.txt в репозитории вполне оициально лежит. В мастере! http://caffe.berkeleyvision.org/installation.html"The official Makefile and Makefile.config build are complemented by an automatic CMake build from the community."Хмм, наверно уже подтянули. И поддерживать не билды, а ветки. Но, повторюсь, не вижу особого смысла в онлайн переключении между библиотеками BLAS. Зачем?В итоге пользоваться какой то одной версией, но для бенчмарка хочется попробовать все типы BLAS.Было бы неплохо если бы в .sh скрипте можно было перед запуском бинарника caffe проставить какую либу BLAS использовать. Как производится дистрибуция/поставка caffe, простым копированием папки или надо отдельно ставить еще либы через apt-get? возможна ли статическая линковка всего необходимого в один бинарник? скажем если я соберу на локальном компьютере на ubuntu 12.04 будет или эта сборка работать на многоядерном сервере с Ubuntu 14.04?http://caffe.berkeleyvision.org/installation.html"Distribution: run make distribute to create a distribute directory with all the Caffe headers, compiled libraries, binaries, etc. needed for distribution to other machines."т.е. простым копированием папки или надо либы раскладывать в специальные директории? И еще вопрос как адекватно проверить ,что caffe использует все ядра/процессоры, я так понимаю смотреть в top на используемые проценты cpu не очень хороший вариант? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BeS 53 Жалоба Опубликовано November 23, 2015 Чтобы не перекомпилировать. Мне казалось, что конкретный blas задаётся ещё до компиляции, во время конфигурирования CMake.А мсье знает толк в извращениях :) Да, BLAS там задается во время конфигурирования CMake...GotoBLAS, cuBLAS, MKL etc бинарно не совместимы, т.ч. подсунуть к уже построенной библиотеке что-то левое не получится. Как производится дистрибуция/поставка caffe, простым копированием папки или надо отдельно ставить еще либы через apt-get? возможна ли статическая линковка всего необходимого в один бинарник? скажем если я соберу на локальном компьютере на ubuntu 12.04 будет или эта сборка работать на многоядерном сервере с Ubuntu 14.04?http://caffe.berkeleyvision.org/installation.html"Distribution: run make distribute to create a distribute directory with all the Caffe headers, compiled libraries, binaries, etc. needed for distribution to other machines."т.е. простым копированием папки или надо либы раскладывать в специальные директории?Чисто теоретически к CMake относительно легко привинчивается CPack со всеми вытекающими в виде сборки .deb пакетов, для которых при правильном конфигурировании все зависимости будут разрешаться автоматически.Таскать между машинами пребилженые бинари вне deb-пакетов плохая идея. Т.к. придется весь необходимый энвайромент воспроизводить на новой машине. Тем более, если таскаешь бинари между разными версиями убунты. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано November 24, 2015 (изменено) В итоге вроде как можноhttps://wiki.debian.org/DebianScience/LinearAlgebraLibrariesтолько как я понял это не решает вопроса когда мы хотим протестить разные модификации/сборки/версии одной и той же BLAS библиотеки. Еще вроде можно через LD_PRELOADmy_libraries=/path/to/blas1.so /path/to/blas2.so for lib in $my_libraries do LD_PRELOAD=${lib} ./my_executable_using_caffe done Изменено November 24, 2015 пользователем mrgloom Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах