25
edits
Changes
→Parallelized and Dynamic Performance
==Parallelized and Dynamic Performance==
[[File:after_fft_analysis.png|1000px|center|After FFT analysis]]
[[File:after_fft_hist.png|1000px|center|After FFT analysis]]
[[File:after_dynamic_analysis.png|1000px|center|Dynamic Performance]]
[[File:after_dynamic_histo.png|1000px|center|Dynamic Histogram]]
=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 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 threads as it needed, as opposed to wasting time creating a set amount of threads that it may not use. After the dynamic for loop was added, the program jumped to a consistent efficiency and run time.