1

Я только начал получать сам познакомиться с параллелизмом в R.Parallel * применяется в Azure Machine Learning Studio,

Как я планирую использовать Microsoft Azure Machine Learning Studio для моего проекта, я начал исследовать то, что Microsoft R Open предложения для параллельности и таким образом, я нашел this, в котором говорится, что параллелизм выполняется под капотом, который использует преимущества всех доступных ядер без изменения кода R. В статье также показаны некоторые контрольные показатели производительности, однако большинство из них демонстрируют преимущества производительности при выполнении математических операций.

Это было хорошо до сих пор. Кроме того, мне также интересно узнать, также ли он распараллеливает функции *apply под капотом или нет. Я также нашел эти 2 статьи, в которых описывается, как распараллелить *apply функции в целом:

  1. Quick guide to parallel R with snow: описывает облегчающую параллелизм с помощью snow пакета, par*apply функции семьи и clusterExport.
  2. A gentle introduction to parallel computing in R: используя parallel package, par*apply function family, а также значения привязки к окружающей среде.

Так что мой вопрос, когда я буду использовать *apply функции в Microsoft Azure Machine Learning Studio, будет что распараллелить под капотом по умолчанию, или мне нужно использовать пакеты как parallel, snow и т.д.?

ответ

4

Лично я думаю, что мы могли бы продавать MRO по-другому, не делая такого большого дела о параллелизме/многопоточности. Ах хорошо.

R поставляется с Rblas.dll/.so, который реализует подпрограммы, используемые для вычислений линейной алгебры. Эти подпрограммы используются в разных местах, но один общий вариант использования - для установки моделей регрессии. С MRO мы заменяем стандартный Rblas тем, который использует Intel Math Kernel Library. Когда вы вызываете такую ​​функцию, как lm или glm, MRO будет использовать несколько потоков и оптимизировать инструкции CPU, чтобы соответствовать модели, что может привести к резким ускорениям по сравнению со стандартной реализацией.

MRO - это не единственный способ получить этот вид ускорения; вы также можете скомпилировать/загрузить другие реализации BLAS, которые аналогичным образом оптимизированы. Мы просто упрощаем одноэтапную загрузку.

Обратите внимание, что MKL влияет только на код, который включает в себя линейную алгебру. Это не инструмент ускорения общего назначения; любой R-код, который не выполняет вычисления в матрице, не увидит улучшения производительности. В частности, он не ускорит любой код, который включает в себя явный параллелизм, такой как код с использованием параллельного пакета, SNOW или других инструментов кластерного вычисления.

С другой стороны, это не будет деградировать их либо. Вы можете использовать пакеты, такие как параллельные, SNOW и т. Д., Для создания вычислительных кластеров и распространения кода на нескольких процессах. MRO работает так же, как обычный CRAN R в этом отношении. (Одна вещь, которую вы, возможно, захотите сделать, однако, если вы создаете кластер узлов на одном компьютере, уменьшает количество потоков MKL. В противном случае вы рискуете разногласиями между узлами для ядер процессора, что ухудшит производительность.)

Раскрытие информации: Я работаю для Microsoft.