Abstract

In this paper we describe an interface for combining routines written in conventional imperative languages like FORTRAN with those written in newer applicative languages. The purpose is to allow re-use of extant software without change in combination with applicative code that has potential for highly parallel execution. In this way the conversion of some conventional library software to exploit new parallel machines is avoided entirely, and subsystems that require parallelism for required performance can be redone without totally rewriting applications. We describe this interface in terms of the SISAL programming language. Our solution centers on parallelism control and conventional code re-use, and not on other ‘mixed language programming’ issues. Conventional computers operate by changing the global machine state, and imperative operations reflect this in the statements of a programming language. Programs in applicative languages have no such state, and combining them with routines in conventional languages requires us to reconcile this difference. In our design a definition (a la Oberon) may give the interface to some conventional routines. We define a SISAL type for the collected state of imperative subroutines. Values of that type are explicitly created, passed into the routines, and new values (altered states) return from the routines. We describe how a modified compiler for a conventional language, and a new loader, can automatically analyze and modify the conventional code to work with the interface defined in the SISAL definition. So only recompilation is necessary, not manual alteration of the codes. The definition may also specify that some SISAL functions will be called from code written in an imperative language. Well-understood techniques are available for solving some of the associated problems, so we do not include a discussion here. Several examples are included to explain both the SISAL language and the operation of the necessary software.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call