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Задайте функцию, чтобы вызвать после всего завершенного parallel.Futures
afterEachЗадайте функцию, чтобы вызвать после того, как каждый parallel.Future завершится
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