Variable-Size Symmetric Heap Memory Allocation for PGAS Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current PGAS-based programming models like OpenSHMEM lack the ability to perform variable-size memory allocations while maintaining the advantages of symmetric addressing, leading to inefficient memory usage and increased costs for small transfers due to dynamic memory registration and RDMA overhead.
Innovation Solution
The introduction of APIs such as `shmem_malloc_varsize` and `shmem_malloc_onepe` allows for variable-size memory allocations across processing elements, enabling each PE to allocate memory based on its specific needs while maintaining a symmetric memory layout, and provides mechanisms for address translation to ensure remote accessibility.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of operation
If symmetric heap allocation is used in OpenSHMEM, then remote memory access is enabled through symmetric addressing, but memory usage efficiency deteriorates due to uniform allocation sizes across all PEs
Solution Approach 1:
The patent applies local quality by allowing each processing element to allocate memory sizes tailored to its specific needs rather than enforcing uniform allocation. The symmetric heap structure maintains consistent addressing schemes while permitting variable allocation sizes locally at each PE, optimizing memory usage according to local requirements.
Solution Approach 2:
The patent introduces dynamic memory allocation capabilities where the heap manager can adjust allocation sizes based on runtime conditions and specific PE requirements. This dynamic approach allows the system to transition from static uniform allocation to flexible variable-size allocation while maintaining symmetric addressing benefits.
2Quantity of substance
If variable-size allocation is implemented, then memory efficiency is improved, but symmetric addressing advantages are lost
Solution Approach 1:
The patent deliberately introduces asymmetry in allocation sizes while preserving symmetry in addressing schemes. Each PE can allocate different memory sizes (asymmetric allocation) but the symmetric heap structure maintains consistent address calculation methods across all PEs, allowing variable-size allocation without sacrificing symmetric addressing benefits.
Solution Approach 2:
The patent segments the symmetric heap into variable-size regions at each PE while maintaining the overall symmetric structure. This segmentation allows different allocation sizes in different local regions while preserving the global symmetric addressing scheme that enables efficient remote access.
3Adaptability or versatility
If MPI-style remote memory access is used, then different object sizes are supported, but performance deteriorates due to dynamic memory registration overhead
Solution Approach 1:
The patent applies preliminary action by pre-registering memory regions in the symmetric heap before remote access operations. This pre-registration eliminates the need for dynamic memory registration during runtime, reducing overhead and improving transfer performance while still supporting variable-size objects through the variable allocation capabilities of the symmetric heap.
Data Source
AI summary
Various examples relate to apparatuses, devices, methods and computer programs for allocating memory. An apparatus comprises interface circuitry, machine-readable instructions, and processor circuitry to execute the machine-readable instructions to process instructions of a software application of a local processing element participating in a partitioned global address space, allocate, upon processing an instruction for allocating memory on a symmetric heap being used across a plurality of processing elements participating in the partitioned global address space, memory on the symmetric heap, wherein, if the instruction for allocating memory indicates that memory is to be allocated with a variable size, the memory allocated on the symmetric heap has a size that is specific for the local processing element.


