Процессор ArrayFire, не хватит ли ему памяти из-за позднего GC?

Я не совсем уверен, как ArrayFire управляет памятью в ОЗУ при использовании режима ЦП. Основываясь на наблюдении диспетчера задач, кажется, что память устройства в ОЗУ не освобождается сразу, похоже, что есть этап GC.

Это правда?

Что произойдет, если я захочу выделить много оперативной памяти, когда сборщик мусора не освободит память устройства (ОЗУ)? У меня закончится оперативная память? Или это каким-то образом вызовет GC?

У меня возникают проблемы с памятью при выделении памяти хоста (не памяти устройства), и я все еще пытаюсь понять, что не так. В то же время, существует ли сборщик мусора в режиме ЦП, и не вызовет ли он нехватку памяти, если сборщик мусора запустится слишком поздно? И как мне это исправить?

Спасибо


person BoBoDev    schedule 09.07.2019    source источник


Ответы (1)


ArrayFire будет кэшировать выделения и повторно использовать их для последующих операций. Основываясь на некоторых эвристиках или в случае сбоя выделения, ArrayFire вызовет сборщик мусора. Вы можете вручную запустить сборщик мусора, вызвав deviceGC, который освободит разблокированную (неиспользуемую) память.

person Umar Arshad    schedule 10.07.2019
comment
Большое спасибо. Я сделаю deviceGC только для того, чтобы убедиться, что я получаю нужную мне память. - person BoBoDev; 10.07.2019