Многопоточность в языке R
Пакет future
Алексей Селезнёв
Предыдущие уроки
•циклы for, while и repeat
•функции семейства apply
•пакет purrr
•основы многопоточности в R
•многопоточность с помощью пакета future
Явное и неявное объявление фьючерсов
Неявное объявление:
v %<-% { expr }
Явное объявление:
f <- future({ expr })
v <- value(f)
Аргументы в функции future
• expr – выражение, которые будет вычислено;
• envir – окружение, из которого необходимо экспортировать глобальные объекты;
• lazy – управляет ленивым вычисленим, т.е. вы можете указать TRUE, в таком случае
фьючерс начнёт вычисляться, только когда в коде будет прямое оразение к его значению,
по умолчанию FALSE;
• seed – позволяет установить во всех параллельных потоках стартовое значение генератора
случайных чисел;
• packages– позволяет указать, какие пакеты необходимо подключить для выполнения
вычислений фьючерса;
Стратегии выполнения кода в future
Последовательное выполнение:
Название схемы Поддержка операционных систем Описание
sequential все Выполняется последовательно и в текущем процессе R
Параллельное выполнение:
Название схемы Поддержка операционных систем Описание
multisession все
Выполняется параллельно в фоновых сеансах R (на
текущей машине), основной сеанс R не блокируется
multicore
Не поддерживается на Windows и в
RStudio
Разветвленные процессы R (на текущей машине)
cluster все
Внешние сеансы R на текущих, локальных и / или
удаленных машинах, аналогично тому, как это
реализовано в пакете parallel
remote все Доступ к удаленным сеансам R
Вложенная схема реализации многопоточности
Опции future
• future.plan – установка дефолтной схемы вычислений;
• future.globals.maxSize – ограничение максимального объёма экспортируемых из
глобального окружения объектов;
• future.globals.onReference – позволяет управлять поведением future при экспорте
ссылочных объектов, которые нельзя экспортировать, например объектов соединения с
базами данных;
• future.wait.timeout – максимальное время ожидания свободного узла;
• future.wait.interval – начальный интервал паузы, между опросами статуса узлов, в поисках
свободного;
• future.wait.alpha – повышающий коэффициент интервала между опросами узлов.
Переменные среды future
Опция Переменная среды
future.globals.maxSize R_FUTURE_GLOBALS_MAXSIZE
future.plan R_FUTURE_PLAN
future.globals.onReference R_FUTURE_GLOBALS_ONREFERENCE
future.wait.timeout R_FUTURE_WAIT_TIMEOUT
… R_...
Другие пакеты входящие в futureverse
• future – основной пакет futureverse.
• future.apply – параллельная реализация семейства apply;
• furrr – параллельная реализация purrr;
• doFuture – бекенд для foreach;
• progressr – позволяет использовать прогрессбары при параллельных вычислениях;
и другие: future.batchtools, future.callr, future.tests, parallelly, …
СПАСИБО ЗА ВНИМАНИЕ

Пакет future

  • 1.
    Многопоточность в языкеR Пакет future Алексей Селезнёв
  • 2.
    Предыдущие уроки •циклы for,while и repeat •функции семейства apply •пакет purrr •основы многопоточности в R •многопоточность с помощью пакета future
  • 3.
    Явное и неявноеобъявление фьючерсов Неявное объявление: v %<-% { expr } Явное объявление: f <- future({ expr }) v <- value(f)
  • 4.
    Аргументы в функцииfuture • expr – выражение, которые будет вычислено; • envir – окружение, из которого необходимо экспортировать глобальные объекты; • lazy – управляет ленивым вычисленим, т.е. вы можете указать TRUE, в таком случае фьючерс начнёт вычисляться, только когда в коде будет прямое оразение к его значению, по умолчанию FALSE; • seed – позволяет установить во всех параллельных потоках стартовое значение генератора случайных чисел; • packages– позволяет указать, какие пакеты необходимо подключить для выполнения вычислений фьючерса;
  • 5.
    Стратегии выполнения кодав future Последовательное выполнение: Название схемы Поддержка операционных систем Описание sequential все Выполняется последовательно и в текущем процессе R Параллельное выполнение: Название схемы Поддержка операционных систем Описание multisession все Выполняется параллельно в фоновых сеансах R (на текущей машине), основной сеанс R не блокируется multicore Не поддерживается на Windows и в RStudio Разветвленные процессы R (на текущей машине) cluster все Внешние сеансы R на текущих, локальных и / или удаленных машинах, аналогично тому, как это реализовано в пакете parallel remote все Доступ к удаленным сеансам R
  • 6.
  • 7.
    Опции future • future.plan– установка дефолтной схемы вычислений; • future.globals.maxSize – ограничение максимального объёма экспортируемых из глобального окружения объектов; • future.globals.onReference – позволяет управлять поведением future при экспорте ссылочных объектов, которые нельзя экспортировать, например объектов соединения с базами данных; • future.wait.timeout – максимальное время ожидания свободного узла; • future.wait.interval – начальный интервал паузы, между опросами статуса узлов, в поисках свободного; • future.wait.alpha – повышающий коэффициент интервала между опросами узлов.
  • 8.
    Переменные среды future ОпцияПеременная среды future.globals.maxSize R_FUTURE_GLOBALS_MAXSIZE future.plan R_FUTURE_PLAN future.globals.onReference R_FUTURE_GLOBALS_ONREFERENCE future.wait.timeout R_FUTURE_WAIT_TIMEOUT … R_...
  • 9.
    Другие пакеты входящиев futureverse • future – основной пакет futureverse. • future.apply – параллельная реализация семейства apply; • furrr – параллельная реализация purrr; • doFuture – бекенд для foreach; • progressr – позволяет использовать прогрессбары при параллельных вычислениях; и другие: future.batchtools, future.callr, future.tests, parallelly, …
  • 10.