Я новичок здесь, чтобы задавать вопросы, хотя я нашел решения многих проблем здесь раньше.MATLAB Parallel Parfor Использование памяти Опрос
Эта конкретная проблема, я не могу найти ответ, так что, хотя я бы присоединился и спросил.
Я использую панель инструментов параллельных вычислений для запуска нескольких симуляций сразу, код, который я разрабатываю, должен быть развернут на одном ядре, поэтому нет необходимости в преобразовании алгоритма в параллель.
Структуры данных, создаваемые каждым из симуляций, велики, и одновременно выполняется 8 симуляций с использованием всей доступной ОЗУ в моей машине (4 ГБ).
В настоящее время я смотрю на сокращение памяти, используемой каждой симуляцией, и задавался вопросом, знает ли кто-нибудь, как получить информацию об использовании памяти из каждого из экземпляров функции.
До сих пор я звонил:
parfor i=1:8
[IR(:, i) Data(i)] = feval(F, NX, NY(i), SR, NS, i);
end
А внутри функции F
[usr, sys] = memory;
format short eng;
TEST.Mem = usr.MemUsedMATLAB;
Но это понятно, возвращается память используется всеми 8 экземпляров F.
I хотел бы получить информацию от каждого экземпляра F.
Примечание: структура данных TEST возвращается как данные в функцию верхнего уровня.
Заранее благодарим за любую помощь.
я не понимаю разницы между «памятью, используемой всех 8 экземплярами F» и «информацией из каждого экземпляра из F "- ваш цикл PARFOR захватывает каждый возврат из F в отдельный элемент результата, так что это« каждый экземпляр ». – Edric
Привет, В то время как F работает, он создает несколько больших матриц, которые зависят от входных аргументов при их вызове, затем они используются для получения возвращаемого результата, – Dean8020
** Эти матрицы затем уничтожаются, но это память используя функцию, которую я хочу знать – Dean8020