В этом примере показано, как запустить бенчмарк 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 Home, в области окружение, в 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