This diploma presents an imperative language for performing exact real number calculations Clerical and explains the implementation of parallel constructs for exact real number computation.
First we attempted to implement parallel evaluation of a special nondeterministic form of a \verb|case| statement.
This construct turned out to be very impractical and did not improve code performance in real-world scenarios, so we decided to give the programmer the ability to use parallel constructs on their own.
Specifically we implemented parallel assignment to variables and arrays, which are forms of coarse-grained parallelization and helps with evaluation of a few computationally intensive functions in parallel.
We showed their usefulness by evaluating a definite integral, which required us to calculate the value of a function in multiple points.
To calculate the integral we performed parallel computing in the form of parallel array initialization and recursion and found out, that each newly allocated processor thread has a diminishing return for reducing evaluation time, even for lower thread counts (e.\ g. 12).
We concluded that naive parallelization is not always very effective, and it is instead best to give the constructs for parallel programming directly to the programmer to speed up computationally intensive operations.
|