Future

Запросите функциональное выполнение на параллельных рабочих пула или клиенте MATLAB

Описание

Future объект представляет функцию, которая будет выполняться на параллельных рабочих пула или клиенте MATLAB®.

Создание

Существует несколько способов создать Future объект:

  • Задайте функцию, которая будет выполняться на рабочем в параллельном пуле с помощью parfeval. parfeval функция создает FevalFuture объект представлять функциональное выполнение и содержать результаты. Создать несколько FevalFutures, вызовите parfeval многократно; например, можно создать вектор FevalFutures в for- цикл.

  • Задайте функцию, которая будет выполняться на каждом рабочем в параллельном пуле с помощью parfevalOnAll. parfevalOnAll функция создает FevalOnAllFuture объект представлять функциональное выполнение и содержать результаты.

  • Задайте функцию, которая будет выполняться на клиенте MATLAB после всего Future объекты завершают использование afterAll. afterAll функция создает AfterAllFuture объект представлять функциональное выполнение и содержать результаты.

  • Задайте функцию, которая будет выполняться на клиенте MATLAB после каждого Future возразите полному использованию afterEach. afterEach функция создает AfterEachFuture объект представлять функциональное выполнение и содержать результаты.

Таким образом, следующая таблица описывает доступные типы будущих объектов:

Будущий объектОписание
FevalFutureОдин parfeval Будущий экземпляр
FevalOnAllFutureparfevalOnAll Будущий экземпляр
AfterAllFutureafterAll Будущий экземпляр
AfterEachFutureafterEach Будущий экземпляр

Future объекты являются локальными объектами и могут быть получены доступ только в сеансе работы с MATLAB, который создал его.

Свойства

развернуть все

Общие опции

Это свойство доступно только для чтения.

Дата и время, когда это будущее было создано, задала как datetime объект.

Типы данных: datetime

Это свойство доступно только для чтения.

Информация ошибки, указанная как исключение. Если Future завершается без ошибки, затем это поле пусто.

Это свойство доступно только для чтения.

Дата и время, когда это будущее закончило запускаться, заданный как datetime объект.

Типы данных: datetime

Это свойство доступно только для чтения.

Функция, чтобы оценить, определенный функцией указатель.

Пример: @rand

Типы данных: function_handle

Это свойство доступно только для чтения.

Числовой идентификатор для будущего, заданного как целое число.

Типы данных: double

Это свойство доступно только для чтения.

Входные параметры к функции, чтобы выполниться, заданный как массив ячеек.

Пример 1

Пример: {[1,2], [2,1]}

Типы данных: cell

Это свойство доступно только для чтения.

Количество аргументов, возвращенных функцией, чтобы выполниться, заданный как целое число.

Типы данных: double

Это свойство доступно только для чтения.

Выходные аргументы, заданные как массив ячеек результатов рабочей функции после того, как это закончило выполнение. Если Future завершается с ошибками, это поле пусто. Чтобы видеть ошибку, проверяйте Error свойство.

Пример: {[3.14]}

Типы данных: cell

Это свойство доступно только для чтения.

Дата и время, когда это будущее начало запускаться, заданный как datetime объект.

Типы данных: datetime

Это свойство доступно только для чтения.

Текущее состояние будущего, заданного как одно из этих значений: 'pending', 'queued', 'running', 'finished', 'failed', или 'unavailable'.

Типы данных: char

Опции FevalFuture

Это свойство доступно только для чтения.

Текст, произведенный выполнением функции, заданной как char массив.

Типы данных: char

Это свойство доступно только для чтения.

Очередь Future объекты, который содержит этот Future, заданный как FevalQueue. Проверяйте эту очередь, чтобы идентифицировать количество Future выполнение объектов или поставленный в очередь.

Типы данных: FevalQueue

Это свойство доступно только для чтения.

Индикация, если выходные параметры были считаны fetchNext или fetchOutputs, заданный как логическое.

Типы данных: логический

Опции FevalOnAllFuture

Это свойство доступно только для чтения.

Текст, произведенный выполнением функции, заданной как массив ячеек символьных массивов, который содержит текст для каждого рабочего.

Типы данных: cell

Это свойство доступно только для чтения.

Очередь Future объекты, который содержит этот Future, заданный как FevalQueue. Проверяйте эту очередь, чтобы идентифицировать количество Future выполнение объектов или поставленный в очередь.

Типы данных: FevalQueue

Функции объекта

развернуть все

afterAllЗадайте функцию, чтобы вызвать после всей параллели. Завершенные фьючерсы
afterEachЗадайте функцию, чтобы вызвать после каждой параллели. Будущее завершается
cancelОтмените поставленное в очередь или рабочее будущее
fetchOutputsПолучите все выходные аргументы от будущего
isequalВерный, если фьючерсы имеют тот же ID
waitОжидайте фьючерсов, чтобы завершиться
fetchNextПолучите затем доступный непрочитанный FevalFuture выходные параметры

Примеры

свернуть все

Можно объединить afterEach и afterAll автоматически вызвать больше функций на результаты фьючерсов. Оба afterEach и afterAll сгенерируйте будущие переменные, которые могут использоваться снова в afterEach и afterAll.

Используйте parfeval вычислить случайные векторы в рабочих. С настройками по умолчанию, parfeval создает parpool автоматически, если нет того, уже созданного.

for idx= 1:10
    f(idx) = parfeval(@rand, 1, 1000, 1);
end
Starting parallel pool (parpool) using the 'local' profile ...
connected to 8 workers.

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

maxFuture = afterEach(f, @(r) max(r), 1);

Чтобы вычислить минимальное значение среди них, вызовите afterAll на этом новом будущем. afterAll выполняет функцию на объединенных выходных аргументах всех фьючерсов после того, как они все завершатся. В этом случае, afterAll выполняет функциональный min на выходных параметрах maxFuture после завершения и создает другое будущее, чтобы содержать результат.

minFuture = afterAll(maxFuture, @(r) min(r), 1);

Можно выбрать результат с помощью fetchOutputs. fetchOutput ожидает, пока будущее не завершается, чтобы собрать результаты.

fetchOutputs(minFuture)
ans = 0.9973

Можно проверять результат afterEach путем вызова fetchOutputs на его будущей переменной.

fetchOutputs(maxFuture)
ans = 10×1

    0.9996
    0.9989
    0.9994
    0.9973
    1.0000
    1.0000
    0.9989
    0.9994
    0.9998
    0.9999

Смотрите также

| | | |

Введенный в R2013b