В этом примере показано, как запустить сравнительный тест MATLAB на ваших кластерных рабочих. Сравнительный тест измеряет скорость выполнения нескольких расчетов MATLAB. Можно построить эти результаты и сравнить производительность клиента и рабочих.
Этот пример использует pbench
, функция, которая запускает подмножество тестов в bench
, сравнительный тест MATLAB. Тесты в этом подмножестве являются LU, БПФ, ОДУ, и Разреженный. Для получения дополнительной информации на этих тестах, смотрите bench
.
Запустите сравнительный тест MATLAB на клиенте.
tClient = pbench
tClient = 1×4
0.1590 0.1599 0.0939 0.1673
Создайте параллельный пул с помощью parpool
функция. По умолчанию, parpool
запускает параллельный пул с рабочих на вашем кластере по умолчанию. Выберите свой кластер по умолчанию на вкладке MATLAB Home в области Environment, параллельно> Выбирают Default Cluster.
parpool();
Starting parallel pool (parpool) using the 'MyCluster' profile ... Connected to the parallel pool (number of workers: 4).
Запустите сравнительный тест MATLAB на рабочих, использующих parfevalOnAll
функция. parfevalOnAll
разгружает выполнение функции всем рабочим в пуле и возвращает parallel.FevalOnAllFuture
возразите, чтобы содержать результаты, когда они будут готовы. Чтобы получить результаты рабочих, используйте fetchOutputs
на будущем объекте.
f = parfevalOnAll(@pbench,1); tWorkers = fetchOutputs(f);
Объедините результаты клиента и рабочих, и постройте их использующий столбиковую диаграмму. Сравните относительную производительность рабочих и клиента.
tClientAndWorkers = [tClient;tWorkers]; ax = axes; bar(tClientAndWorkers'); ax.XTickLabel = ["LU","FFT","ODE","Sparse"]; xlabel("Benchmark type"); ylabel("Benchmark execution time (seconds)"); workerNames = strcat("Worker ",string(1:size(tWorkers,1))); legend(["Client",workerNames]);
По умолчанию клиенту MATLAB включают для многопоточности. Многопоточность включает MATLAB числовые функции, такие как lu
или fft
, работать на нескольких ядрах с помощью нескольких вычислительных потоков. Рабочие используют один вычислительный поток по умолчанию, потому что они обычно сопоставляются с одноядерным. Поэтому тест LU, например, запускается быстрее на клиенте MATLAB, чем на рабочих. Другие проблемы, такие как ОДУ, не могут извлечь выгоду из многопоточности, таким образом, они выполняют то же самое на клиенте MATLAB и рабочих. Рассмотрите это различие при решении, распределить ли расчеты рабочим параллели MATLAB, такой как с parfor
. Для получения дополнительной информации смотрите Решение, Когда Использовать parfor. Для получения дополнительной информации о многопоточности смотрите Запуск MATLAB на многожильных и многопроцессорных машинах.
bench
| fetchOutputs (FevalFuture)
| parfevalOnAll
| parpool