Created by: sneaxiy
Use system allocator in OpTest framework, that is to say: all memory allocation request would invoke malloc
in CPU and cudaMalloc
in GPU. In this way, if a Tensor is destructed, the following usage of its memory pointer would cause segment fault in CPU and illegal memory access in GPU.
在单测模式下,当显存被回收之后,设置为随机的值。单测模式在单测的时候默认打开。
这个策略的背景是这样的,
int *a = NULL;
if ( model == True)
{
Tensor temp;
temp.resize( {10, 10});
a = temp.mutable_data<int>()
/*其他对a处理的代码*/
}
除了 if的作用域,temp被释放,a 指向的空间已经被回收,但是单测的时候这块空间还没有被其他人用,单测的时候不会被发现问题,但是这块空间在实际运行的时候可能已经被分配出去了,这个时候就会出错。