From b065877d9ade6ea169755586b3dc957105ddd8cf Mon Sep 17 00:00:00 2001 From: danleifeng <52735331+danleifeng@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:01:49 +0800 Subject: [PATCH] add chunk allocator posix_memalign return value check (#60208) (#60495) * fix chunk allocator posix_memalign return value check;test=develop * fix chunk allocator posix_memalign return value check;test=develop * fix chunk allocator posix_memalign return value check;test=develop --- paddle/fluid/distributed/common/chunk_allocator.h | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/paddle/fluid/distributed/common/chunk_allocator.h b/paddle/fluid/distributed/common/chunk_allocator.h index 17f7bb14224d3..7b19b3a109839 100644 --- a/paddle/fluid/distributed/common/chunk_allocator.h +++ b/paddle/fluid/distributed/common/chunk_allocator.h @@ -14,6 +14,7 @@ #pragma once #include +#include "paddle/fluid/platform/enforce.h" namespace paddle { namespace distributed { @@ -77,9 +78,16 @@ class ChunkAllocator { void create_new_chunk() { Chunk* chunk; - posix_memalign(reinterpret_cast(&chunk), - std::max(sizeof(void*), alignof(Chunk)), - sizeof(Chunk) + sizeof(Node) * _chunk_size); + size_t alloc_size = sizeof(Chunk) + sizeof(Node) * _chunk_size; + int error = posix_memalign(reinterpret_cast(&chunk), + std::max(sizeof(void*), alignof(Chunk)), + alloc_size); + PADDLE_ENFORCE_EQ(error, + 0, + paddle::platform::errors::ResourceExhausted( + "Fail to alloc memory of %ld size, error code is %d.", + alloc_size, + error)); chunk->next = _chunks; _chunks = chunk;