Дисплей графического процессора ImageMagick "утечка памяти"? - PullRequest
1 голос
/ 20 сентября 2011

Я тестирую приложение CUDA, и у меня возникла странная проблема с памятью:

Моя программа выполняет некоторые операции с изображениями и отображает их с помощью программы отображения ImageMagick.Проблема в том, что каждый раз, когда я запускаю дисплей IM, я получаю больше использования памяти GPU, поэтому меньше памяти для вычислений GPU.

Я использую дисплей IM, потому что я не смог найти ничего, что отображает изображение из входа канала.Любые предложения?

В любом случае, почему дисплей IM занимает столько памяти GPU и почему он не освобождается?

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Исходя из вашего вопроса, вы пытаетесь отобразить последовательность файлов в последовательности, используя оболочку, похожую на Bash, после выполнения набора операций с интенсивным использованием графического процессора. Вам интересно, почему больше памяти GPU используется при каждом последующем вызове ImageMagick display, который, по-видимому, успешно закрывается после завершения каждой операции.

Мы можем далее предположить, что вы используете OpenCL поддержки ImageMagick по крайней мере для некоторой части вашей обработки. Хотя у нас недостаточно информации, чтобы определить, как выглядят текстурные буферы вашего GPU при завершении каждого рендеринга с помощью display, я полагаю, что ваш GPU не освобождает текстуры должным образом, из-за чего память медленно ползет.

Вместо того, чтобы продолжать строить гипотезу вокруг этой гипотезы, я вместо этого рекомендую инструмент для отладки вашей проблемы: gDEBugger . Это должно позволить вам опросить вашу видеокарту, чтобы точно определить, почему все замедляется.

Желаем удачи в вашем приложении.

0 голосов
/ 20 ноября 2012

Я знаю, что он старый, но мы выяснили, что использование каналов (popen()) делает сложную копию программы в памяти, что также вызывает копирование директив конечной программы, или как там называется ... Итак, когда я закрываю программу открывается с помощью popen Я также заканчиваю весь связанный с CUDA контекст, который обычно освобождается в «фоне», когда программа заканчивается. Таким образом, очистка памяти CUDA после закрытия popen приложения не будет работать, и здесь я обнаружил утечку памяти и общую серьезную ошибку программы.

Я надеюсь, что кто-то найдет это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...