25
edits
Changes
→Conclusion
=Conclusion=
After countless hours programming this simulation, incorporating OpenMP into the finished program did not prove to be very difficult. The most challenging part of including it was identifying the bottleneck for the performance, where CPU idle time was occurring. After the Fourier Transformation Function was identified as the cause of the bottleneck, external dependencies were the loop-carried dependency was factored out and an OpenMP for loop was added. After observing that there was still a considerable amount of CPU idle time, the program was changed to include a dynamic version of the OpenMP for loop, which indicated to the program to only create dynamically load-balance threads as it needed, as opposed to wasting time creating a (statically) set amount of threads that it may not usehave much to actually compute. After the dynamic for loop scheduling was added, the program jumped to a consistent efficiency and run time.