1 Overview



1.1 GridRPC

Ninf-G uses the Globus Toolkit to provide an operating 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 New features of Ninf-G Version 4

New features and functions have been added to Ninf-G Version 4 (Ninf-G4).

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 Globus Toolkit (http://www.globus.org/) for server machine authentication, information search, job start-up, communication and file transfer. The relations among applications, Ninf-G, the Globus Toolkit 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
Globus Toolkit
The set of functions provided by the Globus Toolkit

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

1.3.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 environment required for the library functions and utility commands are shown in Table 1.

The usage of GT2 (implying the use of Pre-WS GRAM or MDS2) requires a GT2, GT3 or GT4 installation. Every Globus Toolkit has compatibility with GT2.

The usage of GT4 (implying the use of WS GRAM or MDS4) requires a GT4 installation.

Table1: Operating environment
Globus Toolkit 2.2 or later (2.4, 3.2, 4.0)
Python 2.3 or later
--
Target machine SPARC
Operating system Solaris 9 (SunOS 5.9)
Compiler Sun Compiler or gcc 2.95
Globus Toolkit flavor vendorcc32dbg, vendorcc32dbgpthr, gcc32dbg, gcc32dbgpthr
--
Target machine PC-AT compatible (x86, Opteron)
Operating system Linux(*1)
Compiler gcc 2.95, gcc 3.0, 3.1, 3.2, 3.3, 3.4(*2)
Globus Toolkit flavor gcc32dbg, gcc32dbgpthr, gcc64dbg, gcc64dbgpthr
--
Target machine IBM Power4
Operating system AIX 5.2
Compiler C for AIX Compiler, Version 6
Globus Toolkit flavor vendorcc32dbg or vendorcc32dbgpthr
--
Target machine Apple Mac (PowerPC)
Operating system MacOS X
Compiler gcc 4.0.0
Globus Toolkit flavor gcc32dbg or gcc32dbgpthr

(*1) We are checking operation with 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.

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 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 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 the Globus Toolkit or Invoke Server.

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

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 (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 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. For the GridRPC C language API, standardization by the GGF WG is currently still in process.

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

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: 2008/09/29 03:21:51 $