The purpose of GridSolve is to create the middleware necessary to provide a seamless bridge between the simple, standard programming interfaces and desktop systems that dominate the work of computational scientists and the rich supply of services supported by the emerging Grid architecture, so that the users of the former can easily access and reap the benefits (shared processing, storage, software, data resources, etc.) of using the latter. In addition to supporting a diverse set of hardware, such as desktop computers, clusters, and massively parallel computers, Grid middleware may need to interact with the software managing those systems, such as Condor, LFC (LAPACK for Clusters), and batch queues. Furthermore, user requests may be characterized in different ways (parameter sweep, task graph, etc.), each with different requirements. This diversity has led us to implement scheduling in different layers of GridSolve with the understanding that a strategy for scheduling and resource al...