我有一个af::array
变量3000000*3:
int main()
{
// inputArray is the pointer which fills tempArray
af::array tempArray = af::array(af::dim4(3000000,3),inputArray);
tempArray(tempArray < 0) = 0;
}
问题是,我想删除这个数组,以便我的内存得到释放,它填充了我的专用GPU内存。我该怎么做呢?
在使用该变量之前输入图片描述
使用此变量后:输入图片描述
了解ArrayFire使用垃圾收集器是很重要的。这意味着即使你释放内存,GPU上的内存也不会被释放,而是被标记为可重用,并在以后需要时使用(ArrayFire)库。
分配内存是昂贵的,这就是为什么软件设计者努力使用自定义分配系统来批量重用和分配内存。
手动将内存返回给垃圾收集器,使用af::freeV2()
或af::deviceGC()
。