1 Overview

1.1 GridRPC

Ninf-G uses the Globus Toolkit to provide a running environment for GridRPC.

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.

GridRPC is considered effective for use in the following cases.

1.2 Overview of Ninf-G

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

1.2.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 is illustrated in Fig. 1.

composition-ClientServer.jpeg

Figure 1: Clients and servers

1.2.2 Program hierarchy

Ninf-G employs the capabilities provided by the Globus Toolkit (http://www.globus.org/) for server machine authentication, information search, job start-up, communication and file transfer. The relations among applications, the Ninf-G, Globus Toolkit and the OS are illustrated in Fig. 2.

composition-ProgramHierarchy.jpeg

Figure 2: Program hierarchy

Ninf-G Clients comprise 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
Globus Toolkit
The set of functions provided by the Globus Toolkit

Ninf-G Executables comprise 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
Globus Toolkit
The set of functions provided by the Globus Toolkit

1.2.3 Operating conditions

Ninf-G is supplied to the user as a source package, which includes the library functions (API) and utility commands. The operating conditions for the library functions and utility commands are shown in Table 1.

Table1: Operating conditions
Globus Toolkit 2.2 or later
--
Target machine SPARC
Operating system Solaris 5.9
Compiler Sun Compiler or gcc-2.95
Globus Toolkit Flavor vendorcc32dbg, vendorcc32dbgpthr, gcc32dbg, gcc32dbgpthr
--
Target machine PC-AT compatible (x86, IA64, Opteron)
Operating system Linux(*1)
Compiler gcc-2.95, gcc-3.x(*2)
Globus Toolkit Flavor gcc32dbg, gcc32dbgpthr, gcc64dbg, gcc64dbgpthr
--
Target machine SGI Origin 2000 (MIPS)
Operating system IRIX64 6.5
Compiler SGI Compiler
Globus Toolkit Flavor vendorcc64dbg or vendorcc64dbgpthr
--
Target machine HP Alpha
Operating system Tru64 UNIX(OSF1 V5.1)
Compiler Compaq C or gcc 3.x
Globus Toolkit Flavor vendorcc64dbg or gcc64dbg
--
Target machine IBM Power4
Operating system AIX 5.2
Compiler gcc 2.9
Globus Toolkit Flavor gcc32dbg

(*1) We are checking operating by the following distributions.

(*2) There are problems with gcc-2.96, so we recommend you to use gcc-2.95.x or gcc3.x.

1.2.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.jpeg

Figure 3: Overview of operation

overview-parallel.jpeg

Figure 4: Parallel execution

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

Table 2: 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 a multiple functions are defined

1.2.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 the Globus Toolkit.

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

  1. A start-up request is sent from a Ninf-G Client to the gatekeeper.
  2. The gatekeeper starts up the job manager.
  3. The job manager starts up the Ninf-G Executable.

This process is shown in Fig. 5.

overview-startingOfStub.jpeg

Figure 5: Starting up a Ninf-G Executable

1.2.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.3 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 (and Globus Toolkit).

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 (and Globus Toolkit). 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 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 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

A object handle is a data 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 Ninf-G remote object which 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. Concerning the GridRPC C language API, standardization by the GGF WG is proceeding.

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.

1.4 Function added in Ninf-G v2

1.5 Compatibility with Ninf-G v1

1.6 Assumed conditions for using Ninf-G

1.6.1 Prerequisite for installing Ninf-G

1.6.2 Environment variables for installing / using Ninf-G

1.6.3 Execution Environment


last update : $Date: 2005/07/08 04:05:07 $