- Notifications
You must be signed in to change notification settings - Fork37
Linux Cross-Memory Attach
License
LGPL-2.1, GPL-2.0 licenses found
Licenses found
LGPL-2.1
COPYING.LESSERGPL-2.0
COPYINGNotificationsYou must be signed in to change notification settings
hpc/xpmem
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
# IntroductionThis is an experimental version of XPMEM based on a version provided by Crayand uploaded tohttps://code.google.com/p/xpmem. This version supports anyLinux kernel 3.12 and newer (tested up to 5.8.x). Keep in mind there may be bugs andthis version may cause kernel panics, code crashes, eat your cat, etc.XPMEM is a Linux kernel module that enables a process to map thememory of another process into its virtual address space. Source codecan be obtained by cloning the Git repository, original Mercurialrepository or by downloading a tarball from the link above.The XPMEM API has three main functions: xpmem_make() xpmem_get() xpmem_attach()A process calls xpmem_make() to export a region of its virtual addressspace. Other processes can then attach to the region by callingxpmem_get() and xpmem_attach(). After a memory region is attached, itis accessed via direct loads and stores. This enables upper-levelprotocols such as MPI and SHMEM to perform single-copy address-spaceto address-space transfers, completely at user-level.Note, there is a limitation to the usage of an attached region. Anysystem call that will call get_user_pages() on the region from thenon-owning process with get EFAULT. This include pthread mutexesand condition variable, and SYS V semaphores. We intend to addressthis limitation in a future release.XPMEM regions are free to have "holes" in them, meaning virtual memoryregions that are not allocated. This makes XPMEM somewhat moreflexible than mmap(). A process could, for example, export a regionvia XPMEM starting at address 0 and extending 4 GB. Accesses toallocated (valid) virtual addresses in this region proceed normally,and pages are mapped between address spaces on demand. A segfault willoccur if the source process or any other process mapping the regiontries to access an unallocated (invalid) virtual address in theregion.# Known issues* Memory regions mapped with XPMEM cannot be pinned with [ibv_dereg_mr](https://linux.die.net/man/3/ibv_reg_mr)
About
Linux Cross-Memory Attach
Resources
License
LGPL-2.1, GPL-2.0 licenses found
Licenses found
LGPL-2.1
COPYING.LESSERGPL-2.0
COPYINGStars
Watchers
Forks
Packages0
No packages published