Параллелизм простой математики - PullRequest
2 голосов
/ 15 апреля 2019

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

...