В этом примере показано, как запустить эталонный тест MATLAB для работников кластера. Эталонный тест измеряет скорость выполнения нескольких вычислений MATLAB. Можно распечатать эти результаты и сравнить производительность клиента и работников.
В этом примере используется pbench, функция, которая запускает подмножество тестов в bench, эталонный тест MATLAB. Тестами в этом подмножестве являются LU, FFT, ODE и Sparse. Для получения подробной информации об этих тестах см. bench.
Запустите эталонный тест MATLAB на клиенте.
tClient = pbench
tClient = 1×4
0.0766 0.0725 0.0194 0.1311
Создание параллельного пула p с использованием parpool функция. По умолчанию parpool запускает параллельный пул с работниками в кластере по умолчанию. Выберите кластер по умолчанию на вкладке Главная страница MATLAB (MATLAB Home) в области Среда (Environment) в разделе Параллельный (Parallel) > Выбрать кластер по умолчанию (Select a Default Cluster).
p = parpool();
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6).
Запустите эталонный тест MATLAB для работников с помощью parfevalOnAll функция. parfevalOnAll выгружает выполнение функции всем работникам пула и возвращает parallel.FevalOnAllFuture объект, чтобы сохранить результаты, когда они готовы. Для получения результатов от работников используйте fetchOutputs на будущем объекте.
f = parfevalOnAll(@pbench,1); tWorkers = fetchOutputs(f);
Объедините результаты клиента и работников и постройте их с помощью штрих-графика. Сравните относительные показатели работников и клиента.
tClientAndWorkers = [tClient;tWorkers];
bar(tClientAndWorkers');
xticklabels({'LU','FFT','ODE','Sparse'});
xlabel("Benchmark type");
ylabel("Benchmark execution time (seconds)");
workerNames = strcat("Worker ",string(1:size(tWorkers,1)));
legend(["Client",workerNames],'Location','bestoutside');
По умолчанию для клиента MATLAB включена многопоточность. Многопоточность позволяет использовать числовые функции MATLAB, такие как lu или fft, для запуска на нескольких ядрах с использованием нескольких вычислительных потоков. Рабочие по умолчанию используют один вычислительный поток, поскольку они обычно связаны с одним ядром. Поэтому тест LU, например, выполняется на клиенте MATLAB быстрее, чем на рабочих. Другие проблемы, такие как ОДУ, не могут получить пользу от многопоточности, поэтому они выполняют то же самое на клиенте MATLAB и рабочих. Учитывайте это различие при принятии решения о распределении вычислений параллельным работникам MATLAB, например, с помощью parfor. Дополнительные сведения см. в разделе Решение о том, когда использовать Parfor. Дополнительные сведения о многопоточности см. в разделе Запуск MATLAB на многоядерных и многопроцессорных машинах.
bench | fetchOutputs (FevalFuture) | parfevalOnAll | parpool