DIET is a software for grid-computing . As middleware , DIET sits between the operating system (which handles the details of the hardware ) and the application software (which deals with the specific computational task at hand). DIET was created in 2000. It was designed for high-performance computing. It is currently developed by INRIA , École Normale Supérieure de Lyon , CNRS , Claude Bernard University Lyon 1 , SysFera. It is open-source software released under the CeCILL license.
31-895: Like NetSolve/GridSolve and Ninf, DIET is compliant with the GridRPC standard from the Open Grid Forum . The aim of the DIET project is to develop a set of tools to build computational servers. The distributed resources are managed in a transparent way through the middleware. It can work with workstations, clusters , Grids and clouds . DIET is used to manage the Décrypthon Grid installed by IBM in six French universities ( Bordeaux 1 , Lille 1 , Paris 6 , ENS Lyon, Crihan in Rouen, Orsay ). Usually, GridRPC environments have five different components: clients that submit problems to servers, servers that solve
62-570: A LRMS (Local Resource Management System), also called a batch system. DIET provides an interface with several existing LRMS to execute jobs: LoadLeveler (on IBM resources), OpenPBS (a fork of the well-known PBS system), and OAR (the batch scheduler used by the Grid'5000 research grid, developed by IMAG at Grenoble). Most of the submitted jobs are parallel jobs, coded using the MPI standard with an instantiation such as MPICH or LAM. A Cloud extension for DIET
93-454: A SeD, the SeD creates a performance-estimation vector, a collection of performance-estimation values that are pertinent to the scheduling process for that application. The values to be stored in this structure can be either values provided by CoRI (Collectors of Resource Information) or custom values generated by the SeD itself. The design of the estimation vector's subsystem is modular. CoRI generates
124-475: A basic set of performance-estimation values which are stored in the estimation vector and identified by system-defined tags. Information such as the number of cores, the total memory, the number of bogomips, and hard drive speed, etc., which are static, as well as dynamic information like the predicted time to solve a problem on the given resource, the average CPU load, is thus transferred from the Server Daemon to
155-561: A client since (1) the size of the data used in grid applications may be large and useless data transfers must be avoided; (2) data are not always stored on the client side but may be made available either on a storage resource or within the GridRPC platform. Hence, a side effect is that a fully GridRPC-compliant code can be written and compiled with any GridRPC middleware implementing the GridRPC Data Management API. The GridRPC model
186-471: A complete scheduling of the workflow (ordering and mapping), and one in which it defines only an ordering for the workflow execution. Mapping is then done in the next step by the client, using the Master Agent to find the server where the workflow services should be run. DIET provides a degree of control over the scheduling subsystem via plug-in schedulers. When a service request from an application arrives at
217-543: A draft in November 2002 and which is an Open Grid Forum (OGF) standard since September 2007. Thus a GridRPC source code which does not involve specific middleware data can be compiled and executed with any GridRPC compliant middleware. Due to the difference in the choice of implementation of the GridRPC API, a document describing the interoperability between GridRPC middleware has also been written. Its main goals are to describe
248-470: Is also called GridRPC. Clients submit computation requests to a resource broker whose goal is to find a server available on the Grid. Scheduling is frequently applied to balance the work among the servers and a list of available servers is sent back to the client; the client is then able to send the data and the request to one of the suggested servers to solve its problem. Thanks to the growth of network bandwidth and
279-431: Is most commonly used for software that enables communication and management of data in distributed applications . An IETF workshop in 2000 defined middleware as "those services found above the transport (i.e. over TCP/IP) layer set of services but below the application environment" (i.e. below application-level APIs ). In this more specific sense middleware can be described as the hyphen ("-") in client-server , or
310-400: Is pictured in the following figure. Here is how communications are handled: (1) servers register their services to a registry; (2) when a client needs the execution of a service, it contacts the registry and (3) the registry returns a handle to the client; (4) then the client uses the handle to invoke the service on the server and (5) eventually receives back the results. Mechanisms involved in
341-474: Is somewhat standardized through the Service Availability Forum and is commonly used in complex, embedded systems within the telecom, defence, and aerospace industries. Many categories of middleware have been defined, based on the field in which it is used or the application module it serves. A recent bibliography identified the main categories of middleware as follows: The term middleware
SECTION 10
#1732870109039372-407: Is the type of variables representing a remote function bound to a given server. Once allocated by the client, such a variable can be used to launch the service as many times as desired. It is explicitly invalidated by the user when not needed anymore; (2) grpc_session_t is the type of variables used to identify a specific non-blocking GridRPC call. Such a variable is mandatory to obtain information on
403-424: Is to offer recommendations for the implementation of middleware . It deals with the following topics: Among existing middleware and application programming approaches, one simple, powerful, and flexible approach consists in using servers available in different administrative domains through the classical client-server or Remote Procedure Call (RPC) paradigm. Network Enabled Servers (NES) implement this model, which
434-605: Is used among numerous Grid middleware for its simplicity of implementation, and has been standardized by the OGF in 2007. For interoperability reasons between the different existing middleware, the API has been followed by a document describing good use and behavior of the different GridRPC API implementations. Works have then been conducted on the GridRPC Data Management , which has been standardized in 2011. The scope of this standard
465-549: The -to- in peer-to-peer . Middleware includes web servers , application servers , content management systems , and similar tools that support application development and delivery. ObjectWeb defines middleware as: "The software layer that lies between the operating system and applications on each side of a distributed computing system in a network." Services that can be regarded as middleware include enterprise application integration , data integration , message oriented middleware (MOM), object request brokers (ORBs), and
496-628: The SAGA interface from the OGF, and without the standardized API calls, like OmmiRPC, XtremWeb. The RPC model over the internet has also been used for several applications. Transparently through the Internet, large optimization problems can be solved using different approaches by simply filling a web page for remote image processing computations, the use of mathematical libraries or studies on heuristics and resolution methods for sparse linear algebra like GridTLSE. This approach of providing computation services through
527-557: The enterprise service bus (ESB). Database access services are often characterised as middleware. Some of them are language specific implementations and support heterogeneous features and other related communication features. Examples of database-oriented middleware include ODBC , JDBC , and transaction processing monitors. Distributed computing system middleware can loosely be divided into two categories—those that provide human-time services (such as web request servicing) and those that perform in machine-time. This latter middleware
558-409: The operating system . It can be described as "software glue". Middleware makes it easier for software developers to implement communication and input/output, so they can focus on the specific purpose of their application. It gained popularity in the 1980s as a solution to the problem of how to link newer applications to older legacy systems, although the term had been in use since 1968. The term
589-479: The API must provide means to make synchronous and/or asynchronous calls to a service. If the latter, clients must also be able to wait in a blocking or non-blocking manner after the completion of a given service. This naturally involves some data structures and conducts to a rigorous definition of the functions of the API. GridRPC Data Types Three main data types are needed to implement the API: (1) grpc_function_handle_t
620-407: The GridRPC environment ready and finish it. In order to initialize and destruct a function handle, grpc_function_handle_init() and grpc_function_handle_destruct() functions have to be called. Because a function handle can be dynamically associated to a server, because of resource discovery mechanisms for example, a call to grpc_function_handle_default() let to postpone the server selection until
651-515: The Internet is also highly close to the Service Oriented Computing (SOA) paradigm, and is the core of the Cloud computing . One simple, yet effective, mean to execute jobs on a computing grid is to use a GridRPC middleware, which relies on the GridRPC paradigm. For each request, the GridRPC middleware manages the management of the submission, of the input and output data, of the execution of
SECTION 20
#1732870109039682-472: The actual call is made on the handle. grpc_get_handle() let the client retrieve the function handle corresponding to a session ID ( e.g., to a non-blocking call) that has been previously performed. Depending on the type of the call, blocking or non-blocking, the client can use the grpc_call() and grpc_call_async() function. If the latter, the client possesses after the call a session ID which can be used to respectively probe or wait for completion, cancel
713-538: The call and check the error status of a non-blocking call. After issuing a unique or numerous non-blocking calls, a client can use: grpc_probe() to know if the execution of the service has completed; grpc_probe_or() to know if one of the previous non-blocking calls has completed; grpc_cancel() to cancel a call; grpc_wait() to block until the completion of the requested service; grpc_wait_and() to block until all services corresponding to session IDs used as parameters are finished; grpc_wait_or() to block until any of
744-461: The difference in behaviour of the GridRPC middleware and to propose a common test that all GridRPC middleware must pass. Discussions have then been undertaken on the data management within GridRPC middleware. A draft of an API has been proposed during the OGF'21 in October 2007. The motivation for this document is to provide explicit functions to manipulate the data exchange between a GridRPC platform and
775-411: The job on the remote resource, etc. To make available a service, a programmer must implement two codes: a client, where data are defined and which is run by the user when requesting the service, and a server, which contains the implementation of the service which is executed on the remote resource. One step to ease the development of such codes conducted to define a GridRPC API, which has been proposed as
806-549: The problems sent by clients, a database that contains information about software and hardware resources, a scheduler that chooses an appropriate server depending on the problem sent and the information contained in the database, and monitors that get information about the status of the computational resources. DIET's architecture follows a different design. It is composed of: Two approaches were developed: For workflow management, DIET uses an additional entity called MA DAG . This entity can work in two modes: one in which it defines
837-473: The reduction of network latency, small computation requests can now be sent to servers available on the Grid. To make effective use of today's scalable resource platforms, it is important to ensure scalability in the middleware layers as well. This service-oriented approach is not new. Several research projects have targeted this paradigm in the past. The main middleware implementing the API are DIET, NetSolve/GridSolve, Ninf, but some other environments use it like
868-527: The scheduler agent in order to provide pertinent information for a better scheduling. As mentioned above, these are used in correlation with the application-driven scheduler possibility in DIET: the Server Daemon, which has a better understanding of the application needs, can request for a specific scheduling relaying on the information stored in this vector. Three different data managers have been integrated into DIET: Parallel resources are generally accessible through
899-479: The service corresponding to session IDs used as parameters has finished; grpc_wait_all() to block until all non-blocking calls have completed; and grpc_wait_any() to wait until any previously issued non-blocking request has completed. Talk about the lib (+link) against which a code must compile and give a basic example Middleware Middleware is a type of computer software program that provides services to software applications beyond those available from
930-491: The status of a job, in order for a client to wait after, cancel or know the error status of a call; (3) grpc_error_t groups all kind of errors and returns status codes involved in the GridRPC API. GridRPC Functions grpc_initialize() and grpc_finalize() functions are similar to the MPI initialize and finalize calls. It is mandatory that any GridRPC call is performed in between these two calls. They read configuration files, make
961-410: Was created in 2009. DIET is thus able to access Cloud resources through two existing Cloud providers: GridRPC GridRPC in distributed computing , is Remote Procedure Call over a grid . This paradigm has been proposed by the GridRPC working group of the Open Grid Forum (OGF), and an API has been defined in order for clients to access remote servers as simply as a function call. It