Будущее

Запросите функциональное выполнение на параллельных рабочих пула или клиенте 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
FevalOnAllFutureЭкземпляр будущего parfevalOnAll
AfterAllFutureЭкземпляр будущего afterAll
AfterEachFutureЭкземпляр будущего afterEach

Объекты 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