Перейти к содержимому
Compvision.ru
mrgloom

Как можно менять BLAS билиотеки для Caffe?

Recommended Posts

Как можно менять 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

Изменено пользователем mrgloom

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Думаю, что надо запускать CMake, в котором указывать новую имплементацию BLAS, перекомпилировать. И больше никак.

Но! Это теоретически можно ускорить с помощью веток в git - просто переключаться между ними. Хотя сама необходимость в такой смене ставит меня в тупик.

 

2. Если верить этой статье (репозиторий проекта), то Caffe не лучшим способом использует параллелизм на CPU.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Но! Это теоретически можно ускорить с помощью веток в git - просто переключаться между ними. Хотя сама необходимость в такой смене ставит меня в тупик.

Эмм...а зачем бранчеваться для этого? В caffe вроде бы все параметры через командную строку конфигурируются...если религия запрещает доверять истории командной строки, то можно заскриптовать этот процесс каким-нибудь питоном)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чтобы не перекомпилировать. Мне казалось, что конкретный blas задаётся ещё до компиляции, во время конфигурирования CMake.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я так понимаю CMake там не официально поддерживается, официально в репозитории Makefile

https://github.com/BVLC/caffe/blob/master/Makefile.config.example
https://github.com/BVLC/caffe/blob/master/Makefile

 

даже если делать отдельные билды caffe, то как потом это зоопарк содержать? просто в отдельный папках, не прописывая глобально путь к caffe бинарнику?

 

Тут есть сравнение по скорости, но думаю много зависит от модели сети+железа.

https://github.com/soumith/convnet-benchmarks

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я так понимаю CMake там не официально поддерживается, официально в репозитории Makefile

https://github.com/BVLC/caffe/blob/master/Makefile.config.example
https://github.com/BVLC/caffe/blob/master/Makefile

даже если делать отдельные билды caffe, то как потом это зоопарк содержать? просто в отдельный папках, не прописывая глобально путь к caffe бинарнику?

Странное заявление, что у них там и CMakeLists.txt в репозитории вполне оициально лежит. В мастере!

И поддерживать не билды, а ветки. Но, повторюсь, не вижу особого смысла в онлайн переключении между библиотеками BLAS. Зачем?

 

Тут есть сравнение по скорости, но думаю много зависит от модели сети+железа.

https://github.com/soumith/convnet-benchmarks

В ZNN исследовалось исключительно масштабирование на несколько ядер.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Странное заявление, что у них там и 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 не очень хороший вариант?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чтобы не перекомпилировать. Мне казалось, что конкретный 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-пакетов плохая идея. Т.к. придется весь необходимый энвайромент воспроизводить на новой машине. Тем более, если таскаешь бинари между разными версиями убунты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В итоге вроде как можно

https://wiki.debian.org/DebianScience/LinearAlgebraLibraries

только как я понял это не решает вопроса когда мы хотим протестить разные модификации/сборки/версии одной и той же BLAS библиотеки.

 

Еще вроде можно через LD_PRELOAD

my_libraries=/path/to/blas1.so /path/to/blas2.so

for lib in $my_libraries
do
  LD_PRELOAD=${lib} ./my_executable_using_caffe
done
Изменено пользователем mrgloom

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×