next up previous contents
Next: Application Program Up: Participants Previous: Participants

End User

An end user is a person wishing to execute some application but is not assumed to know or care about the architecture, topology, or any machine-specific details. Hence, the end user should only have to specify the task in terms of goals. Perhaps more importantly, the end user should not be allowed to specify anything but the goals. The primary goal of the end user is to obtain ``accurate answers'' in ``a reasonable time'' and at ``a reasonable cost''. In practice, we observe two disturbing trends away from this common goal: a naive disregard for accuracy issues and focus on extraneous machine-dependent details instead of on time and cost.

Typically, when an end user executes a numerical application, end user assumes that the output accuracy is sufficient to meet his needs. On the few occasions when he feels uncomfortable with the answer, the common response is to switch from single precision representation to double precision. In fact, most end users of applications have no idea how accurate their output really is. Even in the cases where an output error estimate is supplied by an application, the output error is calculated under the assumption that the input is exact and error-free.

We propose that the end user focus on accuracy, elapsed time, cost, and reliability (tolerance for machine/software failure rates) by passing a set of demands and concessions to the application programgif. For example, the end user can say, ``I need three digits of accuracy in my answer.'' However, the end user should not be allowed to say, ``I want you to use the `double precision' data type because on this computer I think it will be good enough. I do not trust single precision.''

Demands that an end user can specify include placing upper limits on:

Most paradigms involve demands alone. However, it is important that concessions be included too. Placing demands without concessions allows one to make wild and unrealistic requirements without consideration to their cost or feasibility. In terms of the construction analogy, an example would be asking for a mile high skyscraper in a day at no cost. Obviously, this would be impossible without conceding several points. Suppose one said that they would like the same skyscraper but would be willing to settle for a building of 80 floors in 5 years in exchange for $200,000,000. This is a contract that at least has a fighting chance. So accordingly, here are some concessions that an end user can give:

Of the demands and concessions listed above, the three most important may be specifying a maximum of wall clock time and output error while admitting the amount of input error. Yet our generation of end users is accustomed to having little control over these issues. Scientific simulations are typically done with inputs assumed to be exact, very unscientific confidence in the numerical validity of the answers, and execution times determined by trial-and-error for each system with no guarantees of repeatability.

It seems possible to create a first-stage contractgif between the end user and the application program that demands a minimum performance for execution time and answer quality, yet frees the application programmer to achieve these things by any method that works. Note that the acknowledgment of possible error in the input is a concession made by the end user that helps the application programmer. This subcontract makes up the first stage of the three-stage contract.



next up previous contents
Next: Application Program Up: Participants Previous: Participants



Dr. T. L. Marchioro II
Wed Aug 9 16:54:08 CDT 1995