Assuming TensorAllocator is an attempt at implementing an equivalent of std::allocator.
Both tensors_ and cache_ in ExpressionGraph are TensorAllocators.
The cache_ allocates some tensors that are incapable of being deallocated from outside. cache_ is private to this class, and the missing free is a flaw(?).
|
if(!node->val()) { |
|
if(node->memoize()) |
|
cache_->allocate(node->val(), node->shape(), node->value_type()); |
|
else |
|
tensors_->allocate(node->val(), node->shape(), node->value_type()); |
|
} |
|
} |
|
|
I could not find a cache_->free(), tensors_ on the other hand are capable of being freed manually through external calls.
|
void free(const Tensor& tensor) { tensors_->free(tensor); } |
Assuming
TensorAllocatoris an attempt at implementing an equivalent of std::allocator.Both
tensors_andcache_inExpressionGraphareTensorAllocators.The
cache_allocates some tensors that are incapable of being deallocated from outside.cache_is private to this class, and the missing free is a flaw(?).marian-dev/src/graph/expression_graph.h
Lines 57 to 64 in 844800e
I could not find a
cache_->free(),tensors_on the other hand are capable of being freed manually through external calls.marian-dev/src/graph/expression_graph.h
Line 70 in 844800e