1 Overview



1.1 GridRPC

Ninf-G is a reference implementation of the GridRPC API. Ninf-G makes remote procedure calls via various protocols and middleware such as SSH and the Globus Toolkit.

GridRPC is middleware that provides a model for access to remote libraries and parallel programming for tasks on a grid. Typical GridRPC middleware includes Ninf and Netsolve. The other GridRPC middleware includes GridSolve, DIET, and OmniRPC.

GridRPC is considered effective for use in the following cases.

1.2 New features of Ninf-G Version 5

New features and functions have been added to Ninf-G Version 5 (Ninf-G5).

1.3 Overview of Ninf-G

Ninf-G is a set of library functions that provide an RPC capability in a Grid environment, based on the GridRPC API specifications.

1.3.1 Clients and servers

Ninf-G and the application programs that use Ninf-G consist of Ninf-G Executables that execute computation on server machines, and Ninf-G Clients that issue requests for computation to the Ninf-G Executables from client machines.

The Ninf-G Executables consist of functions that perform calculations (calculation functions) and a Ninf-G stub program that calls the calculation functions. Communication between clients and servers is accomplished by TCP/IP using a proprietary Ninf-G protocol.

The relationships between clients and servers are illustrated in Fig. 1.

composition-ClientServer.png

Figure 1: Clients and servers

1.3.2 Program hierarchy

Ninf-G employs the capabilities provided by the Grid middleware (e.g. Globus Toolkit) for server machine authentication, information search, job start-up, communication on External Modules. The relationships between applications, Ninf-G, Grid middleware and the OS are illustrated in Fig. 2.

composition-ProgramHierarchy.png

Figure 2: Program hierarchy

Ninf-G Clients are comprised of the following elements.

Applications
Programs written by Ninf-G users
Ninf-G Client Library
The set of API functions provided by Ninf-G for Ninf-G Clients
Information Service
An external module which retrieves information about Ninf-G Executables
Invoke Server
An external module which invokes Ninf-G Executables on a server
Client Communication Proxy
An external module which communicates with a Remote Communication Proxy

Ninf-G Executables are comprised of the following elements.

Computation functions
Programs written by Ninf-G users
Ninf-G stub
A stub program produced by the Ninf-G stub generator
Ninf-G Executable Library
The set of API functions provided by Ninf-G for Ninf-G Executables
Remote Communication Proxy
An external module which communicates with a Client Communication Proxy

1.3.3 Operating conditions

Ninf-G is supplied to the user as a source package which includes library functions, utility commands, and external modules. Required software for specified components are shown in Table 1. Specific versions in parenthesis are supported versions.

Table1: Required software for components
Software Globus Toolkit
requirements 4.0.5 or later (4.0.5, 4.0.6, 4.0.7, 4.0.8, 4.2.0, 4.2.1, 5.0.0, 5.0.1)
required by Invoke Server GT2c, GT4py, Communication Proxy GT, Information Service MDS4(*1)
--
Software Java JDK
requirements 1.5 or later (1.5.0)
required by Ninf-G Java Client, Invoke Server Condor, SSH_Condor, NAREGISS, Information Service MDS4
--
Software ant
requirements 1.6 or later (1.6.2)
required by Ninf-G Java Client, Invoke Server Condor, NAREGISS,
Information Service MDS4
--
Software Python
requirements 2.3 or later (2.3)
required by Invoke Server GT4py, SSH_Condor, Communication Proxy SSH
--
Software NAREGI Middleware
requirements V1.1 or later
required by Invoke Server NAREGISS

(*1) Invoke Server GT4py and Information Service MDS4 work on Globus Toolkit 4.x only. They do not work on Globus Toolkit 5.x.

The operating environment required for the library functions and utility commands are shown in Table 2.

Note: If the Ninf-G is compiled with the Globus Toolkit, the compiler must be the same as the compiler by which the Globus Toolkit was compiled. The flavor of the Globus Toolkit must be a Pthread flavor.

Table2: Operating environment
Target machine PC-AT compatible (x86, AMD64)
Operating system Linux(*1)
Compiler gcc 2.95, gcc 3.0, 3.1, 3.2, 3.3, 3.4(*2)
--
Target machine SPARC
Operating system Solaris 9 (SunOS 5.9)(*3)
Compiler Sun Compiler, gcc 3.2, 3.3
--
Target machine Apple Mac (PowerPC)
Operating system Mac OS X
Compiler gcc 4.0.0
--
Target machine IBM Power4
Operating system AIX 5.2
Compiler C for AIX Compiler, Version 6
--
Target machine Cell B.E.
Operating system Linux(*4)
Compiler gcc4.x

(*1) We have tested Ninf-G5 on the following distributions.

(*2) There are problems with gcc 2.96, so we recommend you use gcc 2.95.x or gcc 3.0, 3.1, 3.2, 3.3, 3.4.

(*3) GT5 is not available on Solaris 9.

(*4) We have tested Ninf-G5 on the following distributions.

1.3.4 Requirements for operation

Ninf-G allows the definition of a single computation function (1) or multiple computation functions (2) for a Ninf-G Executable running on a server machine. The execution schemes for these are shown in Fig. 3. In either case, it is possible to execute just one computation function at a time on the Ninf-G Executable. To execute multiple computation functions at the same time, it is necessary to run multiple Ninf-G Executables. This is illustrated in Fig. 4.

In Ninf-G, the second scheme (2) is referred to as "Ninf-G Executable objectification" and the calling of the computation is referred to as a "method call."

overview-stub.png

Figure 3: Overview of operation

overview-parallel.png

Figure 4: Parallel execution

Ninf-G provides handles for manipulating a Ninf-G Executable. Different handles are used for the two schemes, (1) and (2), described above. As shown in Table 3, two types of handles are provided, function handles and object handles.

Table 3: Handles
Function handle Used for manipulation of a Ninf-G Executable for which a single function is defined
Object handle Used for manipulation of a Ninf-G Executable for which multiple functions are defined

1.3.5 Starting up a Ninf-G Executable

Ninf-G Executables that run on server machines are started up from Ninf-G Clients, which run on client machines. A Ninf-G Executable is started up by performing the following procedure using the job control method provided by Invoke Server.

When running a Ninf-G Client program, however, there is no particular need for the user to be aware of this mechanism.

  1. If the appropriate Invoke Server is not started on the Client, the Invoke Server process is started first.
  2. Ninf-G Client sends request to the Invoke Server to start the job.
  3. The Invoke Server invokes the Ninf-G Executable on the remote machine, by each Invoke Server individually.

For example, if the Invoke Server for Globus Toolkit WS-GRAM is selected for use, the Invoke Server requests the remote WS-GRAM to perform the invocation. The requested remote WS-GRAM invokes the jobmanager, and the jobmanager invokes the Ninf-G Executable.

This process is shown in Fig. 5.

overview-startingOfStub.png

Figure 5: Starting up a Ninf-G Executable

1.3.6 Registering and accessing Ninf-G Executable information

Starting up a Ninf-G Executable requires path information that specifies the location of the Ninf-G Executable on that server machine. Information on the functions that are called by the Ninf-G Executable is also required. That information is collectively referred to as the Ninf-G Executable information. Ninf-G provides the following methods of registering and accessing Ninf-G Executable information.

When running a Ninf-G Client program, however, there is no particular need for the user to be aware of this mechanism.

1.4 Definition of terms

Ninf-G Client

This is a program written by a user for the purpose of controlling the execution of computation. It is obtained by linking a user-written application program to the Ninf-G Client Library.

Ninf-G Client Library

The Ninf-G Client Library puts together the API used by application programs that run on client machines (Ninf-G Client API).

Ninf-G Executable

This is a program written for the execution of user requests for computation to be performed on a remote computer. It is obtained by linking a user-written computation function to stub code and the Ninf-G Executable Library. The stub code is produced by the stub generator according to the interface specifications of the user-defined computation function. The interface specifications are written in the Ninf-G IDL (Interface Description Language) specified by Ninf-G.

Ninf-G Executable Library

The Ninf-G Executable Library puts together the API (Ninf-G Executable API) used by a Ninf-G Executable.

Client (machine)

A machine that is running a Ninf-G Client.

Server (machine)

A machine that is running a Ninf-G Executable.


Function handle

A function handle is a data item whose type is grpc_function_handle_t. The function handle represents a mapping from a function name to an instance of that function on a particular server.

Object handle

An object handle is a data item whose type is grpc_object_handle_t_np. The object handle represents a mapping from a class name to an instance of that class on a particular server. The instance is called a Ninf-G remote object, and it is able to contain multiple methods.

Remote function

A computational function written by the user. (It might be only a single computation function for a Ninf-G Executable)

Remote method

A computational function written by the user. (It might be multiple computation functions for a Ninf-G Executable)

Session

A session extends from the time an RPC is made to the time its execution is completed.

In Ninf-G, a session extends

GridRPC API

This is the standard API that systems implementing GridRPC should have. The GridRPC C language API is published as an Open Grid Forum (OGF) recommendation (GFD-R 52).

Ninf-G IDL

IDL is the acronym for Interface Definition Language. It is a language for writing interfaces for the remote functions and remote methods defined by Ninf-G Executables.

Module name

This is the identifier for Ninf-G Executables. The user may specify any character string in the Ninf-G IDL.

NRF

NRF is an acronym of Ninf-G Remote Information File. This file is in XML and describes the information about the Ninf-G Executable generated on the specified server.

1.5 Ninf-G Design

1.5.1 Reducing Overhead for Initialization of Function Handles

Ninf-G provides the following functionalities for reducing overhead for initialization of function handles.

1.5.2 Making Data Transfers Efficient

Ninf-G provides the following functionalities for efficient data transfers and elimination of redundant data transfers.

1.5.3 Compensating for the Heterogeneity and Unreliability of a Grid Environment

In order to compensate for the heterogeneity and unreliability of a Grid environment, Ninf-G provides the following functionalities:

1.5.4 Supporting Debugging of Applications

Ninf-G provides functionalities which are useful for debugging. Ninf-G enables redirection of stdout and stderr of remote executables to the client machine. Log messages generated by Ninf-G can also be stored on the client machine. Furthermore, Ninf-G enables the launch of "gdb" on the server machine when a remote executable is launched on the server. These functionalities are made available by turning on the flags in the client configuration file.

1.6 Compatibility with Ninf-G4

The GridRPC API and Ninf-G API implemented by Ninf-G5 is compatible with Ninf-G4 except the following two items.

The format of a Client configuration file is not compatible between Ninf-G4 and Ninf-G5 though they are very similar.

Due to protocol changes, Ninf-G4 client cannot communicate with Ninf-G5 executables and vice versa.

1.7 Assumed environment for using Ninf-G

1.7.1 Prerequisites for installing Ninf-G

1.7.2 Environment variables for installing / using Ninf-G

1.7.3 Execution Environment


last update : $Date: 2010-04-16 01:09:22 +0900 (金, 16 4月 2010) $