The Future 
Photo Gallery

The KeLP Programming System 

KeLP (Kernel Lattice Parallelism) is a framework for implementing portable scientific applications on distributed memory parallel computers. It is intended for applications with special needs, in particular, that adapt to data-dependent or hardware dependent conditions at run time. KeLP is currently used in full-scale applications including subsurface modeling, turbulence studies, and first principles simulation of real materials. 

KeLP provides run time support for general blocked data decompositions and the management of the underlying irregular communication. The KeLP programmer may customize load balancing activity to the application, and treat interprocessor communication at a very high level. KeLP is useful in multi-resolution applications, including the multi-level adaptive method shown here. It facilitates performance tuning in uniform methods, too, i.e. to evaluate optimal processor geometries at run time. 

KeLP encapsulates communication activity using a model known as communication orchestration. Under this model, all communication is expressed in terms of atomic array section moves. The KeLP programmer expresses and optimizes data motion and decomposition using high-level geometric set operations and may specify elaborate interpolation or coupling functions to handle complicated boundary conditions arising in multidisciplinary applications. 

KeLP is simple and intuitive, and has a quick learning curve. It defines only 7 new data types plus a small number of primitives to manipulate them. KeLP provides an easily understood model of locality that ensures that applications achieve portable performance across a diverse range of platforms including IBM SP2, Cray T3E, SGI-Cray Origin 200, and clusters of workstations running AIX, Solaris, and Linux. Applications may also be developed on single processor workstations. 

KeLP supports a task parallel model which isolates parallel coordination activities from numerical computation. This simplifies the design of application software and promotes software re-use. In particular the KeLP programmer may plug in existing serial numerical kernels that have known numerical properties and leverage mature compiler technology. These kernels may be written in Fortran 90 or 77, or any other language the programmer chooses. 

KeLP applications may be written in a dimension-independent form which can facilitate development of 3D applications that have a simpler analog in 2D. The programmer may develop the parallelization logic in two dimensions, without having to incur the delays of running a full-scale 3D computation on a mainframe. We have found dimension-independence to be useful in reducing development times since the programmer can effectively debug on a workstation. 

Writing your application with KeLP. If you think that KeLP could help you build your parallel structured application, please let us know. For more information, please send us email at


The KeLP Philosophy

Change is a basic fact of life in software design. The KeLP philosophy is to accommodate change through layering. KeLP classes may be specialized through inheritance or composed in Domain-specific Application Programmer Libraries. These application libraries may in turn be extended as necessary to meet new needs. KeLP is middleware sitting between the application and the low-level communication substrate, e.g. MPI. KeLP interoperates with MPI, which facilitates low-level performance tuning.

Through the application libraries, the KeLP infrastructure presents computational scientists with high-level tools that allow them to concentrate on the application and mathematics instead of low-level concerns of data distribution and interprocessor communication. Such support enables scientists to develop complicated applications in a fraction of the time that would have been required if the application had been developed in MPI alone. The KeLP distribution includes example application libraries which may be used as templates for deriving new ones.

Home | Contact | Publications | Software | Picture Gallery | Applications | Future

Dept. of Computer Science and Engineering, Jacobs School of Engineering, 
University of California, San Diego, MC 0114 -- 9500 Gilman Drive -- La Jolla, CA 92093-0114 USA 

You are visitor number  since December 7, 1997.

Maintened by Daniel Shalit.  Last modified: Thurs Nov 1 05:51:58 PDT 2001