Мне нужно выполнить много математических операций по элементарной арифметике и специальным функциям на большой числовой матрице (например, 100 000 x 20000) в R
, в том числе:
exp
, log
, lbeta
, digamma
, plogis
(логистическая функция: 1 / [1 + exp (-a * x)]) и /, *, +, -
Рассматривая исходный код математической библиотеки C для R
, по существу нет директив компилятора #pragma omp
, которые бы использовали преимущества многопоточного параллелизма совместно используемой памяти. Специализированные пакеты для быстрых математических операций в R
, таких как [Rfast][2]
, также не содержат директив #pragma omp
для многопоточных специальных функций.
Аналогично, насколько я понимаю, библиотеки матричной алгебры, такие как BLAS и LAPACK, предназначены для матричных операций (например, факторизации), а не для поэлементных операций.
Я надеюсь запустить скрипт R
на AWS, чтобы ускорить операции, например, с помощью. 72 или 96 основных серверов.
Нужно ли мне делать свои собственные копии исходного кода C математической библиотеки R, чтобы добавить несколько директив #pragma omp
, чтобы воспользоваться преимуществами параллелизма OpenMP в R?
Я не могу поверить, что простой параллелизм, как этот, еще не существует в R
в base
или в простом пакете математической библиотеки.