#performance #debugging #rcpp #rcppparallel
#Производительность #отладка #rcpp #rcppparallel
Вопрос:
У меня есть код на c , в котором я распараллеливаю некоторые симуляции Монте-Карло, используя Rcpp
и RcppParallel
. parallelFor
Выполнение, как и ожидалось, намного быстрее, чем при использовании непараллельного цикла.
Однако, после запуска кода в течение ночи или двух, после его остановки. Мой компьютер работает очень медленно. Это сохраняется, даже если я завершаю / завершаю все R-процессы и решается только перезагрузкой.
Вопрос: Поскольку проблема появляется только после запуска кода в течение 1-2 дней, я не могу создать MWE. Я также не вижу ничего, что засоряет мой компьютер в диспетчере задач (на самом деле, это обычно показывает, что сам диспетчер задач занимает большую часть процессора). Любые указания на то, с чего начать поиск того, что отвечает за указанную проблему?
Комментарии:
1. Следите за использованием памяти процессов. Может быть, у вас непреднамеренная утечка?
2. это потребовало бы «нового» где-то в моем коде, нет? поскольку я использую только armadillo, RcppParallel, а мой собственный код не содержит никаких «новых» операторов, это кажется маловероятным. Или есть какой-то способ вызвать утечки неявно (я часто передаю матрицы по ссылке между функциями)
3. Да, использование
new
без удаления является очевидным, но C также может выделять объект из других операций.