-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for different kinds of memory (HBM, FAM, and others) #195
Comments
Initial draft specification based on OpenSHMEM-1.3 specification. Needs update. |
As the teams working group is working on a proposal to introduce PE subsets in OpenSHMEM. The plan is to move towards the team-based symmetric heap. This issue should be an initial starting point for our discussions. |
Linking related documents: https://gist.github.com/nspark/b36fd446252ed789005223612808f45e |
Proposed Solution - 2 - OpenSHMEM Teams based memory allocationRequirementSimilar to Proposed Solution - 1, we need to support different kinds of memory including HBM, fabric attached memory, low latency memory and other possible types. While the proposed solution - 1 is simple, it has limited usage model. This solution provides extensive and flexible support for utilizing different types of memory by relating teams, team-based contexts, and team-based symmetric heaps. Background:
Proposal:
API:
basic traits available for creating spaces are type of memory (HBM, LOW_LATENCY, DDR), pagesize, size in bytes, memory policy. Compatibility:No backward compatibility issues with the current specification. Under Consideration:Do we need new explicit context option to decide on the memory type to be used, say SHMEM_CTX_FAM for specifying whether the context created would be then mapped to memory space created on an external memory/FAM? This can also be done internally during the context mapping operation with the spaces. |
Attaching slides for providing Support for Different Memory Kinds using Memory Spaces. |
As long as the memory model (ordering, alignment requirements, c$ line size, etc) is exactly the same across all memory spaces, it may work. Otherwise it is not really manageable. |
Slides describing the need to separate Memory Spaces and Memory Kinds in OpenSHMEM. Slides: decouple-space-memory-kinds.pdf |
|
This issue is being discussed in the Memory Spaces WG discussion. Notes on the progress of this new feature is available in the following wiki link. Based on the discussion, we are splitting this huge proposal into three different sections: We will open separate issues for section specific changes. Other related issues:
|
Marking it as blocked - as we have opened separate sub-section-based issues. Closing all the sub-section-based issues will allows us to close this one. |
Goal
Allow explicit allocation of symmetric heap on different kinds of memory available in the system architecture.
Problem
Emerging systems support multiple kinds of memory with different performance and capacity characteristics. At present, the symmetric heap is created on a memory location determined by the implementation and the users don't have options to select the kind of memory for allocating the symmetric heap.
Proposed Solution - 1 - Environment Variable based Allocation
We propose few runtime changes to allow the users to determine the memory location at which the symmetric heaps can be created and call these user-determined memory locations as Memory Partitions. Each Memory Partitions feature a list of traits to define their characteristics and kind of memory being one of those featured traits.
More details on the proposed changes, HW/SW Impact analysis are available in Redmine Ticket and in this OpenSHMEM-17 workshop paper.
Example
Proposed Solution - 2 - OpenSHMEM Teams based memory allocation
This solution is still under discussion. Will be updated once the OpenSHMEM Teams proposal is complete and ready for adding into the specification.
Notes
Symmetric Memory Partition is a feature for allocating SHEAP on different memory kinds explicitly by the users. There are multiple ways to achieve it. Initially it started as env-variable based approach and later evolved into team-based approach. So, the feature itself isn't fixed on any one particular means to achieve the goal. Even both the solution can be adopted.
Blocked by Teams proposal for further discussioin
The text was updated successfully, but these errors were encountered: