0
I Use This!
Activity Not Available

Project Summary

libpersist is a small library of c++ base classes and templates providing the capability to store and load objects in their entirety across executions. It also provides for object relocation between threads in a NUMA (non-uniform memory access) parallel processing environment.
libpersist was written for use in simulations, where software objects often correspond to simulated objects that are connected to or contained within others. During the build phase, the objects are instantiated, then stored to disk. In the operation phase, the objects are reloaded. The objects are usually built once, and operated many times with variations in inputs or parameters. There is usually no high throughput requirements during the build phase of a simulator. High throughput, however, becomes the most important issue in actual simulation runs.
The core idea is that objects stored to disk as POD are re-constructed as objects. This re-construction is aided by three id-based reference/handler template classes. They replace POPs (plain old pointers) for embedding objects in other objects. Together with supporting template functions, these reference classes relieve the user from the drudgery of explicitly coding for object management for every relevant object.
In a NUMA environment, threads can be made to execute on specified processors and allocate memory from specified memory blocks. This means objects should be relocated to the thread that will execute their member functions. Relocation is a special case of persistence, requiring re-construction after the POD has been moved in memory. After all objects have been relocated to their target memories, all references to the objects must be swizzled (their ids resolved to their addresses), so that they can be de-referenced efficiently like POPs.
libpersist does assume the use of threads, which share a common virtual address space, so that POPs are valid in all threads. It provides an in-memory object manager which keeps a hash table of object id to address translations. This means all objects are accessible in all threads. libpersist does not impose any access restriction. But users can impose their own.
The use of NUMA and threads is NOT part of libpersist. But example derived classes and programs, included as part of the documentation, demonstrate the use of libpersist in NUMA threads.

Tags

No tags have been added

In a Nutshell, c++ library for object persistence...

 No code available to analyze

Open Hub computes statistics on FOSS projects by examining source code and commit history in source code management systems. This project has no code locations, and so Open Hub cannot perform this analysis

Is this project's source code hosted in a publicly available repository? Do you know the URL? If you do, click the button below and tell us so that Open Hub can generate statistics! It's fast and easy - try it and see!

Add a code location

GNU General Public License v2.0 or later
Permitted

Commercial Use

Modify

Distribute

Place Warranty

Forbidden

Sub-License

Hold Liable

Required

Include Copyright

Include License

Distribute Original

Disclose Source

State Changes

These details are provided for information only. No information here is legal advice and should not be used as such.

All Licenses

This Project has No vulnerabilities Reported Against it

Did You Know...

  • ...
    Black Duck offers a free trial so you can discover if there are open source vulnerabilities in your code
  • ...
    by exploring contributors within projects, you can view details on every commit they have made to that project
  • ...
    nearly 1 in 3 companies have no process for identifying, tracking, or remediating known open source vulnerabilities
  • ...
    data presented on the Open Hub is available through our API

 No code available to analyze

Open Hub computes statistics on FOSS projects by examining source code and commit history in source code management systems. This project has no code locations, and so Open Hub cannot perform this analysis

Is this project's source code hosted in a publicly available repository? Do you know the URL? If you do, click the button below and tell us so that Open Hub can generate statistics! It's fast and easy - try it and see!

Add a code location

Community Rating

Be the first to rate this project
Click to add your rating
   Spinner
Review this Project!
Sample ohloh analysis