The User Library

    The purpose of the user library is to provide abstraction to the user programs. The library consists of function calls that enable user parallel programs to handle all the activities involved in the execution of ARC function calls. These are listed below:

    (1) establish initial contact with the ARC kernel (with a local coordinator)
    (2) obtain locks and respective HPFs on anonymous remote machines
    (3) post ARC functions on to locked anonymous HPFs
    (4) whenever results are required, wait for the ARC functions posted earlier
    (5) tune the parameters of fault tolerance such as the number of attempts to be made
        to execute an RIB on remote nodes, timeOut interval during which retries can be
        made for failed ARC function calls if asked for.
    (6) Reuse a remote ARC executor process on anonymous node if same ARC function call
        is to be invoked again
    (7) Terminate anonymous ARC executor process if it is no more going to be reusable.
    (8) disconnect with ARC kernel

The user library hides the intricacies involved in the execution of the submitted ARC tasks. Users simply submit their tasks and it keeps track of which AFCs have been submitted to which locks. If the machine on which an AFC is executing fails, the user library finds required new lock and re-executes the failed AFC on new locks. Hence the failure of machines is unknown to the user. The ARC user library automatically manages the fault tolerance as dictated by user's preferences.

    The user library receives messages from the coordinator through message queue. It is through these messages that coordinator informs the user library about the status of posted AFCs, such as availability of result, failure of coordinators, or error conditions.

    The functions provided by the user library are divided into two components. One is the user interface component containing functions which can be invoked by the user library. The other component consists of helper functions that extend the implementation of user interface functions. RPC calls to local coordinators can be made from either of the two interfaces.