Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a...

20
Data types Function handle – Function handle – grpc_function_handle_t grpc_function_handle_t A structure that contains a mapping between a cli ent and an instance of a remote function Object handle – Object handle – grpc_object_handle_t_np grpc_object_handle_t_np A structure that contains a mapping between a cli ent and an instance of a remote object Session ID – Session ID – grpc_sessionid_t grpc_sessionid_t Non-nevative integer that identifies a session Session ID can be used for status check, cancella tion, etc. of outstanding RPCs. Error and status code – Error and status code – grpc_error_t grpc_error_t Integer that describes error and status of GridRP C APIs. All GridRPC APIs return error code or status cod e.

Transcript of Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a...

Page 1: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Data types

Function handle – Function handle – grpc_function_handle_tgrpc_function_handle_tA structure that contains a mapping between a client and an instance of a remote function

Object handle – Object handle – grpc_object_handle_t_npgrpc_object_handle_t_npA structure that contains a mapping between a client and an instance of a remote object

Session ID – Session ID – grpc_sessionid_tgrpc_sessionid_tNon-nevative integer that identifies a sessionSession ID can be used for status check, cancellation, etc. of outstanding RPCs.

Error and status code – Error and status code – grpc_error_tgrpc_error_tInteger that describes error and status of GridRPC APIs.All GridRPC APIs return error code or status code.

Page 2: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Initialization / Finalization

grpc_error_t grpc_initialize(char *config_file_name)grpc_error_t grpc_initialize(char *config_file_name)reads the configuration file and initialize client.Any calls of other GRPC APIs prior to grpc_initialize would failReturns GRPC_OK (success) or GRPC_ERROR (failure)

grpc_error_t grpc_finalize()grpc_error_t grpc_finalize()Frees resources (memory, etc.)Any calls of other GRPC APIs after grpc_finalize would failReturns GRPC_OK (success) or GRPC_ERROR (failure)

Page 3: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Function handles

grpc_error_t grpc_function_handle_default( grpc_error_t grpc_function_handle_default( grpc_functgrpc_function_handle_t *handle, ion_handle_t *handle, char *func_namchar *func_name)e)

Creates a function handle to the default server

grpc_error_t grpc_function_handle_init( grpc_error_t grpc_function_handle_init( grpc_functgrpc_function_handle_t *handle, ion_handle_t *handle, char *host_port_char *host_port_str, str, char *func_namchar *func_name)e)

Specifies the server explicitly by the second argument.

grpc_error_t grpc_function_handle_destruct(grpc_error_t grpc_function_handle_destruct(grpc_function_handle_t *handle)grpc_function_handle_t *handle)

Frees memory allocated to the function handle

Page 4: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Function handles (cont’d)

grpc_error_t grpc_function_handle_array_default_np ( grpc_error_t grpc_function_handle_array_default_np ( grpc_fugrpc_function_handle_t *handle,nction_handle_t *handle, size_t nhandles, size_t nhandles, char *func_name)char *func_name)

Creates multiple function handles via a single GRAM call

grpc_error_t grpc_function_handle_array_init_np ( grpc_error_t grpc_function_handle_array_init_np ( grpc_fugrpc_function_handle_t *handle,nction_handle_t *handle, size_t nhandles, size_t nhandles, char *host_port_str, char *host_port_str, cchar *func_name)har *func_name)

Specifies the server explicitly by the second argument.

grpc_error_t grpc_function_handle_array_destruct_np (grpc_error_t grpc_function_handle_array_destruct_np ( grpc_fugrpc_function_handle_t *handle,nction_handle_t *handle, size_t nhandles) size_t nhandles)

Specifies the server explicitly by the second argument.

Page 5: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Object handles

grpc_error_t grpc_object_handle_default_np ( grpc_error_t grpc_object_handle_default_np ( grpc_objecgrpc_object_handle_t_np *handle, t_handle_t_np *handle, char *class_namchar *class_name)e)

Creates an object handle to the default server

grpc_error_t grpc_object_handle_init_np ( grpc_error_t grpc_object_handle_init_np ( grpc_functgrpc_function_object_t_np *handle, ion_object_t_np *handle, char *host_port_char *host_port_str, str, char *class_namchar *class_name)e)

Specifies the server explicitly by the second argument.

grpc_error_t grpc_function_object_destruct_np (grpc_error_t grpc_function_object_destruct_np ( grpc_objecgrpc_object_handle_t_np *handle)t_handle_t_np *handle)

Frees memory allocated to the function handle.

Page 6: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Object handles (cont’d)

grpc_error_t grpc_object_handle_array_default ( grpc_error_t grpc_object_handle_array_default ( grpc_objct_hgrpc_objct_handle_t_np *handle,andle_t_np *handle, size_t nhandles, size_t nhandles, char *class_name)char *class_name)

Creates multiple object handles via a single GRAM call.

grpc_error_t grpc_object_handle_array_init_np ( grpc_error_t grpc_object_handle_array_init_np ( grpc_ogrpc_object_handle_t_np *handle,bject_handle_t_np *handle, size_t nhandles, size_t nhandles, char *host_port_str, char *host_port_str,

char *class_name)char *class_name)Specifies the server explicitly by the second argument.

grpc_error_t grpc_object_handle_array_destruct_np (grpc_error_t grpc_object_handle_array_destruct_np (grpc_object_handle_t_np *handle,grpc_object_handle_t_np *handle,

size_t nhandles) size_t nhandles)Frees memory allocated to the function handles.

Page 7: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Synchronous RPC v.s. Asynchronous RPC

grpc_call_async

Client ServerA ServerB

grpc_call_async

grpc_wait_all

Asynchronous RPCAsynchronous RPCSynchronous RPC Synchronous RPC Blocking CallSame semantics with a local function call.

grpc_call

Client ServerA

Non-blocking CallUseful for task-parallel applications

grpc_call_async(...);grpc_call_async(...);

grpc_wait_*(…);grpc_wait_*(…);

grpc_call_async(...);grpc_call_async(...);

grpc_wait_*(…);grpc_wait_*(…);grpc_call(...);grpc_call(...);grpc_call(...);grpc_call(...);

Page 8: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

RPC functions

grpc_error_t grpc_call (grpc_error_t grpc_call ( grpc_function_handle_t *handle, …) grpc_function_handle_t *handle, …)

Synchronous (blocking) call

grpc_error_t grpc_call_async (grpc_error_t grpc_call_async ( grpc_function_handle_t *handle, grpc_function_handle_t *handle, grpc_sessionid_t *sessionID, grpc_sessionid_t *sessionID, …) …)

Asynchronous (non-blocking) callSession ID is stored in the second argument.

Page 9: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Ninf-G method invocation

grpc_error_t grpc_invoke_np (grpc_error_t grpc_invoke_np ( grpc_object_handle_t_np *handle, grpc_object_handle_t_np *handle,           char *method_name,char *method_name,

… … ) )

Synchronous (blocking) method invocation

grpc_error_t grpc_invoke_async_np (grpc_error_t grpc_invoke_async_np ( grpc_object_handle_t_np *handle, grpc_object_handle_t_np *handle, char *method_name, char *method_name, grpc_sessionid_t *sessionID, grpc_sessionid_t *sessionID, …) …)

Asynchronous (non-blocking) method invocationsession ID is stored in the third argument.

Page 10: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Session control functions

grpc_error_t grpc_probe (grpc_error_t grpc_probe ( grpc_sessionid_t sessionID) grpc_sessionid_t sessionID)

probes the job specified by SessionID whether the job has been completed.

grpc_error_t grpc_probe_or (grpc_error_t grpc_probe_or ( grpc_sessionid_t *idArray, grpc_sessionid_t *idArray, size_t length, size_t length, grpc_sessionid_t *idPtr) grpc_sessionid_t *idPtr)

probes whether at least one of jobs in the array has been

grpc_error_t grpc_cancel (grpc_error_t grpc_cancel (grpc_sessionid_t sessionID)grpc_sessionid_t sessionID)

Cancels a session

grpc_error_t grpc_cancel_all ()grpc_error_t grpc_cancel_all ()Cancels all outstanding sessions

Page 11: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Wait functions

grpc_error_t grpc_wait (grpc_error_t grpc_wait ( grpc_sessionid_t sessionID) grpc_sessionid_t sessionID)

Waits outstanding RPC specified by sessionID

grpc_error_t grpc_wait_and (grpc_error_t grpc_wait_and ( grpc_sessionid_t *idArray, grpc_sessionid_t *idArray,

size_t length)size_t length)Waits all outstanding RPCs specified by an array of sessionIDs

Page 12: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Wait functions (cont’d)

grpc_error_t grpc_wait_or (grpc_error_t grpc_wait_or ( grpc_sessionid_t *idArray, grpc_sessionid_t *idArray, size_t length, size_t length, grpc_sessionid_t *idPtr) grpc_sessionid_t *idPtr)

Waits any one of RPCs specified by an array of sessionIDs.

grpc_error_t grpc_wait_all ()grpc_error_t grpc_wait_all ()Waits until all outstanding RPCs are completed.

grpc_error_t grpc_wait_any (grpc_error_t grpc_wait_any ( grpc_sessionid_t *idPtr) grpc_sessionid_t *idPtr)

Waits any one of outstanding RPCs.

Page 13: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

National Institute of Advanced Industrial Science and Technology

Ninf-G

Compile and runCompile and run

Page 14: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Prerequisite

Environment variablesEnvironment variablesGLOBUS_LOCATIONNG_DIR

PATHPATH${GLOBUS_LOCATION}/etc/globus-user-env.{csh,sh}${NG_DIR}/etc/ninfg-user-env.{csh,sh}

Globus-level settingsGlobus-level settingsUser certificate, CA certificate, grid-mapfiletest% grid-proxy-init% globus-job-run server.foo.org /bin/hostname

Page 15: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Compile and run

Compile the client application usingCompile the client application using ngcc ngcc comman commandd% ng_cc –o myapp app.c% ng_cc –o myapp app.c

Create a proxy certificateCreate a proxy certificate% grid-proxy-init% grid-proxy-init

Prepare a client configuration filePrepare a client configuration file

RunRun% ./myapp config.cl [args…]% ./myapp config.cl [args…]

Page 16: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Client configuration file

Specifies runtime environmentsSpecifies runtime environmentsAvailable attributes are categorized to Available attributes are categorized to sections:sections:

INCLUDE sectionCLIENT sectionLOCAL_LDIF sectionFUNCTION_INFO sectionMDS_SERVER sectionSERVER sectionSERVER_DEFAULT sectionINVOKE_SERVER section

Page 17: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Frequently used attributes

<CLIENT> </CLIENT> section<CLIENT> </CLIENT> sectionloglevelrefresh_credential

<SERVER> </SERVER> section<SERVER> </SERVER> sectionhostnameinvoke_servermpi_runNoOfCPUsjobmanagerjob_startTimeoutjob_queueheatbeat / heatbeat_timeoutCountredirect_outerr

<FUNCTION_INFO> </FUNCTION_INFO> section<FUNCTION_INFO> </FUNCTION_INFO> sectionsession_timeout

<LOCAL_LDIF> </LOCAL_LDIF> section<LOCAL_LDIF> </LOCAL_LDIF> sectionfilename

Page 18: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Ninf-G tipsHow the server can be specified?How the server can be specified?

Server is determined when the function handle is initialized.grpc_function_handle_init();

hostname is given as the second argumentgrpc_function_handle_default();

hostname is specified in the client configuration file which must be passed as the first argument of the client program.

Ninf-G does not provide broker/scheduler/meta-server.Should use LOCAL LDIF rather than MDS.Should use LOCAL LDIF rather than MDS.

easy, efficient and stableHow should I deploy Ninf-G executables?How should I deploy Ninf-G executables?

Deploy Ninf-G executables manuallyNinf-G provides automatic staging of executables

Other functionalities?Other functionalities?heatbeatingtimeoutclient callbacksattaching to debugger…

Page 19: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

National Institute of Advanced Industrial Science and Technology

Ninf-G

ExamplesExamples

Page 20: Data types Function handle – grpc_function_handle_t A structure that contains a mapping between a client and an instance of a remote function Object handle.

Examples of Ninf-G Applications

Molecular SimulationMolecular SimulationReplica Exchange Monte-Carlo :

Potential survey of a molecule

Time Dependent DFT Simulation :Calculating electron status of a molecule

QM/MD Hybrid simulationJoint demonstration by TeraGrid/AIST at SC2004

Weather forecasting SimulationWeather forecasting SimulationS-model :

Global weather prediction using ensemble simulationJoint demonstration by TeraGrid/ApGrid/PRAGMA at SC2003

Optimization ProblemOptimization ProblemTraveling salesman problem :

Searching shortest path