To Err is Human

From SC08 Student Competition

Jump to: navigation, search

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
  • 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.
Personal tools