[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Savannah-register-public] [task #5540] Submission of c++ library for ob
From: |
Elaine Tsiang |
Subject: |
[Savannah-register-public] [task #5540] Submission of c++ library for object persistence |
Date: |
Tue, 9 May 2006 12:30:18 -0700 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060313 Debian/1.5.dfsg+1.5.0.1-4 Firefox/1.5.0.1 |
URL:
<http://savannah.nongnu.org/task/?func=detailitem&item_id=5540>
Summary: Submission of c++ library for object persistence
Project: Savannah Administration
Submitted by: elainety
Submitted on: Tuesday 05/09/06 at 12:30
Should Start On: Tuesday 05/09/06 at 00:00
Should be Finished on: Friday 05/19/06 at 00:00
Category: Project Approval
Priority: 5 - Normal
Status: None
Privacy: Public
Assigned to: None
Percent Complete: 0%
Open/Closed: Open
Effort: 0.00
_______________________________________________________
Details:
A new project has been registered at Savannah
The project account will remain inactive until a site admin approve or
discard the registration.
######### REGISTRATION ADMINISTRATION #########
While this item will be useful to track the registration process, approving
or discarding the registration must be done using the specific "Group
Administration" page, accessible only to site administrators, effectively
logged as site administrators (superuser):
<https://savannah.nongnu.org/siteadmin/groupedit.php?group_id=8544>
######### REGISTRATION DETAILS #########
Full Name:
----------
c++ library for object persistence
System Group Name:
-----------------
libpersist
Type:
-----
non-GNU software & documentation
License:
--------
GNU General Public License V2 or later
Description:
------------
ibpersist 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.
http://www.gnutopia.org/libpersist/Talk.tar.gz is the tarball of a talk I
gave on the concepts of libpersist. It has an openoffice presentation file,
together with the version of the source at the time of writing of the talk.
The notes for the slides have tags into the source to illustrate the slides
in the presentation. Except for minor changes, that version of source will
become the release candidate. No makefiles, configuration or other
distribution-related files are included. This talk will become the initial
version of the libpersist documentation.
Other Software Required:
------------------------
g++(gcc v3.3) - http://directory.fsf.org/gcc.html
libstdc++.so.5 - http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html
gdbm - http://directory.fsf.org/gdbm.html
libpthread (glibc v3.3) - http://directory.fsf.org/glibc.html
libnuma -
http://packages.debian.org/changelogs/pool/main/n/numactl/numactl_0.9.3-2/libnuma1.copyright
linux kernel 2.6 with NUMA support -
http://www.kernel.org/pub/linux/kernel/COPYING
Other Comments:
---------------
There has been a 'libpersist' already. But I understand it has been folded
into Common C++. The ideas for persistence of this libpersist are orthogonal
to the ideas in Common C++. This libpersist is also very narrowly focused on
object persistence and nothing else. It may have more general applicability
than in simulations. I hope others will discover other uses for it.
I have developed libpersist in the environment of the amd64 port of Debian
sarge. I hope other contributors can test it on other platforms.]
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/task/?func=detailitem&item_id=5540>
_______________________________________________
Message sent via/by Savannah
http://savannah.nongnu.org/
- [Savannah-register-public] [task #5540] Submission of c++ library for object persistence,
Elaine Tsiang <=