multithreading с R?

Считывая веб – сайт R-проекта , есть некоторые (непонятные) ссылки на multithreading с R, но неясно, как скомпилированы базовый продукт и библиотеки CRAN .

Revolution Analytics предлагает многопоточную базу (?) Для Windows и Redhat.

Будут ли некоторые другие дистрибутивы Linux включать многопоточные R (и пакеты)?

Ты смущен.

Внутренние элементы R (и перед ним, S) являются однопоточными и почти наверняка останутся однопоточными. Насколько я понимаю, работа доктора Дункана Темпл Ланга заключалась в преодолении этого, и если он не может этого сделать …

Тем не менее, есть карманы многопоточности:

  • Во-первых, всякий раз, когда вы делаете внешние вызовы и с правильной блокировкой, вы можете использовать multithreading. Это то, что библиотеки BLAS MKL, Goto / Open BLAS, Atlas (если построено многопоточное), … все предлагают. Revo R «просто» поставляется с (Intel) MKL, поскольку Intel является ключевым инвестором Revo

  • Если вы внимательно относитесь к тому, что вы делаете, вы можете использовать OpenMP (расширение компилятора для многопоточности). Это началось с работы Люка Тирни по pnmath и pnmath0 (которая раньше была экспериментальной / внешней упаковкой) и с тех пор медленно входила в R, медленно, но верно.

  • Далее, в многоядерном мире и в правильной операционной системе вы всегда можете fork() . Это то, что первый многопроцессорный пакет и параллельный пакет теперь продолжается.

  • И последнее, но не менее важное: маршрут сети / RPC с MPI, используемый такими пакетами, как Rmpi, snow, parallel, … и распространяется в приложениях HPC.

Как насчет этого ? Поскольку дата модификации этой страницы в мае 2014 года, я думаю, что упомянутые пакеты являются относительно новыми или, может быть, они не были стабильными на момент написания первого ответа.

Renjin – это реализация интерпретатора на основе JVM. Они утверждают, что:

В отличие от GNU R, Renjin многопоточен и успешно работает в среде Platform-as-a-Service, такой как Google Appengine, AWS Elastic Beanstalk, Heroku или Microsoft Azure.

#resource http://www.bedatadriven.com/products/renjin.html

Тем не менее, фактические пакеты R, которые мы будем звонить из R, не могут быть streamобезопасными.

См. Документацию Jep объясняющую эту проблему с точки зрения вызова CPython из Java/Scala .

https://github.com/ninia/jep/wiki/How-Jep-Works#threading-complications

Из-за осложнений и ограничений JNI stream, создающий экземпляр Jep, должен быть повторно использован для всех вызовов методов для этого экземпляра Jep. Jep будет применять это и исключать исключения, ссылающиеся на недопустимый доступ к streamу. (В будущем мы надеемся упростить или предоставить утилиты для управления streamами).

Одновременно нельзя запускать более одного экземпляра Jep в одном и том же streamе. Хотя это технически разрешено, это может потенциально испортить состояние streamа и привести к взаимоблокировке в интерпретаторе Python. Вероятно, это изменение будет изменено, чтобы вызвать исключение, если оно встречается в будущем.

Таким образом, похоже, что у Renjin есть надежда, но используемые фактические бинарные (C / C ++ и т. Д.) Пакеты должны быть проверены для обеспечения безопасности streamов.

Существуют и другие реализации R

https://dynamicecology.wordpress.com/2014/01/14/r-isnt-just-r-anymore/

Вы можете эффективно использовать многопоточный R, используя KNIME или любую другую программу, которая использует исполняемый файл rserve.exe. В KNIME вы можете поместить R Snippet в ряд узлов параллельного узла для операций, выполняемых по-разному. Для операций с колонками вы можете разбить dataset на поднаборы столбцов и выполнить fragmentы R на каждом наборе, а затем объединить их вместе.

Надеюсь, это ускорит rotation вашего процессора!

Revolution R Open говорит, что они предлагают

Высокопроизводительный движок языка R (многопоточная обработка с библиотекой ядра Intel® Math Kernel )

  • Измените class с коэффициента на числовое число столбцов в кадре данных
  • определить параметр $ right с переменной в R
  • Преобразование серийного номера excel DateTime в R DateTime
  • Lapply для добавления столбцов в каждый Dataframe в списке
  • R - вырезание с помощью заданного интервала
  • Напишите много файлов в цикле for
  • Процент% в%
  • Проверить наличие директории и создать, если не существует
  • Отбор проб в R из вектора различной длины
  • Увеличение на 1 для каждого изменения в столбце
  • R создать идентификатор внутри группы
  • Interesting Posts

    Возможно ли установить том в префикс пользовательского диска, например «myDrive: \»?

    Преобразование записанного числа в число в R

    Как отправлять и получать SMS-сообщения с данными

    ASP.NET MVC ActionLink и метод post

    Windows 7 – групповая политика – разрешить сохранение учетных данных RDP

    Какова служебная нагрузка для std :: function?

    Комбинация memoization и tail-recursion

    Двойная загрузка Windows 7 на предустановленном ноутбуке Windows 8

    Обновлен ли Защитник Windows, если для Windows Update установлено ручное?

    Можете ли вы сделать настройки в Настройках. По умолчанию, даже если вы не открываете приложение «Настройки»

    Один или несколько ресурсов имеют цель «голова», но не «головной» компонент был определен в представлении

    Найдите необработанные ветви Гита?

    Как предотвратить изменение яркости экрана ноутбука при отключении / включении питания аккумулятора

    Данные LOAD и CACHE с областью приложения с @Singleton и @Stateless

    Всплывающая подсказка IntelliJ показывает JavaDocs

    Давайте будем гением компьютера.