Я запускал программу буквально сотни раз, но недавно обнаружил, что один набор входных параметров вызывает следующую ошибку:
In DElambda at 116
In parallel_function>make_general_channel/channel_general at 879
In remoteParallelFunction at 31
??? Error using ==> parallel_function at 598
The session that parfor is using has shut down
Error in ==> CreateCurve at 86
parfor j=1:10
??? The client lost connection to an unknown lab.
This might be due to network problems, or the interactive matlabpool job might have errored. This is
causing: java.lang.OutOfMemoryError: GC overhead limit exceeded
Это происходит, когда я устанавливаю минимальные и максимальные значения для пространства поиска параметров на min[0;0] и max[1,5;1,5] и устанавливаю размер населения на 10k (это дифференциальная эволюция). Я не трогал другие параметры в любой момент. Всякий раз, когда я пытаюсь запустить его с указанными выше параметрами, я получаю сообщение об ошибке выше.
Однако, когда я уменьшаю размер популяции до 1 тыс., она сходится (к неправильному ответу из-за недостаточного поиска). С другой стороны, когда я использую размер популяции 10 000 с любым другим набором параметров, которые я пробовал, он работал отлично и сходится к правильному решению?
Кажется очень странным?
В настоящее время я повторно запускаю набор параметров проблемы, используя цикл for, а не цикл parfor (и matlabpool отключен), чтобы увидеть, работает ли он лучше. К сожалению, это занимает очень много времени, поэтому я не узнаю результатов какое-то время.
В то же время может кто-нибудь объяснить, что вызывает эту ошибку? И/или подскажите, как отлаживать параллельный код?
Просто добавлю, что код работал нормально с мошенническим набором параметров, когда я использовал for вместо parfor! Поэтому мне действительно нужно найти способ отладки в параллельной среде, чтобы я мог изолировать и исправить эту ошибку. Использование for вместо parfor слишком медленно!
java.lang.OutOfMemoryError: GC overhead limit exceeded
, это нехватка памяти. Не видя кода, трудно сказать, почему эти конкретные входные данные вызывают нехватку памяти. - person Oleg   schedule 17.04.2013