A) Research the phenomena of data races. Give an illustration of how an unprotected data race can give mount to data inconsistency.How do OpenMP and Cilk resolve this problem?
B) Present your own fully documented and tested programming example illustrating the prevention of a data race in a parallelised program.
C) What is meant by the phrase ‘thread-safe’?.
D) Present your own fully documented and tested programming example illustrating the use of locks to govern access to critical sections.
E) Present your own complete documented and tested programming instance illustrating the problem of unbalanced loads. Explain the use of OpenMP’s scheduler as a means of mitigating this problem.