next up previous
Next: Building Applications: Programming and Up: The Bayanihan Framework Previous: System Design

Using the Framework

Writing an application using the Bayanihan framework typically involves first selecting and using existing generic library components (shown as shaded boxes in Fig. 1), and then defining new application-specific components (shown as double-bordered boxes) by extending existing base classes. In this way, application programmers can write a wide variety of applications that share a common programming model (e.g., master-worker) by using a common set of pre-defined engine, manager, and data pool objects, and then defining different data, GUI, and program objects according to the application.

The Bayanihan framework, however, also allows programmers and researchers to change the generic objects themselves, making it easy for them to implement and experiment with new generic functionality and mechanisms. For example, researchers can experiment with performance optimization by writing work manager objects with different scheduling algorithms. Similarly, replication-based fault-tolerance mechanisms can be implemented by extending (i.e., subclassing) the manager and data pool objects. Programmers can even implement entirely new parallel programming models by creating new sets of engines, managers, and data pools.

By providing extensibility on these two levels - i.e., the applications and generic mechanisms levels - the Bayanihan framework makes it easy for programmers and researchers not only to build a variety of applications, but also to study the different technical issues in volunteer computing and develop possible approaches to them. In the remainder of this paper, we show how we are using this two-level flexibility, and discuss our current results.


next up previous
Next: Building Applications: Programming and Up: The Bayanihan Framework Previous: System Design
Luis Sarmenta
12/9/1998