To Err is Human
From SC08 Student Competition
Teaser Description
- One of the typical tasks facing a computational scientist is ensuring the accuracy and precision of results are within acceptable limits. Accuracy refers to how close your answers are to the actual answer; precision refers to how many digits, or bits, of a result that you can trust. Both are related to how much and how you managed to manage the error of your solution.
- This problem challenges you to solve a numerical integration problem taking accuracy and precision into consideration.
Description
- Use a cluster to code, solve and run the following integration problem: <math>\int_0^{1}({x}sin(x^2)-(1-x)sin(1-x^2))\, dx</math>
Technology
- Required tools
- Programming ability in C or Fortran
- Use of MPI (Message Passing Interface) or CUDA (Compute Unified Device Architecture) to use cluster or GPU
- Suggested tools
- Theory of numerical integration, such as calculating area under a curve
- Numerical Analysis understanding of various kinds of error and management of that error
Grading
- In a folder named "ToErrIsHuman" on your team's USB drive:
- Two programs solving the problem
- without using IEEE 754 double precision floating point representation, aka "double" or "double double" in C (depending on the compiler)
- using IEEE 754 double precision floating point representation
- wallclock time of each solution
- Numerical error analysis of each solution
- Two programs solving the problem
- What the graders will be looking for.
- Your report should include a description of the steps taken by the team in working to obtain results. State the problems encountered, the possible solutions considered and tried, and the solution that was used.
- The single and double precision representations will allow you to compare the accuracy and error of each solution.
- Discussion of algorithmic and programming tactics taken to minimize wallclock time without unduly affecting accuracy and precision of your code
- Your report should also include observations on additional steps that might be taken to improve the accuracy and/or speed of execution of your code, were you to have more time.
