Метки

, , , , ,

Parallel Computing Toolbox позволяет запускать несколько задач одновременно. Для проверки возможности параллельных вычислений в файловом меню запускаем Parallel → Manage Configurations…

Configurations Manager

Configurations Manager

Выбираем пункт local и запускаем Start Validation.

Чтобы посчитать что-то, создаем объект задания

job = createJob(findResource());

Здесь функция findResource() возвращает идентификатор доступных ресурсов. Далее наполняем смыслом задание. Предположим, нужно взять два интеграла от m-функций myfun1 и myfun2 в пределах [0,1] и [-1, 1] соответственно. Это делается следующим образом:

retCount = 1; % Количество возвращаемых параметров
createTask(job, @quad, retCount, {@myfun1, 0, 1}); % Задача 1
createTask(job, @quad, retCount, {@myfun2, -1, 1}); % Задача 2

retCount означает количество возвращаемых параметров (один в нашем случае), а как cell-объект задаем список параметров вызываемой функции quad. Задач может быть больше, чем доступных процессоров. Запускаем задание на счет командой

submit(job);

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

destroy(job);

Подождать завершения параллельной задачи можно функцией

waitForState(job);

Выход из неё происходит когда состояние задания изменяется (running/finished, к примеру). Проверяем текущее состояние вычислений всех подзадач в job:

findTask(job)

ans =

    Tasks: 2 by 1
    =============

 Task ID       State         End Time                                  Function Name   Error
 -------------------------------------------------------------------------------------------
       1    finished  Nov 20 13:30:10                                            @quad
       2     running                                                               @quad

Полезными могут оказаться функции pause, resume и wait. Последней можно указывать какого именно состояния задания ждать. Забрать результаты вычислений можно так:

data = getAllOutputArguments(job);

data будет cell-объектом M\times N, где M — количество запущенных в задании задач, а N — максимальное количество выходных аргументов по всем задачам.
 

Реклама