PSB504IT
Computer Hardware
Introduction:
Computers were designed in the beginning to have only one processor, and algorithms were designed to be sequential. However, modern computers have more than one processing element (either multiple CPU cores or a GPU). The introduction of parallel architectures can improve program performance to alleviate the throughput of sequential programs that sometimes need to process instructions one by one. However, you should consider some of the following communication factors when you are designing a Parallel Program: Scope, Cost of communication, Latency, Bandwidth, Visibility, Synchronous, and Asynchronous processing.
The RAM, Monitor, Hard Drive, Graphics Card, Printer, and the various physical segments associated with the PC or that can be physically connected are the computer hardware. Without hardware, software cannot interact with the system components. Thus, hardware and software must collaborate to actualise the user need.
Although hardware factors can play a significant role in scalability, adding more machines in serial is rarely the answer and may, in some cases, cause performance to decrease. Therefore, the use of parallel support libraries and subsystems should be considered when developing software that interacts directly with computer hardware or that is processing intensive.
The main goal of Parallel programming is to decrease execution time and increase speed; however, more CPU time is required. For example, one parallel code that runs for 1 hour on three processors may use 3 hours of CPU time on one processor.
Completion of this assignment will address the following learning outcomes:
1 Evaluate a range of hardware and architectural features and make appropriate configuration selections to provide high performance taking into account cost and availability.
2 Apply an understanding of the influences and constraints which affect the capability and performance of computer systems.
4 Appraise the ways in which auxiliary devices are used and how they interface with computers and their operating systems through interrupts and direct memory access.
Task:
Design and develop a piece of software which uses I/O (Disk I/O, sound). Create the software in 2 versions: One version before parallelization and one version that shows improvement with parallelization. Compare the timings of each solution with several test runs and test cases.
You are required to deliver a software solution with a report of 2000 words (+/-10%).
You should ensure the following are included in your development (this list is not exhaustive):
Part A (Design, implement and evaluate programs):
· Select an application of your choice. The application should demonstrate intensive calculations or processing such as multiple image downloads, multiple image processing. You can select an application of your choice and parallelize it. (Examples. Image downloads, intensive sorting, calculations, image processing, matrix multiplication, Mp4 to Mp3 Conversion, Video Compression, Video & Audio files separation, etc.)
· For each version (single thread/process vs multiple threads/process), compute the timings and show the timings to run various test cases.
· You can use either of the programming languages (Python or Java or C) with which you are conversant and submit your source code.
· You are free to use any hardware (CPU, GPU or APU)
· You are free to use any Operating system (Linux, Windows, etc).
· You can use external libraries for the languages, but you will need to provide the guide to download the libraries for the applications to work.
· You are not allowed to use others work (such as sample programs and applications/programs written by other people).
Part B (Report – 2000 words):
You are required to submit a report of about 2000 words along with the code (both sequential version and parallel version). Also, you need to provide the demonstration video of your working application. In the presentation, you will need to explain your code with focus on single threading versus parallelization.
Your report should contain at least the following information:
· Summary or Introduction
· Programming language and hardware details: In this section, you should include details about programming language and hardware. This section should touch on the hardware involved, CPU involvement, threads/ processes created and how it powers your application.
· Test cases chosen
Guidance notes and considerations Late Submission
· If you are not able to complete your coursework on time due to extenuating circumstances, the ONLY way to receive an extension (up to 5 working days) or a deferral (anything longer than 5 working days) is to contact your module lecturer or Email to CU_ENG@psb- academy.edu.sg
· Extenuating circumstances are defined by CU as ‘genuine circumstances beyond your control or ability to foresee, and which seriously impair your assessed work’.
· Please note that you will need to provide third party evidence to support your reasoning for requiring an extension or deferral.
Plagiarism and Malpractice
· You are encouraged to check the originality of your work by using the draft Turnitin links on your Blackboard.
· Collusion between students (where sections of your work are similar to the work submitted by other students in this or previous module cohorts) is taken extremely seriously and will be reported to the academic conduct panel. This applies to all coursework and exam answers.
· A marked difference between your writing style, knowledge and skill level demonstrated in class discussion, any test conditions and that demonstrated in a coursework assignment may result in you having to undertake a Viva Voce in order to prove the coursework assignment is entirely your own work.
· If you make use of the services of a proof reader in your work you must keep your original version and make it available as a demonstration of your written efforts.
· You must not submit work for assessment that you have already submitted (partially or in full), either for your current course or for another qualification of this university, unless this is specifically provided for in your assignment brief or specific course or module information.
· Where earlier work by you is citable, i.e., it has already been published/submitted, you must reference it clearly. Identical pieces of work submitted concurrently will also be considered to be self-plagiarism.