savannah-register-public
[Top][All Lists]
Advanced

[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/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]