
It is generally accepted that one of the first computer viruses was written by Bob Thomas in 1971, called “ Creeper.” Written to infect the DEC PDP-10 mainframes running the TENEX operating system, it spread across ARPANET like wildfire.

We have designed it so that you can directly participate in the process. The Cybersecurity Canon is a real thing for our community. We have more than 25 books on the initial candidate list, but we are soliciting help from the cybersecurity community to increase the number to be much more than that. Please write a review and nominate your favorite.
SIMPLY FORTRAN REVIEW ZIP FILE
Combine the two into a single zip file (tar.gz or zip) and upload via Canvas under Assignments → HW1.We modeled the Cybersecurity Canon after the Baseball or Rock & Roll Hall-of-Fame, except for cybersecurity books. Submission Your submission will consist of the (i) source file (cg.cpp) with the parallelization directives and (ii) the write-up as a PDF. Evaluate the impact of the schedule clause, which can be combined with the parallel for directive, on the parallel performance. Select other codes from NAS PB and perform the same experiments 3. Run these versions, and possibly add your own, and compare the parallel performance with the rolled version. Unrolled versions of one of the loops in conj-grad is given in comments in the source file. Evaluate how loop unrolling affects the performance of parallel codes.

Send me a Slack message if you need an account on any of the other machines. You can conduct the experiments on your own Linux-based system or on one of the following CRL machines: minsky, shadowfax, knuth, minksy, or megatron. Do the performance improvements meet your expectations? Why or why not? - What is the optimal number of threads for CG on your system? Why? 5.
SIMPLY FORTRAN REVIEW CODE
Do a short write-up analyzing the results and discuss the following: - What is the maximum speedup your code is able to achieve of the baseline sequential version? Clearly indicate what you consider to be the baseline. Execute the parallel CG code with increasing number of threads and plot the performance in a chart. Once you have parallelized the code to your satisfaction, conduct a simple scalability study.
SIMPLY FORTRAN REVIEW VERIFICATION
A builtin routine in CG will print the message VERIFICATION SUCCESSFUL if the computation was correctly executed in the parallel version. You can simply check the legality by running the parallelized code. You do not need to perform any type of complex analysis for this. When inserting a new pragma, make sure the parallelization is safe. In adding the pragmas consider the following - should any variables be declared private? - is the loop performing a reduction? if so what is the appropriate reduction clause? - is the loop suitable for simd parallelization? You may find it helpful to review the parallel, parallel for and simd directives and associated clauses in the OpenMP specifications and the class notes. For the remaining 12 loops, add appropriate OpenMP pragmas to parallelize them. See if you can figure out which those are. Three of these are not parallelizable without complex synchronization barriers. conj_grad() contains a total of 15 loops, including nested loops.

Within the conj_grad() you only need to consider the loops for parallelization. You can focus your attention to parallelizing only the conj_grad() function (why?). Instructions for building and running the CG code can be found in the README file in the top-level NPB directory. You can obtain the CG code from the NPB directory in the course git repo. You will be working with a more recent C + + version of NPB. The original NPB, released by NASA in 1991, consists of Fortran implementations. Conjugate Gradient is a method for solving systems of linear equations. NPB consists of a set of numerical codes for evaluating performance of parallel systems. CS7331 Fall 2022 Due: Friday, October 14, 11:59 PM For this homework, you will add parallelization to the Conjugate Gradient (CG) code in the NAS Parallel Benchmark (NPB) suite and perform a simple scalability study.
