Code clean of Allocator (#17602)
	
		
	
				
					
				
			* Revert "Revert "Fix allocator bug"" This reverts commitdependabot/pip/python/requests-2.20.0174d0d0b90. * Revert "fix travis ci" This reverts commit5656fa9f7c. test=develop * add inlined_vector.h, test=develop * add inlined_vector_test,test=develop * clean code of allocator,test=develop * delete zero_size_allocator.h,test=develop * fix failed unittest,test=develop
							parent
							
								
									430e25654b
								
							
						
					
					
						commit
						4aa931dd85
					
				| @ -1,33 +0,0 @@ | ||||
| // Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
 | ||||
| //
 | ||||
| // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||
| // you may not use this file except in compliance with the License.
 | ||||
| // You may obtain a copy of the License at
 | ||||
| //
 | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||
| //
 | ||||
| // Unless required by applicable law or agreed to in writing, software
 | ||||
| // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||
| // See the License for the specific language governing permissions and
 | ||||
| // limitations under the License.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "paddle/fluid/memory/allocation/allocator.h" | ||||
| 
 | ||||
| namespace paddle { | ||||
| namespace memory { | ||||
| namespace allocation { | ||||
| 
 | ||||
| class AllocationWithUnderlying : public Allocation { | ||||
|  public: | ||||
|   explicit AllocationWithUnderlying(AllocationPtr allocation) | ||||
|       : Allocation(allocation->ptr(), allocation->size(), allocation->place()), | ||||
|         allocation_(std::move(allocation)) {} | ||||
|   AllocationPtr allocation_; | ||||
| }; | ||||
| 
 | ||||
| }  // namespace allocation
 | ||||
| }  // namespace memory
 | ||||
| }  // namespace paddle
 | ||||
| @ -1,43 +0,0 @@ | ||||
| // Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
 | ||||
| //
 | ||||
| // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||
| // you may not use this file except in compliance with the License.
 | ||||
| // You may obtain a copy of the License at
 | ||||
| //
 | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||
| //
 | ||||
| // Unless required by applicable law or agreed to in writing, software
 | ||||
| // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||
| // See the License for the specific language governing permissions and
 | ||||
| // limitations under the License.
 | ||||
| 
 | ||||
| #include "paddle/fluid/memory/allocation/zero_size_allocator.h" | ||||
| 
 | ||||
| namespace paddle { | ||||
| namespace memory { | ||||
| namespace allocation { | ||||
| 
 | ||||
| bool ZeroSizeAllocator::IsAllocThreadSafe() const { | ||||
|   return underlying_allocator_->IsAllocThreadSafe(); | ||||
| } | ||||
| 
 | ||||
| Allocation *ZeroSizeAllocator::AllocateImpl(size_t size, Allocator::Attr attr) { | ||||
|   if (size == 0) { | ||||
|     return new Allocation(nullptr, 0, place_); | ||||
|   } else { | ||||
|     return underlying_allocator_->Allocate(size, attr).release(); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void ZeroSizeAllocator::FreeImpl(Allocation *allocation) { | ||||
|   if (allocation->size() == 0) { | ||||
|     delete allocation; | ||||
|   } else { | ||||
|     underlying_allocator_->Free(allocation); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| }  // namespace allocation
 | ||||
| }  // namespace memory
 | ||||
| }  // namespace paddle
 | ||||
| @ -1,46 +0,0 @@ | ||||
| // Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
 | ||||
| //
 | ||||
| // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||
| // you may not use this file except in compliance with the License.
 | ||||
| // You may obtain a copy of the License at
 | ||||
| //
 | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||
| //
 | ||||
| // Unless required by applicable law or agreed to in writing, software
 | ||||
| // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||
| // See the License for the specific language governing permissions and
 | ||||
| // limitations under the License.
 | ||||
| 
 | ||||
| #pragma once | ||||
| #include <memory> | ||||
| #include <utility> | ||||
| #include "paddle/fluid/memory/allocation/allocator.h" | ||||
| 
 | ||||
| namespace paddle { | ||||
| namespace memory { | ||||
| namespace allocation { | ||||
| 
 | ||||
| // The allocator handles the request's size is zero. Allocator will always
 | ||||
| // return an allocation even the request size is zero. However, the
 | ||||
| // allocation.ptr() is nullptr
 | ||||
| class ZeroSizeAllocator : public Allocator { | ||||
|  public: | ||||
|   ZeroSizeAllocator(std::shared_ptr<Allocator> underlying_allocator, | ||||
|                     const platform::Place& p) | ||||
|       : underlying_allocator_(std::move(underlying_allocator)), place_(p) {} | ||||
| 
 | ||||
|   bool IsAllocThreadSafe() const override; | ||||
| 
 | ||||
|  protected: | ||||
|   Allocation* AllocateImpl(size_t size, Allocator::Attr attr) override; | ||||
|   void FreeImpl(Allocation* allocation) override; | ||||
| 
 | ||||
|  private: | ||||
|   std::shared_ptr<Allocator> underlying_allocator_; | ||||
|   const platform::Place& place_; | ||||
| }; | ||||
| 
 | ||||
| }  // namespace allocation
 | ||||
| }  // namespace memory
 | ||||
| }  // namespace paddle
 | ||||
					Loading…
					
					
				
		Reference in new issue