hpx/parcelport_libfabric/rma_memory_pool.hpp

See Public API for a list of names and headers that are part of the public HPX API.

Defines

RDMA_POOL_1K_CHUNK_SIZE
RDMA_POOL_SMALL_CHUNK_SIZE
RDMA_POOL_MEDIUM_CHUNK_SIZE
RDMA_POOL_LARGE_CHUNK_SIZE
RDMA_POOL_MAX_1K_CHUNKS
RDMA_POOL_MAX_SMALL_CHUNKS
RDMA_POOL_MAX_MEDIUM_CHUNKS
RDMA_POOL_MAX_LARGE_CHUNKS
namespace hpx
namespace parcelset
template<typename RegionProvider>
struct memory_region_allocator

Public Types

typedef RegionProvider::provider_domain domain_type
typedef rma_memory_region<RegionProvider> region_type
typedef std::shared_ptr<region_type> region_ptr

Public Functions

memory_region_allocator()

Public Static Functions

static region_ptr malloc(domain_type *pd, const std::size_t bytes)
static void free(region_ptr region)
template<typename RegionProvider, typename Allocator, typename PoolType, std::size_t ChunkSize, std::size_t MaxChunks>
struct pool_container

Public Types

typedef RegionProvider::provider_domain domain_type
typedef rma_memory_region<RegionProvider> region_type
typedef std::shared_ptr<region_type> region_ptr

Public Functions

pool_container(domain_type *pd)
bool allocate_pool()
void DeallocatePool()
void push(region_type *region)
region_type *pop()
void decrement_used_count(uint32_t N)
std::string status()
constexpr std::size_t chunk_size() const

Public Members

performance_counter<unsigned int> accesses_
performance_counter<unsigned int> in_use_
domain_type *pd_
std::unordered_map<const char*, region_ptr> block_list_
std::array<region_type, MaxChunks> region_list_
bl::stack<region_type*, bl::capacity<MaxChunks>> free_list_
struct pool_large

Public Static Functions

static const char *desc()
struct pool_medium

Public Static Functions

static const char *desc()
struct pool_small

Public Static Functions

static const char *desc()
struct pool_tiny

Public Static Functions

static const char *desc()
template<typename RegionProvider>
struct rma_memory_pool

Public Types

typedef RegionProvider::provider_domain domain_type
typedef rma_memory_region<RegionProvider> region_type
typedef memory_region_allocator<RegionProvider> allocator_type
typedef std::shared_ptr<region_type> region_ptr

Public Functions

HPX_NON_COPYABLE(rma_memory_pool)
rma_memory_pool(domain_type *pd)
~rma_memory_pool()
void deallocate_pools()
bool can_allocate_unsafe(size_t length) const
region_type *allocate_region(size_t length)
void deallocate(region_type *region)
region_type *allocate_temporary_region(std::size_t length)

Public Members

domain_type *protection_domain_
pool_container<RegionProvider, allocator_type, pool_tiny, RDMA_POOL_1K_CHUNK_SIZE, RDMA_POOL_MAX_1K_CHUNKS> tiny_
pool_container<RegionProvider, allocator_type, pool_small, RDMA_POOL_SMALL_CHUNK_SIZE, RDMA_POOL_MAX_SMALL_CHUNKS> small_
pool_container<RegionProvider, allocator_type, pool_medium, RDMA_POOL_MEDIUM_CHUNK_SIZE, RDMA_POOL_MAX_MEDIUM_CHUNKS> medium_
pool_container<RegionProvider, allocator_type, pool_large, RDMA_POOL_LARGE_CHUNK_SIZE, RDMA_POOL_MAX_LARGE_CHUNKS> large_
hpx::util::atomic_count temp_regions
hpx::util::atomic_count user_regions