Gled
is a
Generic Lightweight Environment for Distributed computing.
Gled
is a C++ framework for rapid
development of applications with support for GUI, 3D-graphics and
distributed computing. It extends the ROOT
framework (standard data-analysis tool in high-energy physics) with
mechanisms for object collection management & serialization,
multi-threaded execution, GUI auto-generation (object browser &
editor) and dynamic visualization (OpenGL).
Distributed computing model of Gled
is a
hierarchy of nodes connected via TCP/IP sockets. Gled
provides authentication & access control,
data exchange, proxying of object collections and remote method-call
propagation & execution.
Gled
can be dynamically extended with
library sets. Their creation is facilitated by a set of scripts for
creation of user-code stubs. Simple tasks and application
configuration can be efficiently done via the interactive C++
interpreter (CINT).
Gled
is used for development of programs in high
energy physics and as a research tool in distributed and grid computing.
Gled
is the development platform for
the Greed
project.
Gled
implements a specific clustering
paradigm, offering servers, proxies, clients and viewers with a high degree
of code reuse. The top-level server node exposes its object
space to first-level nodes which provide proxying facilities to
second-level nodes and at the same time function as servers, exporting
their own independent object spaces. Each node in the ordered tree
structure therefore functions as a client, a proxy and a
server. Viewing and rendering facilities are optional and can be
instantiated at any node. An infrastructure for propagation and
broadcasting of method invocation requests is provided and is general
enough to allow for authentication and an efficient access
control. Synchronization of object spaces is achieved via streaming of
object graphs and a time-ordered delivery of method invocation
requests. Independent local object-spaces exist on every node and can
be used for objects pertaining to local computation and rendering.
Gled
OO framework provides
facilities for generic programming in a server-proxy-client hierarchy.
ZGlass
is the common base of all Gled
classes and represents a generic object-graph-member with ability
to have named pointers (or links) to other objects. ZList
is the container base class and ZNode
an object-tree-member base class.
Object graphs can be traversed by algorithms (existing
within the same object structure, but on any node in the server-client
tree) to achieve modification of object-graph state or produce visual
effects. Aggregates of objects enter into the structures at different
levels and can be arbitrarily propagated to other nodes in the
server-client tree. To minimise network traffic, parts of object graph
can be retrieved from local files or databases.
Node hierarchy and object aggregate dependency is accessible to
alghoritms.
Gled
is a ROOT
application with full access to ROOT
's
data analysis and presentation services, object I/O and CINT, the
C/C++
interpreter.
Objects can acquire their own threads to perform different tasks
such as computation, data acquisition and analysis or dynamic
visualisation. Results obtained can be pushed to other computing
nodes or storage devices. As threads are spawned and controlled by
standard gled method invocation requests, schedulers and job control
mechanisms spawning across the whole Gled
cluster can
easily be implemented. Optimized streaming and method invocation
propagation is provided for use in HEP computations with large data
sets and fast data transfers.
Gled
features
automatically generated GUI widgets (using FLTK
, the
Fast Light ToolKit) that provide object interaction and editing
following C++
inheritance hierarchy. Widgets for exported
object-members (data and methods) are created automatically.
Their callbacks send Gled method invocation requests,
thus allowing interaction with remote objects. An object collection
browser, object instantiation interface and method execution request
builder is provided.
The viewer implements a versatile 3D rendering infrastructure where the user has detailed control over rendering. Several rendering sessions can be operated independently. Direct access to OpenGL is provided within a parallel class structure (class Foo has renderer Foo_GL_Rnr). Renderer permits direct mouse and keyboard interaction with objects and the camera.
Gled
is developed and maintained by Matev¾ Tadel, © 1999-2010
Matev¾ Tadel.
Gled
is free software, released under the General GNU Public License (GPL) version 2.0
(June 1991).
Extensions of Gled
in a form of libsets
can
be distributed under different licensing terms.
gled/about:contributors
Matev¾ Tadel |     | design, development, basic documentation |
Jan Jona Javor¹ek | meta-design, user documentation, web |
Developement of Gled
is supported by
Experimental Particle Physics
Department of the Jozef Stefan
Institute (JSI), Ljubljana, Slovenia.
Since November 2001 development of Gled
is partially supported by projects funded
by Slovenian Ministry of Education,
Science and Sport.
Since September 2004 Gled
is used as a tool for dynamic visualization and prototyping of
visualization algorithms by the ALICE
collaboration at CERN. Some core
development has been carried out in this context.
Perl
, FLTK
and ROOT
have
been indispensable. Many thanks to all involved.
C++
(Gnu GCC)
Perl
(preprocessing, building and general sanity)
Posix threads
ROOT
(streaming,
IO, CINT C++ interpreter and other ROOT services)
FLTK
, the Fast Light
ToolKit (for GUI)
OpenGL
(realtime rendering)
Gled
's libsets may (and do) have additional dependencies.
Greed
-
Global Research Environment for Equitable Development