Протестируйте кластерных рабочих в сравнении с эталоном

Этот пример показывает, как запустить сравнительный тест 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 на многожильных и многопроцессорных машинах.

Смотрите также

| | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте