I need to parallelize this program to achieve speed up and I also need to write a report on how it was done etc. The assignment brief is attached with the following code.
CAB401: High Performance and Parallel Computing Assignment Due: 19/10/2020 (with proposal due by 04/09/2020) Worth: 50% Individual Overview You are to select a real world software application and manually parallelize it. That is, take any application that is not written in an explicitly parallel fashion and transform it so that it executes as efficiently as possible on a particular parallel computer. The software application can be whatever you like but you will obviously need access to its source code. It can for example be an open source application or an application that you have developed yourself, or perhaps one from your workplace. To be amenable to parallelization it will need to be relatively computationally intensive, i.e. it will need to perform sufficient computation so that parallelizing that computation will potentially produce a noticeable difference in perceived execution time. For example, a word processing application would probably not be a good candidate as such applications are already normally adequately responsive to user interaction. Note, that some applications are more amenable to parallelization than others. It is not expected that a perfect linear speedup will be achieved for all applications – simply that your parallelization achieves as much performance improvement as is available. Hardware You can use any parallel hardware that you have access to. You can make use of parallel computers provided by QUT or any other parallel computers you personally you have access to. It can be any form of parallel computer, e.g. multi-core, cluster, SMP, shared memory, distributed memory, GPU, etc. See criteria below regarding scalable parallelism. Software Again you can use whatever software that you have access to. This includes compilers, profilers, debuggers, libraries, etc. Some such software is available through QUT. You may use whatever programming language you wish and whatever parallel frameworks and libraries that you have access to. Submission Project Proposal, due 04/09/2019: Submit online form, describing: 1. A brief description of the sequential application that you have selected to parallelize. What does it do? Where did you find it? (1 paragraph max) 2. Discuss whether you think the proposed application performs sufficient computation so that parallelizing it will potentially produce a noticeable difference in perceived execution time. (1 paragraph max). 3. What parallel hardware and parallelization language/framework are you considering? E.g. targeting NVidia GPU programmed using CUDA. (1 paragraph max). The project proposal is designed to give you constructive feedback and to ensure you are on a productive path prior to final submission. Final Submission, due 19/10/2020, a zip file including both: 1. A report of 10-15 pages (not including appendices) describing your outcomes. The report should address the following criteria: a. An explanation of the original sequential application being parallelized, what it does (black box) and how it works (a high level description of software’s design/architecture). This might include call graphs, class diagrams, etc – whatever you find useful to describe the structure of the original sequential application. b. Your analysis of potential parallelism within the application. This might include identification of existing loops or control flow constructs where parallelism might be found. Explanation of the data and control dependences that you analysed to determine which sections of code were safe to parallelize. Which of these is likely to be of sufficient granularity to be worth exploiting? Is it scalable parallelism? A discussion of changes required to expose parallelism, such as replacing algorithms or code restructuring transformations. c. How did you map computation and/or data to processors? Which parallelism abstractions or programming language constructs did you use to perform synchronization? d. Timing and profiling results, both before and after parallelization and a speedup graph. e. How did you test that the parallel version produced the exact same results as the original sequential version? f. A description of the compilers, software, tools, and techniques you used to parallelize the application. g. The story of how you overcame performance problems/barriers (e.g. load imbalance, memory contention, granularity, data dependencies, etc) to improving parallel performance. h. An explanation of the code that you added or modified to parallelize the application (including source code line count). i. Reflect on your outcome – What have you learnt? How successful was your attempt? Do you think you’ve done as well as is possible? What might you have done differently? 2. Your source code (both before and after versions) together with instructions for compiling, running, hardware requirements and realistic input data sets. Assessment Criteria Criteria Standards Unsatisfactory Satisfactory (50%) Good Excellent (100%) Analysis of original application (10 marks) Demonstrates a deep understanding of the original application, its structure and performance issues/bottlenecks. (Must include identification and discussion of data and control dependencies and detailed before and after detailed profiling results). Use of tools and techniques (10 marks) Demonstrates advanced use of a wide variety of parallel programming software, tools and technologies. Optimal Speedup (10 marks) Obtained very close to the best possible performance improvement for the application (must be more than 4 cores for excellent). (Must include a correctly constructed speed-up graph). Overcoming Barriers (10 marks) Demonstrated great skill and effort to achieve this outcome and overcome significant barriers to improved performance. (Include interesting before and after code snippets) Report (10 marks) Report is well structured, easy to read, reflective and insightful. Student id: 110295316 BUSS 5139 GOOGLE GLASS Executive Summary This project briefly discusses the project of the Google Glass initiated by Google X and later it was separated from Google and only owned by the X. A project has different dimensions that can lead it to the steps of success. Success can be achieved through various procedures. Google glass for an instance was very promising but it failed to achieve such success ultimately. At first, the product launch was not done in a proper way. Other than that, this report also discusses the initiation process and the different strategies undertaken to make the project successful. A project needs a lot of hard work to be finally executed within the market area. That is the reason why it is very important to put on a lot of focus on the whole project. In order to assess the Google glass project scenario it is very important to analyse all the different stages and the persecution associated with the project itself. The project has also given a brief overview of the different reflective phases and a well-constructed conclusion to draw a certain ending to the research that has been conducted. The project has discussed the different downsides associated with the project. Along with that, the recommendation section has also underlined the possible solutions that could have made the whole project work. The factors that have led the project to uncertainty have been focused within this research as well. This report has successfully drawn the attention of the feeders on the different stages and concepts that go within a project. Other than that, the report has also specified the different factors that contributed to the downfall of the project itself within the transitional market or the futuristic market scenario. These different things have been specified within the report for acquiring a better understanding on the development of a successful project. Table of Contents Introduction to the Project4 Project Stakeholder Analysis5 Initiation and Planning of the Project6 Implementation process of the Project7 Critical Analysis of the Project Outcome8 Reflection and Conclusion9 Recommendations9 References11 Introduction to the Project The project that will be talked about in this report is the Google glass. It can also be considered as the smart glasses. These glasses are made in the shape of the eyeglasses and it does all the activities that a Smartphone is capable of doing. Without engaging the hands, the Google glasses offered a better vision and better services associated with the Smartphone activities (Wei et al., 2018). Google X. initially launched this project. Later Google has left the ownership and in a way the ownership has only concentrated upon the company, X. Google Glass was a project that has a futuristic angle within it. In this age of modernisation, Google Glass offered a modernised version of the Smartphone without the involvement of the hands (Chang et al., 2016). This project was unique and had a special standard within it. That is the reason why this project has been taken, as it can be able to provide a lot of overview on these factors that the topic emphasise. The prototype of the glasses was first introduced to the market of the United States in the year 2013. Google itself solely occupied the manufacturer of the glasses. The glasses have a video camera option and all the different activities that were provided by the smart phones. However, the idea behind the Google glasses is good and modernised but it has acquired a lot of criticism after the initial launch (Rehman & Cao, 2016). The scientists have discovered the fact that it can be very unhealthy on the eyes of human beings as the different things and the display is really close to the eyes. The people are also not very much likely in investing in the Google glass. The profit ratio of the glasses was reducing day by day. Finally, in the year 2015 Google declared to stop the production of these glasses (Chaballout et al., 2016). These are the initial historical information associated with the project Google Glass launched by Google X in the market. Further information associated with the project is discussed below with brief details. Project Stakeholder Analysis In a project, there are different stakeholders who hold the responsibility of the products. In this case, the stakeholders associated with the project are the consumers, the Google glass team and the individual developers. All of their planning and hard work has gone in the preparation of this project. Other than that, there are various other dimensions as well. The consumers are considered as the greatest stakeholders because the profit of their new launch has relied on their hands and what they feel about the project. Other than that, the Google glass team and the independent developers also play a crucial part in the stakeholder group because all of their programming and the hard work has gone in this project (Ata et al., 2019). They had a huge portion