Анаконда R, похоже, не может использовать OpenBLAS. Только МКЛ? Зачем?

Главный вопрос (№ 1):
Есть ли секретная уловка для получения Anaconda R в частности (не с другим R, пожалуйста, нет проблем с другими R), чтобы использовать резидентную подсистему BLAS в Ubuntu?

Другие числовые приложения (Octave) на том же хосте демонстрируют правильность установки подсистемы BLAS и высокую производительность, как и ожидалось, для операций с числовыми матрицами в зависимости от значения переменной среды OMP_NUM_THREADS. Для подключения этого не-анакондного программного обеспечения к резидентной подсистеме BLAS не потребовалось никаких специальных приемов.

Связанный вопрос (№ 2):
Распространяется ли подсистема Intel MKL BLAS с anaconda и может ли она использоваться anaconda R в качестве запасного варианта от OpenBLAS? В таком случае как активировать MKL BLAS?

программа htop показывает 100% -ное использование одного ядра Anaconda R во время теста производительности. Неожиданно Anaconda R не может использовать OpenBLAS для параллельного матричного кода. Наблюдается резкое замедление> 40 раз по сравнению с эталонной машиной, использующей обычный R, а не Anaconda R. Это неприемлемая проблема производительности.

Сама установка подсистемы blas была подтверждена как правильная и полностью функциональная с использованием пакета GNU Octave, выполнив числовой тест, демонстрирующий отличное улучшение, как и ожидалось OMP_NUM_THREADS=1 был изменен на OMP_NUM_THREADS=16, что является подходящим значением для тестового оборудования.

Последний вопрос (№ 3):
Является ли поставщик сопровождающих Anaconda намеренно собирает двоичный файл R для использования только с Intel MKL, исключая подсистему OpenBLAS?

Спасибо за прочтение.

Просите, чтобы любые ответы были ограничены людьми с опытом, фактически использующим MKS или OpenBLAS только с пакетами программного обеспечения anaconda. Спасибо за понимание.

Не стесняйтесь использовать мой тест:

# Plain old R, OpenBLAS, OMP_NUM_THREADS=4, Intel Core i7-920, 4 HW cores:
n=5e3
print(system.time({ x <- replicate(n, rnorm(n)); tcrossprod(x) }))
# elapsed: 6.1 

# Anaconda R, OpenBLAS, OMP_NUM_THREADS=16, 2 x Intel Xeon-2690, 16 HW cores:
n=5e3
print(system.time({ x <- replicate(n, rnorm(n)); tcrossprod(x) }))
# elapsed: 291.8

GNU Octave benchmarks on same machine 2 x Intel Xeon-2690:
**Note GNU Octave is outside of anaconda**

ga@ga-HP-Z820:~/projects/blas_bench$ bash octave_benchmark.sh
Run program in octave using NVBLAS GPU-parallel algebra code, not CPU. LD_PRELOAD=libnvblas.so:
[NVBLAS] NVBLAS_CONFIG_FILE environment variable is set to 'nvblas.conf'
[NVBLAS] NVBLAS_CONFIG_FILE environment variable is set to 'nvblas.conf'
Elapsed time:
 0.012405
Gigaflops:
   7.0905e+05
Run program in octave using OpenBLAS CPU-parallel algebra code. OMP_NUM_THREADS=16 LD_PRELOAD=libblas.so.3:
Elapsed time:
 17.559
Gigaflops:
 500.95
Same but without LD_PRELOAD=libblas.so.3, does it still really run fast, indicating OpenBLAS is still used? OMP_NUM_THREADS=16:
Elapsed time:
 16.063
Gigaflops:
 547.61
Run program in almost plain old octave: This might still use OpenBLAS since its default ON on this host. Setting OMP_NUM_THREADS=1 so its nearly stock.
Elapsed time:
 233.34
Gigaflops:
 37.696

(Пожалуйста, не обращайте внимания на NVBLAS, которая не завершила тест из-за того, что в какой-то момент автоматическое обновление Ubuntu было повреждено установкой проприетарного видео драйвера NVIDIA.)

0 ответов

Другие вопросы по тегам